Lagi

Larutkan poligon GeoJSON dengan gdal/ogr

Larutkan poligon GeoJSON dengan gdal/ogr


Saya memiliki GeoJSON dengan hanya poligon di dalamnya. Saya harus membubarkan (menggabungkan) poligon dengan nilai "DN" yang sama. Saya menemukan bahwa Anda dapat melakukannya dengan shapefile seperti ini:

ogr2ogr outputfile.shp inputfile.shp -dialect sqlite -sql “SELECTsolvefield,ST_Union(geometry) as geometri FROM inputfile GROUP BYsolvefield”

tetapi karena saya tidak tahu shp atau SQL, saya tidak tahu bagaimana menerapkannya pada nilai GeoJSON dan "DN". Saya berharap seseorang dapat membantu saya di sini.

{ "type": "FeatureCollection", "features": [ { "type": "Feature", "properties": { "DN": "0" }, "geometry": { "type": "Polygon", "koordinat": [ [ [ 1425, 0 ], [ 1425, 1 ], [ 1592, 0 ], [ 1425, 0 ] ] } }, { "tipe": "Fitur", "properti": { "DN ": "1" }, "geometri": { "tipe": "Poligon", "koordinat": [ [ [ 4397, 88 ], [ 4397, 89 ], [ 4398, 88 ], [ 4397, 88 ] ] ] } }, { "type": "Feature", "properties": { "DN": "2" }, "geometry": { "type": "Poligon", "koordinat": [ [ [ 369, 93 ], [ 369, 101 ], [ 371, 93 ], [ 369, 93 ] ] ] } }, { "tipe": "Fitur", "properti": { "DN": "2" }, "geometri" : { "ketik": "Poligon", "koordinat": [ [ [ 368, 106 ], [ 368, 107 ], [ 369, 106 ], [ 368, 106 ] ] } } ] }

EDIT: Saya pikir saya memiliki ide yang salah tentang apa itu "larut". Jadi saya ingin menjelaskan apa yang saya inginkan lebih detail: Saya hanya ingin MENGGABUNG dua poligon atau lebih dengan DN-Value AND yang SAMA yang bertetangga. Sehingga Poligon yang terbelah karena ubin menyatu kembali.


Sejak OGR versi 1.10.0 dialek SQL sqlite telah dapat diterapkan ke dataset spasial apa pun. Itu bagus, karena itu berarti Anda dapat menerapkannya ke file GeoJSON Anda.

Melihat dokumentasi OGR GeoJSON Anda dapat melihat bahwa nama layer untuk file GeoJSON adalahOGRGeoJSONyang berarti bahwa SQL yang dipilih dari file GeoJSON akan diterjemahkan dari contoh di atas menjadi:

PILIH DN, ST_Union(geometri) sebagai geometri DARI OGRGeoJSON GROUP OLEH DN

Perhatikan penyatuan akan menggabungkan semua poligon di dalam terlepas dari apakah mereka bersentuhan atau tidak, jadi berikan pass-ledakan koleksiparameter keogr2ogr.

Jadi dengan asumsi file input Anda adalahmasukan.geojsondan Anda ingin membuatkeluaran.geojsonperintah lengkapnya adalah:

ogr2ogr -f GeoJSON -explodecollections output.geojson input.geojson -dialect sqlite -sql "PILIH DN sebagai DN, ST_Union(geometri) sebagai geometri FROM OGRGeoJSON GROUP BY DN"

Tonton videonya: GDAL Tutorial #1: Introduction + Installation