পরবর্তী কোডটি কিউজিআইএসের আমার পাইথন কনসোলে কাজ করে। এটি বহুভুজ সহ একটি মেমরি স্তর উত্পাদন করে যা> 90% লাল অঞ্চল দ্বারা ওভারল্যাপ করা হয়।
mapcanvas = iface.mapCanvas()
layers = mapcanvas.layers()
#for polygon_intersects
feats_lyr1 = [ feat for feat in layers[0].getFeatures() ]
#for xwRcl
feats_lyr2 = [ feat for feat in layers[1].getFeatures() ]
selected_feats = []
for i, feat1 in enumerate(feats_lyr1):
area1 = 0
area2 = 0
for j, feat2 in enumerate(feats_lyr2):
if feat1.geometry().intersects(feat2.geometry()):
area = feat1.geometry().intersection(feat2.geometry()).area()
print i, j, area, feat2.attribute('class')
if feat2.attribute('class') == 1:
area1 += area
else:
area2 += area
crit = area1/(area1 + area2)
print crit
if crit > 0.9:
selected_feats.append(feat1)
epsg = layers[0].crs().postgisSrid()
uri = "Polygon?crs=epsg:" + str(epsg) + "&field=id:integer""&index=yes"
mem_layer = QgsVectorLayer(uri,
"mem_layer",
"memory")
prov = mem_layer.dataProvider()
for i, feat in enumerate(selected_feats):
feat.setAttributes([i])
prov.addFeatures(selected_feats)
QgsMapLayerRegistry.instance().addMapLayer(mem_layer)
আমি এই দুটি ভেক্টর স্তর সহ কোডটি চেষ্টা করেছিলাম:
QGIS এর পাইথন কনসোল এ কোড চলমান, ফলাফল প্রতিপাদক জন্য পরে, ইনডেক্স মুদ্রিত হয়েছিল আমি জড়িত বৈশিষ্ট্য, ছেদ এলাকায়, এ মাঠের গুণাবলীর ঞ polygons_intersects (লাল এলাকায় জন্য 1 এবং 2 ধূসর এলাকায় জন্য) এবং ওভারল্যাপিং নির্ণায়ক ।
0 0 9454207.56892 1
0 1 17429206.7906 2
0 2 10326705.2376 2
0 4 40775341.6814 1
0 5 26342803.0964 2
0 7 11875753.3216 2
0.432253120382
1 6 1198411.02558 2
1 7 1545489.96614 2
1 10 27511427.9909 1
0.90930850584
2 7 750262.940888 2
2 8 12012343.5859 1
0.941213972294
3 6 23321277.5158 2
0.0
তৈরি করা মেমরি স্তর (সবুজ বৈশিষ্ট্য) পরবর্তী চিত্রটিতে লক্ষ্য করা যায়। এটা প্রত্যাশা মত ছিল।