Mengonversi KML ke shapefile tanpa kehilangan atribut menggunakan QGIS?

29

Saya memiliki file KML dengan ratusan poin. Untuk setiap titik ada informasi, seperti Nama, Kekuatan, Usia (ini adalah peta pembangkit listrik tenaga air). Jika saya mengimpor file KML ke QGIS, informasi ini hilang.

Apakah ada cara saya dapat menyimpan informasi ini?

Informasi terlihat seperti ini:

<ExtendedData>
 <SchemaData schemaUrl="#vorlage">
  <SimpleData name="Name">Test</SimpleData>
  <SimpleData name="Power">10895</SimpleData>
  <SimpleData name="Location">L</SimpleData>
 </SchemaData>
</ExtendedData>

Apakah ada yang salah dengan kode saya?

Felix
sumber
1
Bagaimana cara Anda mengimpor .kmlke QGIS? Format ini didukung sebagai salah satu format dasar, sehingga seharusnya merupakan proses yang relatif tidak menyakitkan untuk menambahkan kmlfile sebagai layer. Jika Anda memberikan lebih banyak detail, seseorang mungkin dapat membantu mencari tahu apa yang salah. Juga info tentang sumber file mungkin bermanfaat.
Dapatkan Spatial
1
apakah Anda memiliki tautan langsung ke kml?
Mapperz
Saya pikir itu mungkin dilakukan melalui FME, atau jika Anda merasakan sedikit adventurus, Anda bisa menulis skrip python yang akan mengurai kml (xml!) Dan mengekspor ke dalam shapefile. (perpustakaan untuk digunakan: perpustakaan python shapefile, semua XML dari python)
U2ros
2
RK ya saya pernah melihat yang itu. Meskipun saya memutuskan untuk mengajukan pertanyaan baru dengan deskripsi masalah yang lebih baik karena tidak ada solusi yang memuaskan untuk itu. Juga setelah mencoba lingkaran lain masalahnya adalah bahwa file KML lahan basah tidak valid KML ketika diuji dalam validator KML online dan datang dengan banyak kesalahan ...
Miro
1
U2ros Saya telah mencoba FME online tanpa hasil. Mungkin desktop FME, saya bisa mencobanya di "install round" berikutnya ... Saya pasti tidak merasa cukup berani untuk memprogram skrip yang akan mengkonversi kml ke shp :-). Tetapi dalam kasus terburuk saya bisa membayangkan menulis skrip yang akan melalui KML, cari "ExtendedData" untuk setiap fitur dan buat tabel / csv yang dapat saya gabungkan melalui "nama" untuk mengonversi KML di QGIS / ArcGIS / Mapinfo ...
Miro

Jawaban:

15

ExtendedData tidak memiliki nilai "nama" yang benar.

Sebagai contoh

<Data><displayName>System</displayName><value>Riverine</value></Data>

tidak diimpor oleh GDAL dan Qgis Master, sementara

<Data name="System"><displayName>System</displayName><value>Riverine</value></Data>

diimpor.

Anda dapat mengubahnya dengan editor teks yang baik.

------------------- Ditambahkan oleh Miro ---------------------

Untuk mengedit KML diperlukan untuk menggunakan editor teks yang memungkinkan "Ekspresi Reguler" dalam fungsi Ganti seperti PSPad (atau Notepad ++ dan banyak editor teks gratis lainnya)

Menemukan: <Data><displayName>(.*)</displayName>

Menggantikan: <Data name="$1"><displayName>$1</displayName>

Setelah ini cukup gunakan QGIS (kuncinya adalah versi "baru" - termasuk GDAL Versi 1.9.2 dan seterusnya) dan "Tambahkan layer vektor" dan layer akan dimuat dengan semua "ExtendedData".

