Saya mencoba mengubah catatan MULTIPOLYGON dari PostGIS (v2.2.2) ke shapefile melalui QGIS (v2.18.9), tetapi sumber geometri dan bentuk yang dihasilkan tidak cocok seperti yang ditampilkan pada gambar di bawah ini (lapisan merah adalah sumbernya) dan lapisan hijau adalah shapefile yang dihasilkan). Saya mendapatkan hasil yang sama jika saya melakukan konversi melalui ogr2ogr dari GDAL v2.0.0. Konversi ini membutuhkan waktu sekitar 40 menit untuk selesai.
Jika saya membuang sumber geometri ke POLYGON dan melakukan konversi, bentuk yang dihasilkan benar dan konversi jauh lebih cepat (7 detik + 17 detik untuk dump). Tapi, bukannya 5 fitur, sekarang saya berakhir dengan 305188.
Catatan sumber MULTIPOLYGON dibuat oleh ST_Union pada sel yang berdekatan jika itu penting.
Apakah saya melewatkan sesuatu? Apakah ada cara untuk melakukan konversi yang benar? Adakah yang bisa menjelaskan mengapa ini terjadi?
Shapefile yang diekspor dengan lubang yang diisi ditandai dengan panah
Saya memiliki detail lebih lanjut:
pgsql2shp menghasilkan shapefile yang sama seperti QGIS atau ogr2ogr.
@dbaston - Saya memang memotong sebagian besar data dan meninggalkan bagian di sekitar area yang disajikan pada gambar di atas (sekitar ('POINT (-89,45 29,99)', 4326)). Saya mengonversi sampel kecil ini dan mendapatkan hasil yang sama. Jika Anda atau siapa pun ingin mencoba konversi pada sampel yang sama, Anda bisa mendapatkan dump di sini:
Sampel cadangan data dari PostgreSQL v9.5
Setelah 31 jam, ST_IsValid kembali benar pada semua geometri dari kumpulan data lengkap. Saya mendapat hasil yang sama untuk sampel yang lebih kecil yang tersedia di tautan di atas. Namun, Periksa validitas dalam QGIS untuk set data yang lebih kecil yang dikembalikan:
ring 1 of polygon 712 not in exterior ring
ring 2 of polygon 712 not in exterior ring
ring 3 of polygon 712 not in exterior...
Kenapa ada perbedaan dalam pemeriksaan validitas pada PostGIS dan QGIS?
Untuk memeriksa lebih lanjut, saya menghapus semua bagian poligon kecuali yang ditandai biru pada gambar di atas. Saya memeriksa format WKT-nya dan terlihat bagus. Dan sekarang konversi ke shapefile hanya dengan fitur ini sudah benar.
Apakah ini masuk akal? Saya memang memeriksa lebih banyak set data yang dibuat oleh ST_Union pada sel-sel yang berdekatan dan menemukan bahwa masalah yang sama ada di sana juga ketika mengkonversi ke shapefile. Data yang sama yang dikonversi ke GeoJSON menghasilkan hasil yang benar.
MULTIPOLYGON dibuat dari geometri POLYGON dengan ekspresi berikut:
st_multi(st_union(st_buffer(geom,0)))
ogr2ogr
dan pgsql2shp
berbeda, tetapi saya telah melihat kasus-kasus yang masing-masing tunggul. Jika Anda dapat mengurangi masalah menjadi input yang lebih kecil, ini akan berguna sebagai laporan bug.