أكثر

قم بإزالة الجزر والمضلعات المحاطة بالكامل بعد تعدد الأضلاع باستخدام QGIS

قم بإزالة الجزر والمضلعات المحاطة بالكامل بعد تعدد الأضلاع باستخدام QGIS


لدي خريطة خطية للمباني في المدينة. لقد كنت قادرًا على تعدد الأضلاع بشكل صحيح للمباني في QGIS باستخدام خوارزمية معالجة Polygonize. أصبحت جميع الثقوب / الجزر ميزات كما هو متوقع. الآن أنا بحاجة إلى تحديد وإزالة جميع الميزات المحاطة تمامًا بميزات أخرى (واحدة أو أكثر). أمثلة موضحة باللون الأحمر في الصورة:
هذه ليست جزءًا من المباني ، ولكنها ساحات داخلية.


البديل هو استخدام "المتجهات> أدوات المعالجة الجغرافية> الذوبان" (- حل الكل-- في قائمة حقول الإذابة) ، ثم حدد المضلعات الموجودة "داخل" المضلعات الذائبة باستخدام المكون الإضافي "الاستعلام المكاني".


يمكنك استخدام برنامج Python النصي هذا على سبيل المثال لتمييز أو حذف الميزات الموجودة بالكامل داخل ميزة أخرى.

layer = iface.activeLayer () # أو الطبقة التي تريد استخدامها features_a = layer.getFeatures () features_b = [الفذ للانجاز في layer.getFeatures ()] within_list = list () for feat_a in features_a: for feat_b in features_b: if feat_b.id ()! = feat_a.id (): if feat_b.geometry (). within (feat_a.geometry ()): within_list.append (feat_b.id ())

لتسليط الضوء على الميزات التي يمكنك استخدامها:

layer.setSelectedFeatures (within_list)

ولحذف الميزات المميزة ، استخدم:

caps = layer.dataProvider (). features () if caps & QgsVectorDataProvider.DeleteFeatures: res = layer.dataProvider (). deleteFeatures (within_list)

كنتيجة اختبار أحصل عليه على سبيل المثال:

ولكن قبل تنفيذ هذا البرنامج النصي ، يرجى حفظ ملف qgis لأنه إذا كنت تريد معالجة ملف كبير ، فمن المحتمل أن يؤدي هذا البرنامج النصي إلى تعطل qgis الخاص بك.


يمكنك أيضًا تكرار الطبقة ثم إجراء استعلام مكاني باستخدام "اللمسات" بينهما. يعمل مع البيانات المعدة.


شاهد الفيديو: الأكلات التي تفيد من عندهم البهاق! الجزر و البرتقال