2015-03-16 6 views
6

जीपीएस स्थानों के साथ अपने restfull एपीआई का विस्तार करने के लिए मैंने geoalchemy कोशिश करने का फैसला किया। मेरे पास पहले से ही एक डेटाबेस जा रहा है और मुझे लगता है कि यह पहले से ही मेरे डेटाबेस में अंक बचाता है। हालांकि, हर मैं (उदाहरण के उपयोगकर्ता पर लौटने के लिए के लिए) एक मुद्दा यह है कि मैं बचाया मुद्रित करने के लिए मैं इस तरह एक स्मृति पता या कुछ पाने की कोशिश:GeoAlchemy2 में समन्वय का प्रतिनिधित्व

<WKBElement at 0x7ffad5310110; '0101000000fe47a643a7f3494049f4328ae5d61140'> 

यह प्रारंभ नहीं किए गए प्रोग्रामर के लिए और न ही के लिए बहुत बेकार है एक उपयोगकर्ता।

मेरे पास एक साधारण सवाल है। मैं कैसे की तरह एक मानव पठनीय रूप में एक ज्यामिति वस्तु का प्रतिनिधित्व करते हैं: यही कारण है कि में होगा

POINT(40.5563 30.5567) 

उत्तर

12

डब्ल्यू ell- कश्मीरबी inary प्रारूप nown; आप उन्हें geoalchemy2.functions.ST_AsText का उपयोग WKT टेक्स्ट प्रारूप में बदलने के लिए कर सकते हैं।

यह डेटाबेस में ही काम करेगा, इस प्रकार आप डब्ल्यूकेबी के बजाय डब्लूकेटी में परिणामों के लिए पूछने के लिए अपनी क्वेरी पर इसे लागू करेंगे; आपके द्वारा चुने गए

Model.column.ST_AsText() 

या

ST_AsText(Model.column) 

वाली WKT- और WKB के बीच बंद डेटाबेस रूपांतरण के लिए, आप shapely मॉड्यूल का उपयोग कर सकते हैं अपने SQLAlchemy में है। ध्यान दें कि wkb कार्यों को बाइनरी की आवश्यकता नहीं है, हेक्स:

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)' 
संबंधित मुद्दे