AndreJ
sumber
Terima kasih, itu adalah informasi KUNCI. Saya mencoba menggantinya dalam satu file tes dan berfungsi dengan sempurna. Semua "ExtendedData" sekarang dalam tabel sebagai kolom. Sekali lagi, terima kasih banyak.
Miro
3
Sebenarnya, DisplayName tidak digunakan oleh Qgis. Jadi mengganti dapat dilakukan tanpa RegExp dengan mengganti <Data> <DisplayName> dengan <Data name = "dan mengganti </DisplayName> dengan">.
AndreJ
1
File KML saya juga mengandung tag <SchemaData> yang harus saya komentari untuk membukanya di QGIS. Tetapi sebaliknya triknya bekerja dengan sempurna!
Djana
8

Saya mengkonversi salah satu wetlandfiles dengan globalmapper untuk dibentuk: menyertakan dua tangkapan layar dari file dbf yang dikonversi (area dan baris): masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

semoga ini yang kamu inginkan ..

Kurt
sumber
Terima kasih, ya itulah yang saya butuhkan. Baik untuk mengetahui ada perangkat lunak yang dapat menangani KML ini yang tidak memenuhi standar KML. Karena sudah ada jawaban lain bagaimana melakukannya dengan QGIS gratis, saya tidak akan mencoba Global Mapper tetapi pasti dapat membantu orang lain. Terima kasih lagi.
Miro
Sungguh konverter yang fantastis, keren !!
SIslam
6

Anda dapat menggunakan perangkat lunak Global Mapper di mana Anda dapat dengan mudah mengekspor / mengimpor file kml / kmz + melampirkan data dan banyak format vektor dan raster..Ini salah satu perangkat lunak terbaik ..

http://www.bluemarblegeo.com/global-mapper/product/formats.php

Sunil
sumber
Terima kasih atas tipnya. Saya percaya ini dapat mengimpor / mengekspor file kml / kmz tapi saya sudah mencoba 5+ aplikasi yang dapat melakukannya. Dan tidak satupun dari mereka yang dapat membaca atribut ("ExtendedData"). Jadi bisakah Global Mapper melakukan itu?
Miro
5

Tampaknya libkml Google tidak disertakan bersama GDAL 1.9.2 di Ubuntu, khususnya gdal-bin 1.9.2-2 ~ precision4:

$ ogrinfo --formats | grep -i kml
  -> "KML" (read/write)

Untuk mendapatkan versi yang bekerja dengan libkml dan ExtendedDatadukungan, saya harus membangun GDAL dari svn trunk (r25473) setelah membangun libkml dari svn trunk (r864), mencatat secara khusus bahwa rilis 1.2.0 tampaknya tidak cukup, seperti yang didokumentasikan di situs web GDAL . Berhati-hatilah bahwa menginstal libkml0pada Ubuntu tepat (saat ini 1.2.0-1ubuntu6) tidak akan membantu. Anda benar-benar membutuhkan 1,3 atau svn trunk, yang saya tidak dapat menemukan PPA.

Saya akhirnya tidak dapat membangun libkml di Ubuntu dengan tepat; ada kesalahan ketik dalam versi boost yang disertakan bersama itu, dan ada kesalahan menjalankan libtool karena dependensi tidak sesuai. Untuk alasan apa pun, ini bukan masalah pemerasan Debian, di mana saya berhasil:

$ ogrinfo --formats | grep -i kml
  -> "LIBKML" (read/write)
  -> "KML" (read/write)

Setelah saya berhasil, menjalankan ogr2ogr -f "ESRI Shapefile" foo.shp foo.kmlmemberi saya shapefile yang bisa diimpor qgis, melestarikan ExtendedDataatribut.

HorsePunchKid
sumber
5

Driver kml Ogr2ogr yang digunakan oleh Qgis 1.8.0 Lisboa tidak mendukung tag ExtendedData kml.

Driver LIBKML tidak, itu tergabung dalam Versi GDAL 1.9.2 dan seterusnya, paket OSGEO4W, MS4W dan Qgis Master.

Data Anda tidak salah, tetapi driver LIBKML di OSGeo4W memiliki beberapa masalah dengan SchemaData. Atau, yang berikut ini berfungsi:

<ExtendedData>
 <Data name="Name"><value>Test</value></Data> 
 <Data name="Power"><value>10895</value></Data>
 <Data name="Location"><value>L</value></Data> 
