2013-10-03 33 views
5

Bunu yapabiliyorsa:Geodjango: PointField ve GEOSGeometry

>>> 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". 

nasıl GEOSGeometry nesnesi oluşturmak için bir değişken kullanabilirsiniz:

>>> 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) 

Neden bunu yapamaz?

+1

LAST ve LONG, gis stackexchange postasına göre geriye doğru görünür http://gis.stackexchange.com/questions/11626/does-y-mean-latitude-and-x-mean-longitude-in-every-gis-software –

cevap

8

yapabilirsiniz elbette, ancak ufak bir değişiklikle

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

VEYA

`'POINT(lat lon)'` 

do

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

yerel değişkenler yerine değil olduklarını yapmak lat ve lon ile Uygun yerel değişken değerleri ve tam anlamıyla değerlendirilmektedir. Yani, ikame kullanmanız gerekir.

+0

Mükemmel cevap. Çok teşekkürler! –

13

Kabul edilen yanıt yanlış. Noktalar "POINT (boylam enlemi") şeklindedir. Onları tersine çevirdin.

+0

Bunu anlamak biraz zamanımı aldı. Sanırım bu belgelerde belirtilmelidir. –