2015-03-16 24 views
6

Sabit konumumu GPS konumlarıyla genişletmek için jeoalchemy denemeye karar verdim. Zaten bir veritabanım var ve noktaları zaten veritabanına kaydeder düşünüyorum. Ancak, her şey (örneğin kullanıcıya dönmek için) böyle bir hafıza adresi falan kurtardığım bir noktaya yazdırmaya çalışın:GeoAlchemy2'de Koordinatları Temsil Etme

<WKBElement at 0x7ffad5310110; '0101000000fe47a643a7f3494049f4328ae5d61140'> 

olmayan bu başlatılan programcı için ne için oldukça işe yaramaz Bir kullanıcı.

Basit bir sorum var. Nasıl böyle bir insan okunabilir formda bir Geometri nesnesi temsil ediyor: olacağını

POINT(40.5563 30.5567) 

cevap

12

W ell- KB inary biçimi nown; onları WKT metin biçimine dönüştürmek için geoalchemy2.functions.ST_AsText kullanabilirsiniz.

Bu, veritabanının kendisinde çalışır, böylece WKB'de WKT yerine sonuçları sormak için bunu sorgunuza uygularsınız; o Eğer

Model.column.ST_AsText() 

veya

ST_AsText(Model.column) 

WKT ve WKB arasındaki dışı veritabanı dönüşüm için, shapely modülünü kullanabilirsiniz

seçmek sizin sqlalchemy içindedir. wkb işlevlerinin, ikili kodlamaya gerek olmadığını unutmayın, onaltılık değil:

from shapely import wkb, wkt 
from binascii import unhexlify 
>>> binary = unhexlify(b'0101000000fe47a643a7f3494049f4328ae5d61140') 
>>> binary 
b'\x01\x01\x00\x00\x00\xfeG\xa6C\xa7\[email protected]\xf42\x8a\xe5\xd6\[email protected]' 
>>> point = wkb.loads(binary) 
>>> point.x, point.y 
(51.903542, 4.45986) 
>>> wkt.dumps(point) 
'POINT (51.9035420000000016 4.4598599999999999)'