मैं यहाँ उदाहरण की तरह एक स्थानिक जुड़ने का प्रयास कर रहा हूँ: क्या "स्थान द्वारा विशेषताओं में शामिल होने" का एक अजगर विकल्प है? । हालाँकि, यह दृष्टिकोण वास्तव में अक्षम / धीमा लगता है। यहां तक कि इसे एक मामूली 250 अंक के साथ चलाने में लगभग 2 मिनट लगते हैं और यह 1,000 अंकों के साथ पूरी तरह से आकार में विफल हो जाता है। क्या एक बेहतर दृष्टिकोण है? मैं आर्कगिस, क्यूजीआईएस, आदि का उपयोग किए बिना इसे पूरी तरह से पायथन में करना चाहता हूं।
मुझे यह जानने में भी रुचि होगी कि क्या यह संभव है कि सभी बिंदुओं के गुण (अर्थात जनसंख्या) एक बहुभुज के भीतर आते हैं और उस मात्रा को बहुभुज के आकार के साथ जोड़ दें।
यहां वह कोड है जिसे मैं बदलने की कोशिश कर रहा हूं। मुझे लाइन 9 पर एक त्रुटि मिलती है:
poly['properties']['score'] += point['properties']['score']
जो कहते हैं:
TypeError: असमर्थित ऑपरेंड प्रकार (ओं) के लिए + =: 'noneType' और 'float'।
यदि मैं "=" को "=" से प्रतिस्थापित करता हूं तो यह ठीक चलता है लेकिन यह खेतों को समेटता नहीं है। मैंने इन्हें पूर्णांक बनाने की भी कोशिश की है, लेकिन यह भी विफल है।
with fiona.open(poly_shp, 'r') as n:
with fiona.open(point_shp,'r') as s:
outSchema = {'geometry': 'Polygon','properties':{'region':'str','score':'float'}}
with fiona.open (out_shp, 'w', 'ESRI Shapefile', outSchema, crs) as output:
for point in s:
for poly in n:
if shape(point['geometry']).within(shape(poly['geometry'])):
poly['properties']['score']) += point['properties']['score'])
output.write({
'properties':{
'region':poly['properties']['NAME'],
'score':poly['properties']['score']},
'geometry':poly['geometry']})