Saya memiliki shapefile garis tengah jalan yang memisahkan jalan di setiap persimpangan. Namun, saya ingin bergabung dengan LINESTRING yang memiliki seperangkat atribut yang sama ke dalam LINESTRING tunggal. Selama nama, batas kecepatan, dll, tidak berubah, saya ingin menggabungkan keduanya. Ini untuk penggabungan akhirnya ke OpenStreetMap.
Perangkat lunak ArcGIS untuk Desktop Esri tampaknya memungkinkan ini dengan perintah Dissolve dan opsi UNSPLIT_LINES.
Saya juga menemukan perintah Larutkan di QGIS tetapi tampaknya hanya bekerja pada poligon dan bidang tunggal.
Dengan asumsi tidak ada yang ada untuk QGIS, apakah ada yang tahu bagaimana melakukannya di PostGIS atau GRASS?
postgis
openstreetmap
grass
dissolve
Astaga
sumber
sumber
Jawaban:
Pertanyaan menarik. Saya tidak menganggap diri saya seorang guru PostGIS, tapi saya bermain-main dengan masalah Anda dan muncul dengan pertanyaan berikut yang melarutkan
LINESTRING
catatan jalan raya menjadiMULTILINESTRING
catatan ketika mereka memiliki nilai umum di beberapa bidang (dalam dataset saya, saya cocok dengan bidangname
danstate
). Saya menggunakan OGR untuk mendorong shapefile jalan raya (diubah namanya menjadi ushwys) ke PostGREsql; jadi bidang geometri saya disebutwkb_geometry
. Cobalah meretas kueri ini untuk mengakomodasi data Anda dan kondisi lapangan:Jika ini berhasil, Anda bisa menggunakan ogr2ogr untuk melakukan kueri ini dan mengekspor hasil paling banyak format vektor yang Anda inginkan, seperti shapefile, GML, CSV atau yang lainnya. Untuk info tentang memanggil pertanyaan SQL dari ogr2ogr, lihat dokumentasi OGR SQL .
Sebagai referensi, saya meninjau instruksi PostGIS ST_Collect , serta situs ini yang menunjukkan pengelompokan pada beberapa bidang.
Jika Anda menemukan redaksi dari kueri ini tidak berfungsi untuk Anda, beri tahu saya dan saya akan menjawab jawaban saya sehingga tidak ada dan membingungkan orang.
PS Jika Anda tidak terbiasa menggunakan ogr2ogr untuk mendorong geodata ke PostGIS, saya menggunakan skrip ogr2ogr berikut untuk melakukan impor data saya ( hati-hati menyalin dari web dan menempel langsung ke jendela perintah ogr2ogr Anda, karena saya telah menemukan pemformatan halaman memperkenalkan linebreak dan penggantian font / karakter untuk tanda kutip ganda yang melanggar skrip ogr ):
[Memperbarui]
Saya ingin melihat bagaimana "penampilan" ini di QGIS setelah menjalankan kueri itu, jadi saya mengubah kueri untuk menerapkan
WHERE
klausa ini (yang memberi saya semua varian US Highway 65 di negara bagian Missouri):Selanjutnya saya menggunakan QGIS dan plugin QuickWKT untuk memvisualisasikan semua delapan (8)
MULTILINESTRING
catatan jalan tol yang saya hasilkan . Seperti yang dapat Anda lihat di tangkapan layar, hasil akhir memang mengambil Hwy 65 dari perbatasan utara Missoui dengan Iowa sampai ke perbatasan selatannya dengan Arkansas:Bagi saya, visualisasi ini menunjukkan bahwa permintaan saya tidak menghasilkan duplikasi atau penghapusan fitur yang tidak terduga. Jadi selanjutnya saya bertanya-tanya, "ok, yang dibubarkan mengembalikan delapan fitur, tetapi berapa banyak fitur dalam tabel asli sebenarnya mewakili Hwy 65 di Missouri?" Permintaan saya berikutnya menjawab pertanyaan itu. Tampaknya dataset asli menggunakan tiga puluh delapan (38) fitur untuk mewakili Hwy 65 di Missouri:
Pada analisis akhir, kueri mengurangi tiga puluh delapan (38) fitur menjadi delapan (8) fitur yang berbagi nilai dalam bidang nama dan negara. Pada titik ini, saya relatif yakin bahwa kueri ini berguna dan sesuai untuk melarutkan geometri bagian tunggal ke dalam geometri multi-bagian ketika tugas yang dibubarkan perlu mempertimbangkan beberapa bidang.
Bersulang. :)
sumber
Di PostGIS, ada fungsi khusus untuk menggabungkan garis
http://www.postgis.org/docs/ST_LineMerge.html
sumber
Dalam GRASS GIS, lihat v.build.polylines
sumber