आकार के साथ पोस्टगिस ज्यामिति पढ़ना


11

मैं जियोफ़ोन के साथ ipython नोटबुक में एक छोटे पैमाने पर वर्कफ़्लो कर रहा हूं और सुडौल रूप से, भू-स्थानिक डेटा का एक गुच्छा खींच रहा हूं, कभी-कभी आकार-प्रकार से, कभी-कभी पोस्टगिस से (जहां अधिक महंगी प्रसंस्करण किया जाता है)।

अब, मैं फिर पोस्टगिस तालिकाओं को अजगर में खींचता हूँ sqlalchemy, ज्यामिति को WKT में बदलकर रास्ते में लाता हूँ, कुछ पाने के लिए:

sql = """
SELECT ST_AsText(ST_Transform(the_geom,4326)) as newgeom,* 
  FROM public.parcels2010_small limit 5;
 """
parcels = pd.read_sql(sql, engine)
parcels

+----+---------------------------------------------------+---------------------------------------------------+-----------+-------------+
| id | newgeom                                           | the_geom                                          | parcel_id | osm_node_id |
+----+---------------------------------------------------+---------------------------------------------------+-----------+-------------+
| 0  | MULTIPOLYGON(((-122.991093691444 38.4878691106... | 01060000209C0E00000100000001030000000100000097... | 1805792   | 66237       |
+----+---------------------------------------------------+---------------------------------------------------+-----------+-------------+
| 1  | MULTIPOLYGON(((-122.444576448624 37.7346386006... | 01060000209C0E0000010000000103000000010000008A... | 10435     | 123826      |
+----+---------------------------------------------------+---------------------------------------------------+-----------+-------------+
| 2  | MULTIPOLYGON(((-122.796785208193 38.5427593334... | 01060000209C0E0000010000000103000000010000007D... | 1817842   | 313047      |
+----+---------------------------------------------------+---------------------------------------------------+-----------+-------------+
| 3  | MULTIPOLYGON(((-122.695538506163 38.3618570798... | 01060000209C0E0000010000000103000000010000009B... | 1934612   | 63776       |
+----+---------------------------------------------------+---------------------------------------------------+-----------+-------------+
| 4  | MULTIPOLYGON(((-122.223424422869 37.8416019090... | 01060000209C0E00000100000001030000000100000072... | 861785    | 26369       |
+----+---------------------------------------------------+---------------------------------------------------+-----------+-------------+

यह आकृतिमूलक से लोड होने पर ज्यामिति की तरह दिखता है, लेकिन इसे एक ज्यामितीय ज्यामिति के रूप में नहीं रखा गया है। मैं इसे करने के लिए विहित तरीका नहीं ढूंढ सका, या तो अकेले या शायद साथ Descartes

जवाबों:



16

PostGIS ज्यामिति के लिए डिफ़ॉल्ट प्रारूप हेक्स-एन्कोडेड WKB (वेल-ज्ञात बाइनरी) है। शेपली में इस प्रारूप को shapelyअपने wkbमॉड्यूल के साथ ज्यामिति ऑब्जेक्ट में बदलने की क्षमता है :

from shapely import wkb

# ....

sql = """SELECT * FROM public.parcels2010_small LIMIT 5;"""
parcels = pd.read_sql(sql, engine)

for parcel in parcels:
    parcel.the_geom = wkb.loads(parcel.the_geom, hex=True)

यदि आप ज्यामिति को प्रिंट करना चाहते थे तो इसे कुछ इस तरह देखना चाहिए:

print parcels[0].the_geom

<shapely.geometry.multipolygon.MultiPolygon object at ...>

यहाँ पर शालीन रूप से । Dkb मॉड्यूल देखें ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.