আমি একটি ফাংশন তৈরি করার চেষ্টা করছি যা কিউজিআইএস ফাংশনটি "দ্রবীভূত" করে মূলত একই কাজ করে। আমি ভেবেছিলাম এটি খুব সহজ হবে তবে দৃশ্যত তা ভাল নয়। সুতরাং আমি যা চারপাশে জড়ো করেছি, সেখান থেকে ফায়োনার ব্যবহার সুন্দরভাবে করা উচিত। আমি সবেমাত্র ভেক্টর ফাইলগুলির সাথে জগাখিচুড়ি শুরু করেছিলাম তাই এই পৃথিবীটি আমার কাছেও অজানা এবং অজগরটিও বেশ নতুন।
এই উদাহরণের জন্য, আমি এখানে প্রতিষ্ঠিত একটি কাউন্টি শেফফিলের সাথে কাজ করছি http://tinyurl.com/odfbanu সুতরাং আমি এখানে কিছু সংখ্যক কোড সংগ্রহ করেছি তবে তাদের একসাথে কাজ করার কোনও উপায় খুঁজে পাচ্ছি না
: এখন আমার সবচেয়ে ভালো পদ্ধতি উপর ভিত্তি করে নিম্নোক্ত https://sgillies.net/2009/01/27/a-more-perfect-union-continued.html । এটি সূক্ষ্মভাবে কাজ করে এবং আমি শেপলি জ্যামিতি হিসাবে 52 টি রাজ্যের একটি তালিকা পাই। এই অংশটি করার আরও সহজ সরল কোনও উপায় থাকলে দয়া করে বিনা দ্বিধায় মন্তব্য করুন।
from osgeo import ogr
from shapely.wkb import loads
from numpy import asarray
from shapely.ops import cascaded_union
ds = ogr.Open('counties.shp')
layer = ds.GetLayer(0)
#create a list of unique states identifier to be able
#to loop through them later
STATEFP_list = []
for i in range(0 , layer.GetFeatureCount()) :
feature = layer.GetFeature(i)
statefp = feature.GetField('STATEFP')
STATEFP_list.append(statefp)
STATEFP_list = set(STATEFP_list)
#Create a list of merged polygons = states
#to be written to file
polygons = []
#do the actual dissolving based on STATEFP
#and append polygons
for i in STATEFP_list :
county_to_merge = []
layer.SetAttributeFilter("STATEFP = '%s'" %i )
#I am not too sure why "while 1" but it works
while 1:
f = layer.GetNextFeature()
if f is None: break
g = f.geometry()
county_to_merge.append(loads(g.ExportToWkb()))
u = cascaded_union(county_to_merge)
polygons.append(u)
#And now I am totally stuck, I have no idea how to write
#this list of shapely geometry into a shapefile using the
#same properties that my source.
সুতরাং লেখাটি যা আমি দেখেছি তা থেকে সরাসরি এগিয়ে যায় না, আমি কেবল একই রকম শেফফিলিটি কেবলমাত্র দেশগুলিকে রাজ্যগুলিতে বিভক্ত করতে চাই, আমার এমনকি অ্যাট্রিবিউট টেবিলের খুব বেশি প্রয়োজনও নেই তবে আপনি কীভাবে পাশ করতে পারেন তা দেখার জন্য আমি আগ্রহী এটি উত্স থেকে নতুন তৈরি শেফফিল পর্যন্ত।
ফিয়োনার সাথে লেখার জন্য অনেকগুলি কোডের সন্ধান পেয়েছি তবে আমি কখনই এটি আমার ডেটা দিয়ে কাজ করতে সক্ষম হই না। শেপফাইলে শেপলি জ্যামিতি কীভাবে লিখবেন তা থেকে উদাহরণ ? :
from shapely.geometry import mapping, Polygon
import fiona
# Here's an example Shapely geometry
poly = Polygon([(0, 0), (0, 1), (1, 1), (0, 0)])
# Define a polygon feature geometry with one attribute
schema = {
'geometry': 'Polygon',
'properties': {'id': 'int'},
}
# Write a new Shapefile
with fiona.open('my_shp2.shp', 'w', 'ESRI Shapefile', schema) as c:
## If there are multiple geometries, put the "for" loop here
c.write({
'geometry': mapping(poly),
'properties': {'id': 123},
})
এখানে সমস্যা হ'ল জ্যামিতির তালিকার সাথে কীভাবে করা যায় এবং উত্সের চেয়ে একই বৈশিষ্ট্যগুলি কীভাবে পুনরায় তৈরি করা যায়।