पर पोस्टजीआईएस का उपयोग करके मैं पायथन 3 का उपयोग कर रहा हूं और पोस्टजीआईएस एक्सटेंशन के साथ पोस्टग्रे से कनेक्ट करने की आवश्यकता है। मैं एक psycopg2 ड्राइवर का उपयोग करने का इरादा रख रहा हूं।
यह PPyGIS मुझे मिला एकमात्र विस्तार है, लेकिन यह अजगर 2.7 नहीं 3.3.0 पर काम करता है।
कोई भी 3.3.0 पर काम कर रहे समाधान को जानता है?पायथन 3
Q
पायथन 3
10
A
उत्तर
6
आप कुछ भी ग्राहक के पक्ष (अजगर) पर ज्यामिति वस्तुओं के साथ फैंसी नहीं कर रहे हैं, तो psycopg2 सबसे बुनियादी जानकारी देशी डेटा प्रकार का उपयोग कर geometry accessors के साथ अन्य जीआईएस output formatsGeoJSON की तरह प्राप्त कर सकते हैं, या। सर्वर (PostgreSQL/PostGIS) को कड़ी मेहनत करने दें।
import psycopg2
conn = psycopg2.connect(database='postgis', user='postgres')
curs = conn.cursor()
# Find the distance within 1 km of point-of-interest
poi = (-124.3, 53.2) # longitude, latitude
# Table 'my_points' has a geography column 'geog'
curs.execute("""\
SELECT gid, ST_AsGeoJSON(geog), ST_Distance(geog, poi)
FROM my_points, (SELECT ST_MakePoint(%s, %s)::geography AS poi) AS f
WHERE ST_DWithin(geog, poi, 1000);""", poi)
for row in curs.fetchall():
print(row)
1
आप वास्तव में उपयोग कर सकते हैं Shapely या GDAL/OGR, लेकिन दोनों पुस्तकालयों निर्भरता की एक लंबी सूची है:
यहाँ आकार कि ब्याज की एक बिंदु के 1 किमी के भीतर हैं करने के लिए GeoJSON वापस जाने के लिए एक यादृच्छिक उदाहरण है ।
आप केवल बहुत कम usecases है, तो आप भी एक छोटा सा प्रोटोकॉल खुद, सुपर चालाक pygeoif पुस्तकालय के आधार पर,
from psycopg2.extensions import register_adapter, AsIs, adapt
from pygeoif.geometry import Point
def adapt_point(pt):
return AsIs("ST_SetSRID(ST_MakePoint({}, {}), 4326)".format(adapt(pt.x), adapt(pt.y)))
register_adapter(Point, adapt_point)
संबंधित मुद्दे
- 1. पायथन 3
- 2. पायथन 3
- 3. पायथन 3
- 4. पायथन 3
- 5. पायथन 3
- 6. पायथन 3
- 7. पायथन 3
- 8. पायथन 3
- 9. पायथन 3
- 10. पायथन 3
- 11. पायथन 3
- 12. पायथन 3
- 13. पायथन 3
- 14. क्या यह अभी भी पायथन 3 बनाम पायथन 3 है?
- 15. पायथन: 3 डी
- 16. पायथन 3: अमान्य सिंटेक्स
- 17. डब्लूएसजीआई और पायथन 3
- 18. सॉर्टिंग शब्दकोश पायथन 3
- 19. पायथन और एसक्लाइट 3
- 20. पायथन: डिकोड एमपी 3
- 21. पायथन 3 पोर्टिंग वर्कफ़्लो?
- 22. पायथन 3 - जेडीबीसी
- 23. पायथन 3 सुपर()
- 24. पायथन 3: जेनरेटर
- 25. लिनक्स और पायथन 3
- 26. पायथन 3: सीआईडीआर नोटेशन
- 27. पायथन 3 सिंटेक्स परिवर्तन
- 28. पायथन 2 और 3
- 29. पायथन 3.x
- 30. फीटपुट 3 के लिए पायथन 3 प्रतिस्थापन?
नीचे दिए गए उदाहरण की तरह लागू हो सकता है यह होगा बुनियादी, एक पर अंक की एक परत होने नक्शा। एक विकल्प उपाय के रूप में दूरी दो बिंदुओं के बीच। –
@MilleBii यदि आपको केवल दूरी की आवश्यकता है, तो psycopg2 आपको बस चाहिए। पीपीजीजीआईएस केवल तभी उपयोगी होता है जब आपको पोस्टग्रेएसक्यूएल/पोस्टजीआईएस के साथ सर्वर पक्ष की बजाय पाइथन के साथ क्लाइंट साइड पर वास्तविक ज्यामिति/भूगोल पर कुछ कस्टम चीजें करने की आवश्यकता होती है। –
आप विशिष्ट एडाप्टर को परिभाषित भी कर सकते हैं ताकि _psycopg2_ भू-प्रश्नों को प्रारूपित कर सकें। उदाहरण के लिए * pygeoif *: def adapt_point (pt): वापसी एएसआई ("ST_SetSRID (ST_MakePoint ({}, {}), 4326)" प्रारूप (अनुकूल (pt.x), अनुकूल (pt। वाई))); register_adapter (प्वाइंट, adapt_point) – Rmatt