أكثر

هل يمكن لـ ogr2ogr "عكس المقطع" (أو "المقطع" أو "المسح" أو "الاختلاف") ملف شكل من ملف آخر؟

هل يمكن لـ ogr2ogr


هل هناك وسيلة فيogr2ogrإلى "قص" ملف شكل من ملف آخر؟

أنا أعرفogr2ogr -clipsrc B.shp out.shp A.shpسيزيل أي جزء منA.shpهذا ليس فيب.

هل هناك أمر ogr2ogr لإزالة أي جزء من ملفاتA.shpالذي يتقاطع معب?

لقد رأيت هذا يسمى "مقطع عكسي" أو "مقطع" أو "مسح" (ArcMap) أو "اختلاف".

ملحوظة: هذا السؤال عنogr2ogr، أداة سطر الأوامر ، وليس مكتبة OGR ، التي تتطلب البرمجة.


جرب هذا،

ogr2ogr -f "ESRI Shapefile" out.shp road.shp -dialect sqlite -sql " select ST_Diffrence (road.geometry، seg_buff.geometry) from road، 'seg_buff.shp'.seg_buff seg_buff "

وضع إضافيseg_buffفي النهاية يجعل الاستعلام يعمل.

هذه الكلمة الزائدة مطلوبة لأنogr2ogrيقوم تلقائيًا فقط بإنشاء أسماء جداول SQL للملفات التي تم تمريرها إليها مباشرةً. عند تحديد ملف إضافي من داخل جملة SQL ، يجب عليك توفير اسم جدول عشوائي1 للإشارة إليه في مكان آخر في عبارة SQL. في هذه الحالة:

ملف الشكل | الجدول داخل ملف الشكل | | الاسم الذي سنستخدمه للإشارة إلى | | الجدول في مكان آخر في عبارة SQL | | | ------------ -------- -------- 'seg_buff.shp'.seg_buff seg_buff

1 ليس من الضروري أن يتطابق اسم الجدول المقدم مع اسم الملف (أو جدوله المضمن). على سبيل المثال ، يعمل ما يلي أيضًا:

ogr2ogr -f "ESRI Shapefile" out.shp road.shp -dialect sqlite -sql " حدد ST_Diffrence (road.geometry، فو. geometry) from road، 'seg_buff.shp'.seg_buff فو "

في كلا المثالين ،out.shpسيحتوي فقط على أجزاء منroad.shpالتي لم يتم احتواؤها داخلseg_buff.shp.


باستخدام GDAL> = 1.10.0 مجمعة مع SQLite و SpatiaLite:

ogr2ogr different.shp a.shp -dialect SQLite -sql "SELECT ST_Difference (a.geometry، b.geometry) as geometry from a، 'b.shp'.b"

جرب استخدام هذا الأمر:

ogr2ogr -clipsrc B.shp out.shp A.shp -clipsrclayer B