Larutkan / agregat poligon dengan ogr2ogr atau gpc?


16

Saya memiliki sejumlah besar poligon yang mewakili batas-batas negara AS yang harus saya gabungkan menjadi sesedikit mungkin poligon.

Apakah mungkin melakukan ini dengan perangkat lunak non-komersial, atau perangkat lunak dengan harga yang wajar?

PostGIS tidak tersedia, juga Java, tetapi C tidak.


OpenSourceSoftware dapat melakukan banyak hal, apa yang Anda butuhkan ... alat, pustaka dan memiliki kompiler C yang juga berfungsi di lingkungan / sistem operasi mana?
huckfinn

unduh qgis dari www.qgis.org
Antonio Locandro

@ Huckfinn: Saya menggunakan CentOS, dan alat baris perintah atau perpustakaan Perl-XS atau C akan ideal, terima kasih telah bertanya. Sumber data saya ada di ESRI Shapefiles, meskipun saya memiliki salinan poligon ke MySQL. Saya punya ogr2ogr tetapi tidak dengan dialek MySQL.
LeeGee

Saya kira gpcjudul yang dirujuk adalah GPC - perpustakaan General Polygon Clipper dari University of Manchester
matt wilkie

Jawaban:


31

Dengan ogr2ogr(GDAL> = 1.10 dengan dukungan SpatiaLite):

ogr2ogr output.shp input.shp -dialect sqlite -sql "SELECT ST_Union(geometry), dissolve_field FROM input GROUP BY dissolve_field"

1
Apakah ada build Gdal / Ogr, untuk Windows, berisi dukungan Spatialite, MS4W, OSGeo4w, gisinternals, geoinformatica?
klewis

AFAIK OSGeo4W dan paket yang dikelola oleh Tamas Szekeres ( vbkto.dyndns.org/sdk ) pasti.
Antonio Falciano

1
GDAL versi apa yang Anda gunakan ( gdalinfo --version)? Sebagai solusinya, Anda dapat mencoba membuat shapefile terlebih dahulu dan kemudian mengubahnya menjadi KML, karena driver KML memiliki beberapa keterbatasan.
Antonio Falciano

3
Saya memiliki setan waktu menentukan apa yang harus digunakan untuk "geometri", tidak mendapatkan kesalahan seperti kolom: geometri . Semua contoh serupa di sini di Stack dan dalam dokumen referensi menggunakan juga varian yang rusak seperti geo atau the_geom . Akhirnya saya menemukan ringkasan ogrinfo -so hanya beralih :,ogrinfo -so somedata.gdb my_layer_name dan filter untuk "Geometry Column ="
matt wilkie

3
juga, jika Anda hanya ingin melarutkan semua poligon di shapefile menjadi satu poligon besar yang dapat Anda lakukan: ogr2ogr output_dissolved.shp input.shp -dialect sqlite -sql "SELECT ST_Union (geometri) SEBAGAI geometri DARI input" ingat, jika Anda membangun GDAL sendiri, Anda harus menginstal sqlite dan memasukkan setidaknya sqlite dan spatialite dalam konfigurasi, yaitu flag --with-sqlite --with-spatialite = ya atau serupa.
cm1

3

Jika Anda menginginkan akses C murni yang ringan, Anda dapat menggunakan kombinasi shapelib dari Frank Warmerdam dan gpc dari Alan Murta. Saya menemukan penanganan DBF di shapelib sedikit rumit, tetapi membaca sesuatu itu OK. Untuk perl Anda dapat menemukannya di Repositori CPAN di bawah Geo :: Shapelib dan Math :: Geometry :: GPC entri . Selain itu dengan Geo :: Proj4 untuk transformasi koordinat Anda dapat memiliki akses minimalis ke operasi GIS. Aku suka itu.


Terima kasih - saya sudah mencobanya, tapi sepertinya sangat, sangat lambat: lebih dari satu jam untuk mengumpulkan 2.000 negara pada MacBookPro 4gig. Mungkin ini kode saya :)
LeeGee

Apakah Anda menggunakan jenis pengindeksan, kotak yang tumpang tindih misalnya?
huckfinn

Tidak - Saya tersandung dalam kegelapan, merasa sulit untuk menemukan referensi yang tidak menganggap saya telah melakukan ini selama bertahun-tahun, atau menjalankan PostGIS.
LeeGee

Tetapi Anda dapat menggunakan Postgresql / PostGIS juga dengan semua pengindeksan hal-hal lanjutan, hubungan ... operasi. Impor data untuk bentuk sangat mudah dengan alat shp2pg. Dan sintaks SQL tidak begitu sulit untuk dipelajari ...
huckfinn

PostGIS membutuhkan waktu beberapa detik untuk mencari tahu - sangat sederhana, terutama dengan ogr2ogr. Tapi saya lebih suka menggunakan GPC: Saya telah mengumpulkan poligon dari file, setiap kali membuat UNION, dan butuh berjam-jam untuk melakukan apa yang PostGIS lakukan dalam hitungan detik, itulah sebabnya saya mengatakan itu pasti kesalahan saya membaca dokumen. .
LeeGee
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.