Dari .shp ke .kml ke .shp Tanpa Kehilangan Atribut

10

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.

http://s6.postimg.org/uf7jeuksh/problems.png

Saya menggunakan ArcGIS Desktop 10.2.

Katie B.
sumber
Apa yang Anda gunakan untuk mengkonversi antara format? Bisakah Anda mencoba ogr2ogr atau QGIS saja?
bugmenot123

Jawaban:

3

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:

Langkah ETL spasial


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.

Adam
sumber
1
Saya pikir itu satu-satunya solusi saya saat ini. Tapi saya pasti akan menyertakan spread sheet excel di lain waktu!
Katie B.
Apakah Anda memiliki akses ke ekstensi Interoperabilitas Data untuk ArcGIS? Saya tidak punya pengalaman dengan itu untuk masalah ini, tetapi mungkin ada penulis di sana yang dapat memetakan kembali attirbutes Anda
Adam
FME dari Safe Software (yang menjadi dasar Interoperabilitas Data) juga akan melakukan apa yang Anda butuhkan, tetapi juga mahal.
Adam
3

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.

ketar
sumber
2

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 ...

Pedraz
sumber
2

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.

  1. Di GoogleEarth, buka KML / KMZ Anda, klik fitur untuk membuka sembulan. Identifikasi nama persis bidang yang ingin Anda retrive. Milik saya disebut "DATE"
  2. Di ArcMap, buka tabel atribut dari layer yang Anda buat saat mengimpor KML / KMZ.
  3. Identifikasi bidang deskripsi. Dalam data saya itu disebut "PopupInfo"
  4. Di catatan pertama, klik kanan di sel "PopupInfo", dan klik "salin"
  5. Buka Notepad dan rekatkan isi sel. Anda sekarang akan melihat HTML untuk pop-up.
  6. Gunakan ctrl-F untuk menemukan nama bidang dari KML / KMZ (dalam kasus saya, "DATE"). Berikut adalah tangkapan layar yang menunjukkan hanya baris HTML yang saya pedulikan. masukkan deskripsi gambar di sini
  7. Hitung jumlah karakter, termasuk spasi dari awal nama bidang hingga awal data Anda. Dalam kasus saya ada 15 karakter.
  8. Tentukan berapa banyak karakter yang ingin Anda ekstrak. Untuk substring saya, saya perlu 19. Misalnya jika Anda hanya memerlukan kode negara seperti AZ dan WY, Anda mungkin hanya perlu 2. Jika data Anda tidak memiliki entri panjang yang konsisten di bidang ini, berbuat salah di sisi yang terpanjang. Sunting: Anda dapat menghapus karakter tambahan nanti secara manual atau dengan menggunakan fungsi instr () dan rtrim () VB. Poskan atau kirim pesan kepada saya jika Anda memerlukan bantuan.
  9. Di arcMap, tambahkan bidang TEKS baru layer Anda, dan pastikan untuk memberikannya setidaknya sebanyak karakter yang Anda butuhkan untuk data Anda. Standarnya adalah 50.

  10. 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:

  • [PopupInfo] adalah nama bidang yang mengganggu yang berisi HTML untuk pop-up KML.
  • "DATE" adalah nama bidang KML dan tag HTML yang berisi data yang ingin saya ekstrak.
  • 15 adalah jumlah karakter dari awal tag tanggal hingga awal data tanggal aktual.
  • 19 adalah jumlah karakter dalam string tanggal yang ingin kita pertahankan.
JMers
sumber
1

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 .

Cameron Sloan
sumber
Ya, tapi itu tidak menyelesaikan masalah saya. Atribut saya masih dikelompokkan ke dalam bidang "Keterangan" dalam format html. Alat KML ke Layer tidak berfungsi untuk situasi saya. Saya bahkan sudah mencoba skrip lain.
Katie B.
Lihat jawaban saya yang diedit.
Cameron Sloan
Sekali lagi, gambar yang saya tautkan dalam pertanyaan asli saya adalah hasil saya ketika menggunakan metode tabel fusion. Itu tidak berfungsi untuk situasi saya.
Katie B.
Apakah Anda membawanya ke excel?
Cameron Sloan
Ya, masalah yang sama. Saya baru saja menemukan situs forum lain di mana orang lain mengalami masalah yang sama. Sepertinya saya harus melalui 1000 baris skrip dan menghapus kode atau mencoba melakukan "temukan dan ganti" Saya menghargai bantuan Anda.
Katie B.
1

Saya sudah bisa membuat pekerjaan ini menggunakan kursor dan daftar untuk membagi bidang xml PopupInfo menjadi nilai yang berguna

  1. 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)

  2. 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)

  3. Ulangi daftar nama bidang dengan arcpy.AddField_management untuk menambahkan semua bidang (lewati jika sudah ada)

  4. Gunakan .da.UpdateCursor untuk mendapatkan PopupInfo untuk semua baris, lalu bagi dan buat daftar baru seperti halnya dengan kursor pencarian

  5. 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)

Dylan Warburg
sumber
0

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".

JMers
sumber
-3

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. "

sirgeo
sumber
2
Hai - Saya merasa tersinggung dengan jawaban Anda. Jika Anda akan menyalin dan menempel komentar saya dan mengutipnya, pastikan JANGAN menambahkan komentar Anda sendiri tentang membeli ekstensi.
KHibma
@sirgeo pasti ada solusi untuk masalah ini, dalam ekstensi Interoperabilitas Data. Sepertinya ini bukan solusi yang Anda sukai.
Adam