From 3fa3778203796584487a6a50997f685971e6b7f7 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Thu, 11 Nov 2010 19:31:30 +0100 Subject: Script to correct wrong projection for areas --- chimere/scripts/upgrade.py | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/chimere/scripts/upgrade.py b/chimere/scripts/upgrade.py index 939bb4c..2628ec8 100755 --- a/chimere/scripts/upgrade.py +++ b/chimere/scripts/upgrade.py @@ -13,7 +13,7 @@ from django.db import connection, transaction cursor = connection.cursor() -from main.models import Area +from main.models import Area, Route # early versions before 0.1: urn field doesn't exist for area @@ -58,5 +58,32 @@ UNIQUE" print " * urn field has now the constraint NOT NULL" # early versions before 0.1: save area with wrong SRID +# only errors with default SRID is managed adapt the script for your SRID + +from osgeo import osr + +areas = Area.objects.all() +srs = osr.SpatialReference() +srs.ImportFromEPSG(4326) # WGS84 +ll = srs.CloneGeogCS() +srs.ImportFromEPSG(settings.EPSG_PROJECTION) +proj = osr.CoordinateTransformation(srs, ll) + +changed = False +for area in areas: + # only one test: assume each point as been save with the same SRID... + if area.upper_left_corner.srid == 4326 and area.upper_left_corner.x > 90 \ + or area.upper_left_corner < -90: + changed = True + pt = proj.TransformPoint(area.upper_left_corner.y, + area.upper_left_corner.x) + area.upper_left_corner.x = pt[0] + area.upper_left_corner.y = pt[1] + pt = proj.TransformPoint(area.lower_right_corner.y, + area.lower_right_corner.x) + area.lower_right_corner.x = pt[0] + area.lower_right_corner.y = pt[1] + area.save() +if changed: + print " * projections of areas corrected" -query = "SELECT AsText(ST_Transform(upper_left_corner, 4326)) from main_area;" -- cgit v1.2.3