কিছুটা দেরি হলেও অন্যদের জন্যও এটি দরকারী। হ্যাঁ, যে সঙ্গে কাজ করা যেতে পারে 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
সঠিকভাবে ইনস্টল করা হয়েছে যা কখনও কখনও সহজ হয় না কারণ তারা কিছু নির্ভরতা (যেমন জিওওএস এবং জিডিএল) নিয়ে আসে। যদি প্রথমে মাধ্যমে কাজ না pip install geopandas shapely
করে তবে গুগল বা স্ট্যাকওভারফ্লো / গিস.স্ট্যাকেক্সচেঞ্জ এ ত্রুটিটি অনুসন্ধান করুন কারণ সম্ভবত আপনার পক্ষে সেই সমস্যার সমাধান করার জন্য কোনও উত্তর উপলব্ধ থাকবে।
তারপরে, এটি আপনার ডেটাফ্রেমে একটি নতুন জ্যামিতি কলাম তৈরি করার বিষয় যা ল্যাট এবং লম্বা মানগুলিকে একটি shapely Point()
বস্তুর সাথে সংযুক্ত করে। নোট করুন যে Point()
কনস্ট্রাক্টর ভাসমান মানগুলির একটি দ্বিগুণ প্রত্যাশা করে, তাই ডেটাফ্রেমের কলামের টাইপগুলি ইতিমধ্যে সেট না করা থাকলে রূপান্তরটি অবশ্যই অন্তর্ভুক্ত করতে হবে 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)
এখন, পান্ডাস ডেটা ফ্রেমকে একটি তে রূপান্তর করুন GeoDataFrame
। জিওপ্যান্ডাস কনস্ট্রাক্টর এমন জ্যামিতি কলামটি প্রত্যাশা করে যা সুদৃ ge় জ্যামিতি অবজেক্ট নিয়ে গঠিত হতে পারে, সুতরাং আমরা যে কলামটি তৈরি করেছি তা ঠিক আছে:
import geopandas
df = geopandas.GeoDataFrame(df, geometry='geometry')
একটি shapefile এই GeoDataFrame ডাম্প করার জন্য ব্যবহার করুন geopandas ' to_file()
পদ্ধতি (অন্যান্য ড্রাইভার দ্বারা সমর্থিত Fiona, যেমন GeoJSON
এছাড়াও কাজ করা উচিত):
df.to_file('MyGeometries.shp', driver='ESRI Shapefile')
কিউজিআইএস-এর সাথে ভিজ্যুয়ালাইজ করা হলে ফলস্বরূপ শেফফাইলটি দেখতে একই রকম হয় :