diff options
| author | Étienne Loks <etienne.loks@peacefrogs.net> | 2010-11-11 19:31:30 +0100 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2010-11-11 19:31:30 +0100 | 
| commit | 3fa3778203796584487a6a50997f685971e6b7f7 (patch) | |
| tree | 3bbe74b8670bc7a5f821efc319030a5693cd4b74 /chimere/scripts/upgrade.py | |
| parent | a8e9b660968b18ce7a7d1716fb1410e14c8669f3 (diff) | |
| download | Chimère-3fa3778203796584487a6a50997f685971e6b7f7.tar.bz2 Chimère-3fa3778203796584487a6a50997f685971e6b7f7.zip  | |
Script to correct wrong projection for areas
Diffstat (limited to 'chimere/scripts/upgrade.py')
| -rwxr-xr-x | chimere/scripts/upgrade.py | 31 | 
1 files 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;"  | 
