সুদৃশ্য পোস্টগ্রিস জ্যামিতি পড়া


11

আমি জিপ্যান্ডাস এবং সুদৃ .়ভাবে আইপথন নোটবুকে একটি ছোট আকারের ওয়ার্কফ্লো করছি, কখনও কখনও জিওপ্যাসিয়াল ডেটা টানছি, কখনও কখনও শেফফিলস থেকে, কখনও কখনও পোস্টগিস থেকে (যেখানে আরও ব্যয়বহুল প্রক্রিয়াজাতকরণ করা হয়)।

এখন, আমি পোস্টগিস টেবিলগুলি অজগরটিতে টেনে টানছি sqlalchemy, জ্যামিতিটিকে ডব্লিউকেটি-তে রূপান্তর করে , এরকম কিছু পেয়েছি :

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

এটিকে শেফফাইল থেকে লোড করার সময় জ্যামিতির মতো দেখতে অনেকটা দেখতে লাগে তবে এটি একটি সুদৃ ge় জ্যামিতি হিসাবে নিক্ষেপ করা হয় না। আমি এটা করতে ক্যানোনিকাল পথ খুঁজে পাইনি পারেন সঙ্গে সম্ভবত সুষম একা ব্যবহার করে, বা Descartes

উত্তর:



16

পোস্টজিআইএস জ্যামিতির ডিফল্ট ফর্ম্যাট হেক্স-এনকোডড ডাব্লুবিবি (সুপরিচিত বাইনারি)। আকারে 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 ...>

Shapely.wkb মডিউল উপর ডক্স দেখুন এখানে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.