थोड़ी देर लेकिन शायद दूसरों के लिए भी उपयोगी है। हाँ, कि के साथ किया जा सकता है shapely
और geopandas
।
माना जाता है कि आपका पांडा डेटाफ़्रेम तरह का दिखता है:
import pandas as pd
data = [
{'some_attribute': 'abc', 'lat': '50.1234', 'lon': '10.4023'},
{'some_attribute': 'def', 'lat': '40.5678', 'lon': '8.3365'},
{'some_attribute': 'ghi', 'lat': '60.9012', 'lon': '6.2541'},
{'some_attribute': 'jkl', 'lat': '45.3456', 'lon': '12.5478'},
{'some_attribute': 'mno', 'lat': '35.7890', 'lon': '14.3957'},
]
df = pd.DataFrame(data)
print(df)
=>
lat lon some_attribute
0 50.1234 10.4023 abc
1 40.5678 8.3365 def
2 60.9012 6.2541 ghi
3 45.3456 12.5478 jkl
4 35.7890 14.3957 mno
पहले, सुनिश्चित करें कि geopandas
और shapely
ठीक से स्थापित हैं जो कभी-कभी आसान नहीं होता है क्योंकि वे कुछ निर्भरता (जैसे GEOS और GDAL) के साथ आते हैं। यदि पहली बार के माध्यम से काम नहीं करता है pip install geopandas shapely
, तो Google या StackOverflow / Gis.Stackexchange पर त्रुटि की खोज करें क्योंकि संभवतः संभवतः आपके लिए उस समस्या को हल करने वाला उत्तर उपलब्ध होगा।
फिर, यह आपके डेटाफ़्रेम में एक नया ज्यामिति स्तंभ बनाने की बात है जो एक shapely Point()
वस्तु में अव्यक्त और एकाकी मूल्यों को जोड़ता है । ध्यान दें कि Point()
कंस्ट्रक्टर को फ्लोट मानों के एक टपल की उम्मीद है, इसलिए यदि डेटाफ़्रेम के कॉलम dtypes पहले से सेट नहीं हैं, तो रूपांतरण को शामिल किया जाना चाहिए float
।
from shapely.geometry import Point
# combine lat and lon column to a shapely Point() object
df['geometry'] = df.apply(lambda x: Point((float(x.lon), float(x.lat))), axis=1)
अब, पांडा DataFrame को a में बदलें GeoDataFrame
। जियोपैन्डस कंस्ट्रक्टर को एक ज्यामिति स्तंभ की उम्मीद होती है, जिसमें आकारहीन ज्यामिति ऑब्जेक्ट शामिल हो सकते हैं, इसलिए हमने जो कॉलम बनाया है वह केवल निम्न है:
import geopandas
df = geopandas.GeoDataFrame(df, geometry='geometry')
इस GeoDataFrame को एक आकृति के रूप में डंप करने के लिए, जियोपैन्डस to_file()
विधि ( फियोना द्वारा समर्थित अन्य ड्राइवर जैसे कि GeoJSON
काम भी करना चाहिए) का उपयोग करें:
df.to_file('MyGeometries.shp', driver='ESRI Shapefile')
और वह वही है जिसके परिणामस्वरूप आकृति का आकार QGIS के साथ कल्पना करने पर दिखता है :