django - GeoDjango Converting SRID 4326 to SRID 3857 -
i'm having difficulty converting srid 4326 coordinates geocoder srid 3857 storage within postgres-postgis database. using following code test transforming between srids:
from django.contrib.gis.gdal import spatialreference, coordtransform django.contrib.gis.geos import point gcoord = spatialreference(4326) mycoord = spatialreference(3857) trans = coordtransform(gcoord, mycoord) pnt = point(47.61, -122.33, srid=4326) print 'x: %s; y: %s; srid: %s' % (pnt.x, pnt.y, pnt.srid)
x: 47.61; y: -122.33; srid: 4326
pnt.transform(trans) print 'x: %s; y: %s; srid: %s' % (pnt.x, pnt.y, pnt.srid)
django.contrib.gis.gdal.error.gdalexception: ogr failure.
within django, more helpful error message:
transform: couldn't project point (47.61 -122.33 0): latitude or longitude exceeded limits (-14)
i've performed rudimentary testing , determined lat/long coordinate outside of 0-90 trigger condition. setting point field in django srid=4326 , migrating database still results in point being converted srid 3857.
i stumbled here. issue that, in calling point constructor, longitude needs come before latitude. (never mind latitude/longitude, in order, may engrained in our minds...) longitude 'x' , latitude 'y'. so, should have:
pnt = point(-122.33, 47.61, srid=4326)
or, better yet, use named arguments clarity:
pnt = point(x=-122.33, y=47.61, srid=4326)
Comments
Post a Comment