Vektor georeferensi vektor PDF / SVG / DXF menggunakan QGIS? [duplikat]

12

Saya ingin membuat aplikasi web kecil untuk memvisualisasikan hasil pemilu berdasarkan situs polling per kota saya. Hasilnya akan sangat mirip dengan apa yang telah dilakukan untuk Berlin di sini . Semoga ini membantu dalam memahami apa yang saya inginkan.

Data mentah pemilihan pada skala yang saya butuhkan dipublikasikan dan saya tahu bagaimana memvisualisasikannya dengan alasan shapefile dengan poligon terpisah yang membariskan distrik pemilihan. Masalah saya adalah - karena Anda mungkin dapat menebak - bahwa sesuatu seperti ini belum ada.

Yang sebenarnya diterbitkan adalah file PDF yang membariskan batas-batas distrik yang saya minati: http://muenster.de/stadt/stadtplanung/pdf/a3_stimmbezirk.pdf

Saya tidak tertarik untuk menggambar ulang garis itu sendiri, jadi saya mencari cara untuk membuat shapefile dari ini. Untungnya, PDf menyertakan garis sebagai objek vektor yang terpisah, saya mengekstraknya menjadi file SVG: https://www.dropbox.com/s/bn7698yrdh5tdqj/a3_stimmbezirk_ungrouped.svg

Saya sudah mencoba mengubah SVG menjadi DXF dan mengimpornya ke qgis 2.0.1. Ini sebenarnya berfungsi, tetapi (seperti yang diharapkan) menempatkan vektor di lautan Atlantik dan saya tidak dapat menemukan cara untuk mengeditnya dan memperbaikinya.

Apa yang bisa saya lakukan sekarang untuk melakukan georeferensi vektor-vektor ini dengan alat sumber terbuka dan akhirnya menghasilkan shapefile?

bfncs
sumber
Tidak bisakah Anda mengunduh OpenStreeMap Shapefiles untuk Munster? download.geofabrik.de/europe/germany/nordrhein-westfalen/… batas administrasi sudah ada georeferensi.
Mapperz
Terima kasih telah berkomentar, Mapperz! Sepertinya saya bisa, tetapi tidak termasuk daerah pemilihan saat ini ("Stimmbezirke") ... atau apakah itu?
bfncs

Jawaban:

12

Saya menemukan pertanyaan Anda ketika mencoba melakukan hal yang sama, inilah cara saya melakukannya:

Perangkat lunak yang digunakan:

  • Inkscape
  • QGIS 2.2
  • Plugin Affine Transformation untuk QGIS

Mengekstrak data vektor dari PDF

Ini yang sudah Anda lakukan, pada dasarnya hanya buka PDF di Inkscape, temukan bentuk yang Anda inginkan dan hapus semua latar belakang dan teks di sekitarnya. Simpan sebagai file .dxf .

Georeferensi file vektor

Untuk bekerja dengan file vektor, kita perlu mengubahnya menjadi ESRI Shapefile dengan QGIS.

Buka QGIS dan tambahkan file dxf sebagai layer raster, pilih DHDN / Gauss-Kruger zone 3 (EPSG: 31467) sebagai sistem koordinat. Klik kanan layer, simpan sebagai ESRI Shapefile. Buka shapefile ini sebagai layer raster dan hapus yang lain.

Anda sekarang memiliki Münsters Wahlbezirke di suatu tempat di koordinat 0, 0.

Untuk menerjemahkan (memindahkan) dan mengubah ukuran vektor ke tempat yang tepat, kita perlu mengetahui koordinat dan ukuran target. Singkatnya, saya memiliki GeoJSON lain dari Wahlbezirke yang di-georeferensi tetapi tidak sedetail itu, jadi saya menggunakannya untuk menghitung data berikut:

  • Target x, y
  • Rasio ukuran antara vektor yang baru saja diekstraksi dan ukuran target (dengan menggunakan xMin, xMax, dan yMin, yMax (diekstraksi dari lapisan metadata di QGIS) untuk mendapatkan dimensi dalam arah xy untuk kedua lapisan, kemudian menghitung rasio dalam arah x dan y)