</ExtendedData>

EDIT: Bug SchemaData sekarang diperbaiki dalam paket GDAL 1.9.2-2 dari OSGEO4W.

AndreJ
sumber
4

Menggunakan FME 2012 (SP4)

Muat KML Pembaca

Pilih Penulis (Shapefile)

hubungkan item dan pada tulis pilih ( menyalin atribut dari jenis fitur )

Jalankan ruang kerja

masukkan deskripsi gambar di sini

Mapperz
sumber
Terima kasih, saya telah mengunduh fme_install.msi tetapi ada kesalahan dalam pemasangan dan karena sudah ada solusi kerja yang berbeda untuk pertanyaan ini, saya tidak akan melanjutkan dengan cara ini. Pokoknya terima kasih lagi.
Miro
1

Saya tidak tahu Anda bisa mencapainya dengan QGIS. MapWindow memiliki plugin KML2Shapefile .

KML2Shapefile adalah plugin untuk MapWindow GIS yang mengubah file Google Earth KML dan KMZ menjadi shapefile untuk digunakan dalam GIS.

KML2Shapefile akan membagi setiap tipe geometri KML menjadi bentuk yang berbeda. Ini mendukung geometri yang kompleks, dan mampu menyajikan banyak KML sebagai data atribut.

MapWindow juga merupakan paket GIS gratis dan open source. Anda dapat mengunduh dan menginstalnya secara gratis. Anda bisa mengonversi KML ke shapefile menggunakan plugin KML2Shapefile di MapWindow dan cukup memuat file bentuk yang dihasilkan di QGIS. Anggap saja Anda menggunakan Windows.

Solusi terbaik yang dapat saya pikirkan untuk saat ini. Saya harap ada yang tahu tentang plugin untuk melakukannya di QGIS.

RK
sumber
1
Terima kasih atas bantuan Anda. Saya sudah mencobanya, tetapi tetap saja data itu hilang. Informasi terlihat seperti ini: <ExtendedData> <SchemaData schemaUrl = "# vorlage"> <SimpleData name = "Name"> Test </SimpleData> <SimpleData name = "Power"> 10895 </SimpleData> <SimpleData name = "Location"> L </SimpleData> </SchemaData> </ExtendedData> ada yang salah dengan kode saya?
Felix
Oh, maaf soal itu. Saya berharap itu akan berhasil.
RK
1
@ Feliks - Informasi yang Anda berikan dalam komentar Anda sangat berguna. Saya akan merekomendasikan untuk mengedit pertanyaan Anda dan menambahkannya di sana untuk konteks dan kejelasan tambahan.
Dapatkan Spasial
@AndreJoost - Sepertinya Anda mendapat jawaban yang bagus. Sebaiknya tambahkan itu sebagai jawaban aktual sehingga akan muncul di hasil pencarian orang lain dengan masalah yang sama.
Dapatkan Spasial
1

Dapatkan Global Mapper, yang harus Anda lakukan adalah membawa KMZ atau KML kemudian mengekspor Vector IMG (ESRI SHP File). Global mapper dapat membaca sebagian besar tipe file. Kemudian buka bentuk di ARC, Global mapper, Manifold, QGIS, dll, dan lihat tabel atribut. Semua info akan ada di sana. Anda juga dapat membuka file DBF dari SHP dengan Microsoft Excel pada titik ini dan kemudian menyimpannya sebagai ekstensi file XLXS jika Anda menginginkannya juga.

Ron Paul
sumber
1

Dalam QGIS 3.2.0 konversi dapat dengan mudah dilakukan menggunakan Toolbox.

Pilih di Toolbox -> GDAL -> Konversi Vektor -> Konversi Format .... (Caja de Herramientas de Procesos -> GDAL -> Conversión Vectorial -> Convertir Formato)

Pilih file KML, simpan sebagai file SHP. Saya juga harus mengubah file resulkting ("Dikonversi") di Properties -> Source (Tab) -> Source Coding dari "UTF-8" menjadi "Windows-1258" untuk melihat karakter Spanyol dengan benar.

Andres Bodini
sumber