Pertanyaan
Bagaimana cara mengonversi file SVG ke format GeoJSON?
Hasil yang diinginkan:
Saya ingin membuat peta choropleth menggunakan sesuatu seperti D3.js, atau perpustakaan lain di luar sana.
Tantangan:
Saya memiliki file SVG yang dapat saya peroleh dari domain publik di wilayah administratif untuk provinsi tertentu di negara tertentu. Saya percaya saya perlu mengonversinya ke GeoJSON sebelum dapat menggunakannya di perpustakaan yang saya ketahui.
Jawaban:
Saya baru saja menulis perpustakaan yang mengubah gambar SVG menjadi (sedikit-salah) GeoJSON.
svg2geojson
Ini mengharuskan Anda mengedit SVG Anda secara manual untuk menambahkan dua tag XML yang mengaitkan lokasi SVG dengan lat / panjang, dan itu menyediakan alat baris perintah untuk mengonversi file. Bahkan, jika Anda mau, mengambil semua grup tingkat atas (yang merupakan tujuan Illustrator mengekspor layer-nya) dan mengekspornya sebagai file terpisah.
Pemakaian
Keterbatasan
Menggunakan teknik un-proyeksi yang naif / tidak benar yang mengasumsikan bahwa daerah persegi panjang gambar sesuai dengan daerah lat / panjang persegi panjang. Misalnya, pada persegi panjang sekitar 1 mil lebar setengah mil di dekat San Francisco, tepi bawah sekitar 4 inci lebih panjang dari tepi atas. Ini cukup dekat dengan kebutuhan saya.
Saat ini tidak mendukung SVG yang menggunakan jalur dengan Bézier kuadrat atau perintah busur elips. (Saya sedang berusaha menambahkan ini.)
sumber
<p5:GeoItem Longitude="22.1471203091967" Latitude="44.2498454806746" X="0" Y="1" />
Bagaimana 4 geoordinat itu dapat diterjemahkan ke dalam kumpulan data 8 item ini?Ada alat baris perintah oleh Phrogz yang disebutkan di bawah ini yang belum saya periksa:
/gis//a/245085/35596
Bagi siapa pun yang datang ke sini, jawabannya adalah: "itu cukup sulit (setidaknya untuk seorang programmer berpengalaman tetapi kartografer yang tidak berpengalaman)." Dibutuhkan pemahaman yang lebih dangkal tentang bagaimana Sistem Referensi Spasial (SRS) bekerja. Anda kurang lebih perlu melakukan geocode .SVG Anda menggunakan sesuatu seperti QGIS. Bagaimana itu dilakukan? Masih tidak ada petunjuk. Tetapi jawabannya adalah:
"Anda tidak bisa begitu saja mengubah SVG ke GeoJSON, karena SVG tidak memiliki referensi geo mendasar."
Jika Anda ingin melanjutkan, mulailah mencari cara georeferensi file DXF.
Bagaimana cara menghitung parameter untuk transformasi Affine QGIS?
Jawaban Germán Carrillo di sana sangat berguna.
sumber
Alat baris perintah ogr2ogr harus dapat melakukan itu. Sesuatu seperti:
Kedua format tersebut didukung http://www.gdal.org/ogr_formats.html . Jika Anda tidak terbiasa dengan ogr2ogr, cara termudah untuk mengunduh dan menginstalnya mungkin melalui https://trac.osgeo.org/osgeo4w/ .
sumber
Anda tidak perlu mengonversi dari SVG ke GeoJSON untuk menggunakan gambar untuk choropleth di d3, meskipun mungkin diperlukan untuk perpustakaan lain.
Informasi jalur pada file SVG (harus ada setidaknya satu jalur untuk setiap negara bagian / negara / negara bagian / subdivisi di peta Anda) sudah cukup untuk memetakan data ke gambar SVG Anda di d3.
Biarkan saya katakan dengan cara lain: jika Anda bisa melakukan d3. Pilih pada svg asli Anda yang akan mengembalikan hanya satu jalur per negara / negara / wilayah maka Anda dapat menggunakan d3 untuk membangun choropleth. Ini biasanya terjadi ketika Anda memiliki peta di SVG. Ini sebenarnya lebih sederhana daripada menggunakan file GeoJSON karena Anda tidak perlu khawatir tentang lokasi ruang, proyeksi dll. Anda bahkan mungkin ingin mengubah SVG asli untuk menambahkan informasi yang hilang (seperti nama negara, yang dapat Anda tambahkan sebagai ID DOM atau Kelas) sebelum menggunakannya dengan D3 tapi itu biasanya tidak perlu.
Di sisi lain, seperti yang dikatakan sebelumnya, SVG hanya memiliki informasi jalur / garis, bukan informasi geografis / spasial, jadi jika Anda ingin mengonversi dari SVG ke GeoJSON maka Anda perlu ADD / MAP informasi geolokasi ke gambar SVG Anda. Misalnya, Anda dapat mengonversi dari svg ke JSON terlebih dahulu, lalu menghitung / menambahkan informasi geolokasi (ini akan tergantung pada wilayah yang Anda pemetaan) dan menghasilkan GeoJSON dari situ. Sejauh yang saya tahu tidak ada alat di luar kotak untuk melakukan pekerjaan ini untuk Anda sekalipun.
sumber
Saya akan mencoba sumber format shapefile bukan SVG untuk provinsi yang Anda cari. Karena datanya kemungkinan domain publik bagus, Anda dapat menemukannya. Coba http://www.naturalearthdata.com/ atau ajukan pertanyaan di sini. Kemudian konversikan dari Shapefile ke GeoJSON atau TopoJSON; MapShaper adalah teman Anda. Dari titik ini D3 harus dalam jangkauan (tutorial yang sangat baik Mari Membuat Peta )
sumber