Saya telah mengonversi shapefile dengan atribut ke .kml untuk klien. .Kml dan atribut kemudian diedit di google earth. Saya menerima .kml yang diperbarui dan sekarang saya harus mengembalikannya ke .shp. Masalahnya adalah: semua atribut saya sekarang dalam format html, yang membuat kotak info popup di google earth. Ketika saya mencoba mengonversi kembali ke .shp, atribut saya dikelompokkan ke dalam bidang "Deskripsi" (dibuat google). Dan SEMUA atribut dan informasi saya disatukan dalam satu sel. Apakah ada cara untuk mengekstrak data dari bidang "Deskripsi". Bahkan jika saya melakukan itu, apakah ada cara mudah untuk menyingkirkan format html dan membuatnya dapat digunakan?
Inilah yang saya dapatkan menggunakan metode "Fusion Table" yang saya temukan di beberapa forum. Anda dapat melihat html di sebelah kiri, itu berlanjut lebih jauh dari yang ditunjukkan.
Saya menggunakan ArcGIS Desktop 10.2.
sumber
Jawaban:
Saya baru saja mengonfirmasi bahwa alat ETL Spasial yang dibuat menggunakan ekstensi Interoperabilitas Data akan membawa atribut dari file KML / KMZ Anda kembali ke shapefile dengan skema sesuai kebijaksanaan. Cukup pilih opsi Skema Dinamis dalam panduan pembuatan alat:
pekerjaan di sekitar adalah mem-parsing bidang deskripsi untuk nilai-nilai berbagai bidang atribut yang Anda butuhkan dan menyalinnya ke bidang yang sesuai. Dan lain kali, mintalah klien Anda untuk menambahkan atribut ke lembar spread excel atau sesuatu sehingga Anda bisa bergabung kembali ke shapefile Anda untuk memperbarui.
sumber
Saya harus membuka kml di QGIS terlebih dahulu dan menyimpannya sebagai shapefile dan mempertahankan atributnya. Di QGIS, Tambahkan data vektor dan di bawah jelajahi, atur file jenis ke "Keyhole Markup Language (KML)" Jelajahi ke KML yang ingin Anda impor, lalu klik buka. Simpan objek yang diimpor dari KML ke Shapefile. Saat mengimpor shapefile di ArcMap, Anda akan melihat semua atribut dipertahankan.
sumber
Alat ini, Ekspor ke KML yang dikembangkan oleh Kevin Martin berfungsi.
Ada beberapa masalah dengan gaya tetapi setidaknya warna dan atribut benar, dan ada banyak opsi untuk bermain dengan atribut, label, dll ...
sumber
Saya hanya membutuhkan salah satu bidang, yang berisi string tanggal. Menggunakan arcMap, saya bisa menyelesaikan ini dengan menggunakan kalkulator lapangan untuk mengekstraknya. Jika Anda hanya perlu mengekstrak beberapa bidang, ini mungkin cocok untuk Anda, meskipun agak membosankan:
Langkah-langkah berikut akan membantu Anda membangun garis VB untuk digunakan dalam kalkulator bidang untuk memotong sub-string dari bidang deskripsi berdasarkan tag HTML dan jumlah data yang tersimpan di tabel Anda.
Di arcMap, tambahkan bidang TEKS baru layer Anda, dan pastikan untuk memberikannya setidaknya sebanyak karakter yang Anda butuhkan untuk data Anda. Standarnya adalah 50.
Lalu, buka kalkulator bidang untuk bidang baru Anda. Awal data ditemukan menggunakan fungsi InStr (), dan data diekstraksi menggunakan fungsi Mid (). Ketikkan perintah VB berikut:
Mid([PopupInfo],InStr([PopupInfo],"DATE")+15,19)
Tentu saja, ganti nama bidang saya dengan milik Anda (dari langkah 3 dan 6), dan ubah panjang angka 15 dan 19 ke panjang substring Anda (ditemukan di langkah 7 dan 8).
Pada baris VB di atas:
sumber
Berikut ini adalah panduan yang saya temukan yang menuntun Anda melalui beberapa langkah menggunakan ArcMap, Google Drive Fusion Tables, dan MS Excel untuk mengonversi file KML ke file .shp sambil menjaga atribut.
Tautan ke situs yang memiliki panduan .
sumber
Saya sudah bisa membuat pekerjaan ini menggunakan kursor dan daftar untuk membagi bidang xml PopupInfo menjadi nilai yang berguna
menggunakan arcpy KML untuk alat lapisan dan alat Proyek untuk masuk ke sistem koordinat yang diinginkan (saya mengalami masalah menambahkan bidang ke output konversi asli, yang mungkin disebabkan oleh file lapisan yang terkait dengannya)
Gunakan .da.SearchCursor untuk mendapatkan string PopupInfo dari baris pertama. Kemudian pisahkan menjadi daftar berdasarkan '<', hapus dua nilai pertama (bidang label dari Google Earth) dan masukkan nilai yang tersisa yang memiliki tag 'td>' tetapi bukan tag penutup 'td>' ke daftar baru nama bidang (bahkan indeks) dan nilai bidang (indeks ganjil)
Ulangi daftar nama bidang dengan arcpy.AddField_management untuk menambahkan semua bidang (lewati jika sudah ada)
Gunakan .da.UpdateCursor untuk mendapatkan PopupInfo untuk semua baris, lalu bagi dan buat daftar baru seperti halnya dengan kursor pencarian
kali ini, gunakan semua nilai indeks ganjil untuk memperbarui baris (jika i% 2 <> 0: baris [(i-1) / 2] = daftar [i]) dan kemudian cursor.updateRow (baris)
sumber
bugmenot123 sudah menyebutkannya, tetapi ogr2ogr dapat mengkonversi antara shapefile dan kml.
Konversi antara format KML dan shapefile (SHP)? mencakup cara mengkonversi antara keduanya.
sumber
UPDATE: jika Anda menemukan utas ini dengan masalah yang sama, ada alat di luar sana untuk Anda! Lihat https://mygeodata.cloud/
Saya bekerja dengan sangat baik. Saya dapat mengunggah KML saya dan shapefile yang diekspor memiliki semua atribut saya dengan benar di bidangnya masing-masing. Satu-satunya downside adalah bahwa ada sejumlah konversi "gratis".
sumber
Masih belum ada solusi sederhana untuk masalah konversi ini. Ini telah ditanyakan di sini beberapa kali dalam beberapa tahun terakhir:
kml-in-qgis-dengan-tambahan-data
melestarikan-atribut-selama-kml2shp-konversi-di-arcgis-untuk-desktop
convert-kml-to-shapefile-tanpa-kehilangan-atribut-data
penjelasan esri untuk alat konversi KmltoLayer mereka:
"Sebagai 'pemilik' alat KML di Esri saya dapat mengatakan: Elemen ExtendedData di dalam KML tidak akan diterjemahkan ke dalam atribut lapangan saat menggunakan alat KML ke Layer dengan ArcGIS di versi apa pun (9.3-10.3). Ini termasuk ArcMap on Windows, atau ArcGIS Server di Linux. Ada permintaan tambahan untuk mendukung ini yang sedang kami pertimbangkan untuk rilis di masa mendatang. "
sumber