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?
Jawaban:
Saya menemukan pertanyaan Anda ketika mencoba melakukan hal yang sama, inilah cara saya melakukannya:
Perangkat lunak yang digunakan:
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:
Dalam kasus saya ini ternyata kira-kira:
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":
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: (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.
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 .
sumber
Berikut ini adalah alur kerja lain, menggunakan ogr2ogr dengan poin GCP:
Jalankan batch dan muat shapefile yang dihasilkan ke QGIS:
sumber