Dalam kasus saya ini ternyata kira-kira:

target x 3406388
target y 5745290
yratio 118,539696
xratio 118,637678

Aktifkan mode Edit (ikon Pensil) pada layer Anda dan masukkan angka-angka ini ke dalam plugin Affine Transformation (Vektor Menu, Alat Geoprosesing, Affine), pilih "Seluruh layer":

Transformasi Affine

Klik transform, nonaktifkan mode edit (dan simpan) dan Anda berakhir dengan semua lapisan kuning kira-kira di target Anda. Saya tidak pernah menemukan cara menghapus warna kuning, jadi saya menghapus dan menambahkan kembali layer untuk visibilitas yang lebih baik.

Anda mungkin berakhir dengan tampilan yang terlihat seperti ini, di mana layer raster Anda super kecil (dilingkari merah), memperbesar di sini: QGIS 2.2 Lapisan Raster Skala Kecil (Mungkin saya mengabaikan pengaturan di sini, saya tidak yakin apa yang menyebabkan perilaku ini. "Zoom ke tingkat lapisan "tidak membantu.)

Tambahkan layer yang sudah digeoreferensi, Anda bisa menggunakan layer OpenStreetMap (melalui ekstensi OpenLayers), NRW WMS atau yang serupa. Vektor Anda belum pada posisi yang tepat, jadi gerakkan dengan mengaktifkan mode Edit, lalu gunakan alat Pindah Fitur.

QGIS 2.2 Fitur Pindah

Sekarang kita telah membuat lapisan polyline, langkah terakhir adalah membuat poligon dari garis-garis ini. Saya tidak akan menjelaskannya di sini, baca di sini untuk informasi lebih lanjut:

Lihat hasilnya di sini .

chrki
sumber
Terima kasih banyak untuk jawaban terinci, saya tidak berharap mendapatkan bantuan untuk masalah ini lagi dan sementara itu menunda proyek. Saya masih belum selesai mereplikasi langkah Anda, tetapi ini sepertinya yang saya butuhkan. Saya berharap untuk akhirnya menyelesaikannya berkat bantuan Anda.
bfncs
Mengedit dengan QGIS bisa membosankan dan tidak cukup intuitif (seperti yang Anda lihat dengan perilaku zoom / bug? Dan hal-hal lain ...), hasilnya online di Github untuk Anda gunakan secara gratis (tautan di akhir posting) ). Saya belum berkeliling untuk mengubah polyline yang dihasilkan menjadi poligon, akan melakukannya beberapa waktu kemudian. Sunting: Baru saja melihat bahwa Anda memerlukan peta lain dengan 172 distrik, saya hanya mengonversi peta 33 distrik .. maaf: D
chrki
6

Berikut ini adalah alur kerja lain, menggunakan ogr2ogr dengan poin GCP:

  1. Ekstrak baris sebagai svg (seperti di atas)
  2. memuat ke inkscape dan simpan sebagai dxf
  3. Muat ke QGIS, dengan EPSG: 31467 sebagai CRS
  4. Baca beberapa koordinat dari tepi signifikan batas kota sekitarnya
  5. Buka editor OSM JOSM dan unduh relasi 62591 dari batas kota
  6. Simpan itu sebagai GPX
  7. Muat perbatasan ke sesi QGIS baru, atur CRS proyek ke EPSG: 31467
  8. Baca koordinat untuk poin yang sama seperti di atas
  9. buat file batch berikut untuk GDAL:
ogr2ogr -a_srs EPSG:31467 -gcp 66.2423 264.3829 3397709. 5756806. -gcp 227.530 17.636 3404474. 5746477. -gcp 443.61 153.42 3413517. 5752162. -gcp 456.24 421.97 3414043. 5763404. -gcp 294.56 552.56 3407296. 5768889. stimmbezirke.shp stimmbezirke.dxf

Jalankan batch dan muat shapefile yang dihasilkan ke QGIS:

masukkan deskripsi gambar di sini

AndreJ
sumber