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

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -