أكثر

لا تشكل نقاط الحلقة الخطية خطًا مغلقًا - تقاطعًا بنقطة واحدة


أحاول فهرسة بيانات geojson باستخدام elasticsearch.

هناك نوع من المضلعات التي تسبب الخطأ: "لا تشكل نقاط الحلقة الخطية سلسلة مغلقة".

يبدو أنه يحدث لأن هذه المضلعات بها تقاطع في نقطة واحدة:

هل هناك طريقة ما لفهرسة هذه المضلعات أو إصلاحها برمجيًا؟


يوجد هنا مضلع بسيط يلامس الحلقة الخاصة به عند نقطة واحدة:

WKT للمضلع هو

بوليجون ((76224 ، 84224 ، 84216 ، 78216 ، 78221 ، 79219 ، 79223 ، 78221 ، 76224))

تفيد PostGIS أن هذا المضلع غير صالح:

حدد ST_IsValid (ST_GeomFromText ('POLYGON ((76224، 84224، 84216، 78216، 78221، 79223، 78221، 76224)))) === f

الدالة ST_MakeValid تصحح المضلع عن طريق تحويل "الانقلاب" إلى ثقب يلامس الحلقة الخارجية:

حدد ST_AsText (ST_MakeValid (ST_GeomFromText ('POLYGON ((76224، 84224، 84216، 78216، 78221، 79219، 79223، 78221، 76 224)))) "POLYGON ((76224، 84 224،84 216،78 216،78 221،76 224)، (78 221،79 219،79 223،78 221)) "

إذا كنت تستخدم PostGIS ، فستكون الإجابة على سؤالك هي استخدام ST_MakeValid. يجب أن يكون تصحيح ملفات الأشكال ممكنًا باستخدام لهجة ogr2ogr و sqlite ولكن فقط إذا تم تجميع GDAL باستخدام أحدث Spatialite الذي يدعم ST_MakeValid المأخوذ من مكتبة LWGEOM https://www.gaia-gis.it/gaia-sins/spatialite-sql-latest.html . سيكون الاستخدام بعد ذلك

ogr2ogr -f "ملف شكل ESRI" مصحح.shp input.shp -dialect sqlite -sql "SELECT ST_MakeValid (الهندسة) ، السمة 1 ، السمة 2 ، ... من الإدخال"


شاهد الفيديو: قانون لوبيتال - النجار (شهر اكتوبر 2021).