2013-10-03 32 views
5

मैं यह कर सकता है:Geodjango: PointField और GEOSGeometry

>>> from django.contrib.gis.geos import GEOSGeometry 
>>> from django.contrib.gis.geos import Point 
>>> point = GEOSGeometry('POINT(1 5)') 
>>> print point 
POINT (1.0000000000000000 5.0000000000000000) 

मैं ऐसा क्यों नहीं कर सकते हैं:

>>> lat = 1 
>>> lon = 5 
>>> point = GEOSGeometry('POINT(lat lon)') 

GEOS_ERROR: ParseException: Expected number but encountered word: 'lat' 
GEOSException: Error encountered checking Geometry returned from GEOS C function "GEOSWKTReader_read_r". 

मैं एक चर का उपयोग कैसे एक GEOSGeometry वस्तु बनाने के लिए कर सकते हैं?

+1

जीएएस स्टैकएक्सचेंज पोस्ट के अनुसार एलएटी और लांग पीछे की ओर दिखाई देते हैं http://gis.stackexchange.com/questions/11626/does-y-mean-latitude-and-x-mean-longitude-in-every-gis-software –

उत्तर

8

आप कर सकते हैं निश्चित रूप से है, लेकिन एक मामूली संशोधन के साथ

point = GEOSGeometry('POINT(%s %s)' % (lat, lon)) 

या

point = GEOSGeometry('POINT(%d %d)' % (lat, lon)) 

जब आप

`'POINT(lat lon)'` 

कर आप कर रहे हैं नहीं स्थानीय चर की जगह कर lat और lon के साथ उनके उपयुक्त स्थानीय परिवर्तनीय मूल्य, और उनका मूल्यांकन सचमुच किया जा रहा है। तो, आपको प्रतिस्थापन का उपयोग करने की आवश्यकता होगी।

+0

बिल्कुल सही जवाब। बहुत बहुत धन्यवाद! –

13

स्वीकृत उत्तर गलत है। अंक "POINT (देशांतर अक्षांश)" के रूप लेते हैं। आपने उन्हें उलट दिया है।

+0

मुझे यह समझने में कुछ समय लगा। मुझे लगता है कि दस्तावेजों में इसका उल्लेख किया जाना चाहिए। –

संबंधित मुद्दे