Öznitelikleri Kaybetmeden .shp'den .kml'ye .shp'ye


10

Istemciler için bir .kml özniteliklere sahip bir shapefile dönüştürdüm. .Kml ve öznitelikler daha sonra google earth içinde düzenlendi. Güncelleştirilmiş .kml dosyasını aldım ve şimdi .shp'ye geri almam gerekiyor. Sorun şu: Tüm özniteliklerim artık html biçiminde, bu da Google Earth'teki açılır bilgi kutusunu yapıyor. .Shp'ye dönüşmeye çalıştığımda özniteliklerim (google oluşturuldu) "Açıklama" alanına toplanıyor. Ve TÜM niteliklerim ve bilgilerim tek bir hücrede toplanıyor. "Açıklama" alanından veri ayıklamak için bir yolu var mı. Bunu yapsam bile, html formatından kurtulmanın ve kullanılabilir hale getirmenin kolay bir yolu var mı?

Bazı forumlarda bulduğum "Füzyon Tablosu" yöntemini kullanarak bu olsun. Soldaki html'yi görebilirsiniz, gösterilenden daha fazla devam eder.

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

ArcGIS Desktop 10.2 kullanıyorum.


Formatlar arasında dönüştürme yapmak için ne kullanıyorsunuz? Bunun yerine ogr2ogr veya QGIS'i deneyebilir misiniz?
bugmenot123

Yanıtlar:


3

Az önce Data Interoperability eklentisi kullanılarak oluşturulan bir Uzamsal ETL aracının KML / KMZ dosyanızdaki öznitelikleri şemaya dokunarak bir şekil dosyasına geri getireceğini doğruladım. Araç oluşturma sihirbazında Dinamik Şema seçeneğini seçmeniz yeterlidir:

Mekansal ETL adımı


bir çözüm, ihtiyaç duyduğunuz çeşitli özellik alanlarının değerleri için açıklama alanını ayrıştırmak ve bunları uygun alanlara kopyalamak olacaktır. Ve bir dahaki sefere, müşterinize bir excel forma sayfasına veya başka bir şeye öznitelikler eklemesini sağlayın, böylece güncelleme için tekrar şekil dosyanıza geri ekleyebilirsiniz.


1
Sanırım bu noktada benim tek çözümüm bu. Ama kesinlikle bir dahaki sefere excel forma levha dahil edecek!
Katie

ArcGIS için Veri Birlikte Çalışabilirlik uzantısına erişiminiz var mı? Bu konuda bununla ilgili deneyimim yok, ama orada attirbutes'unuzu yeniden eşleştirebilecek yazarlar olabilir
Adam

Güvenli Yazılımdan FME (hangi Veri Birlikte Çalışabilirliği temel alınmıştır) de ihtiyacınız olanı yapar, ancak pahalıdır.
Adam

3

Önce kml'yi QGIS'de açmak ve şekil dosyası olarak kaydetmek zorunda kaldım ve öznitelikleri korudum. QGIS'de Vektör verileri ekle ve göz at altında, tür dosyalarını "Anahtar Deliği Biçimlendirme Dili (KML)" olarak ayarlayın İçe aktarmak istediğiniz KML'ye gözatın, ardından aç'ı tıklayın. KML'den içe aktarılan nesneleri bir Shapefile dosyasına kaydedin. ArcMap'e şekil dosyasını içe aktardığınızda, korunan tüm nitelikleri görürsünüz.


2

Bu araç, Kevin Martin tarafından geliştirilen KML'ye Aktar işini yapıyor.

Stillerle ilgili bazı sorunlar var, ancak en azından renkler ve nitelikler doğru ve nitelikler, etiketler vb.İle oynamak için birçok seçenek var.


2

Yalnızca bir tarih dizesi içeren alanlardan birine ihtiyacım vardı. ArcMap kullanarak, bunu ayıklamak için alan hesap makinesini kullanarak çözmeyi başardım. Sadece birkaç alanı çıkarmanız gerekiyorsa, bu biraz sıkıcı da olsa sizin için işe yarayabilir:

Aşağıdaki adımlar, HTML etiketlerine ve tablonuzda depolanan verilerin açıklamasına göre açıklama alanından bir alt dizeyi kesmek için alan hesaplayıcısında kullanmak üzere bir VB satırı oluşturmanıza yardımcı olacaktır.

  1. GoogleEarth'te KML / KMZ'nizi açın, açılır pencereyi açmak için bir özelliği tıklayın. Yeniden elde etmek istediğiniz alanın tam adını belirleyin. Benimki "DATE"
  2. ArcMap'te, KML / KMZ'yi içe aktarırken oluşturduğunuz katmanın öznitelik tablosunu açın.
  3. Açıklama alanını tanımlayın. Verilerime "PopupInfo" deniyor
  4. İlk kayıtta, "PopupInfo" hücresini sağ tıklayın ve "kopyala" yı tıklayın
  5. Not Defteri'ni açın ve hücrenin içeriğini yapıştırın. Artık pop-up için HTML'yi göreceksiniz.
  6. KML / KMZ'den alan adını bulmak için ctrl-F tuşunu kullanın (benim durumumda "DATE"). İşte önem verdiğim HTML satırını gösteren bir ekran görüntüsü. resim açıklamasını buraya girin
  7. Alan adının başından verilerinizin başlangıcına kadar olan boşluklar da dahil olmak üzere karakter sayısını sayın. Benim durumumda 15 karakter var.
  8. Kaç karakter çıkarmak istediğinizi belirleyin. Alt dize için 19'a ihtiyacım var. Örneğin, AZ ve WY gibi durum kodlarına ihtiyacınız varsa, sadece 2'ye ihtiyacınız olabilir. Verileriniz bu alanda tutarlı uzunluk girişlerine sahip değilse, en uzun tarafındaki hata. Düzenleme: Ek karakterleri daha sonra manuel olarak veya instr () ve rtrim () VB işlevlerini kullanarak kaldırabilirsiniz. Bu konuda yardıma ihtiyacınız olursa bana mesaj gönderin veya mesaj gönderin.
  9. ArcMap'te, katmanınıza yeni bir METİN alanı ekleyin ve alanınıza verileriniz için en az ihtiyacınız olan karakteri verdiğinizden emin olun. Varsayılan 50'dir.

  10. Ardından, yeni alanınız için alan hesaplayıcısını açın. Verilerin başlangıcı InStr () işlevi kullanılarak bulunur ve veriler Mid () işlevi kullanılarak çıkarılır. Aşağıdaki VB komutunu yazın:

    Mid([PopupInfo],InStr([PopupInfo],"DATE")+15,19)

Tabii ki, alan adlarını kendiniz için değiştirin (3. ve 6. adımlardan) ve 15 ve 19 sayılarının uzunluğunu alt dizelerinizin uzunluğuna değiştirin (7. ve 8. adımlarda bulunur).

Yukarıdaki VB satırında:

  • [PopupInfo], KML pop-up HTML'sini içeren can sıkıcı alanın adıdır.
  • "DATE", ayıklamak istediğim verileri içeren KML alan adı ve HTML etiketidir.
  • 15, tarih etiketinin başlangıcından gerçek tarih verisinin başlangıcına kadar olan karakter sayısıdır.
  • 19, tarih dizesindeki tutmak istediğimiz karakter sayısıdır.

1

Aşağıda, öznitelikleri korurken KML dosyalarını .shp dosyalarına dönüştürmek için ArcMap, Google Drive Fusion Tables ve MS Excel kullanarak bazı adımlarda size yol gösteren bir kılavuz bulabilirsiniz.

Rehberin bulunduğu siteye bağlantı .


Evet, ama bu benim sorunumu çözmedi. Özniteliklerim hala html biçimindeki "Açıklama" alanına giriyor. KML - Katman aracı durumum için çalışmıyor. Diğer ark komut dosyalarını bile denedim.
Katie

Düzenlenmiş cevabımı görün.
Cameron Sloan

Yine, orijinal sorumda bağladığım görüntü, füzyon tablosu yöntemini kullandığım sonuç. Benim durumum için işe yaramıyor.
Katie

Excel'e getirdin mi?
Cameron Sloan

Evet, aynı sorun. Başka birinin aynı sorunu yaşadığı başka bir forum sitesi buldum. Ben 1000 satır script geçmesi ve kodu silmek veya bir "bul ve değiştir" denemek zorunda kalacak gibi görünüyor Yardımınızı takdir ediyorum.
Katie

1

PopupInfo xml alanını kullanışlı değerlere bölmek için imleçler ve listeler kullanarak bu işi yapabildim

  1. istenen koordinat sistemine girmek için arcpy KML'yi katman aracına ve Project araçlarına kullanın (orijinal dönüşüm çıktısına, ilişkili katman dosyasından kaynaklanabilecek alanlar ekleme konusunda sorunlarla karşılaştım)

  2. İlk satırdan PopupInfo dizesini almak için .da.SearchCursor kullanın. Ardından, '<' işaretini temel alan bir listeye bölün, ilk iki değeri (Google Earth'ten etiket alanı) silin ve 'td>' etiketi olan ancak 'td>' kapanış etiketini içermeyen kalan değerleri yeni bir listeye koyun alan adları (çift dizinler) ve alan değerleri (tek dizinler)

  3. Tüm alanları eklemek için arcpy.AddField_management ile alan adları listesinde dolaşın (zaten varsa atlayın)

  4. Tüm satırlar için PopupInfo'ları almak için .da.UpdateCursor kullanın, sonra arama imlecinde olduğu gibi yeni listeler bölün ve oluşturun

  5. bu kez, satırları güncellemek için tüm tek endeks değerlerini kullanın (eğer i% 2 <> 0: satır [(i-1) / 2] = liste [i]) ve sonra cursor.updateRow (satır)



0

GÜNCELLEME: Bu konu ile aynı sorunla karşılaşırsanız, orada sizin için bir araç var! Https://mygeodata.cloud/ sayfasına göz atın

Gerçekten iyi çalışıyorum. KML'imi yükleyebildim ve dışa aktarılan şekil dosyası tüm niteliklerimi kendi alanlarında doğru bir şekilde içeriyordu. Tek dezavantajı sınırlı sayıda "ücretsiz" dönüşüm olmasıdır.


-3

Bu dönüşüm sorununun hala basit bir çözümü yok. Son birkaç yılda burada birkaç kez istendi:

KML-in-QGIS-ile-ek-veri

koruyarak-niteliklerini-sırasında-kml2shp-dönüşüm-in-ArcGIS-için-masaüstüne

convert-kml-to-shape-olmadan-kaybetme-nitelik-data

esri'nin KmltoLayer dönüştürme aracı için açıklaması:

"Esri'deki KML aracının 'sahibi' diyebilirim: KML içindeki ExtendedData öğeleri, herhangi bir sürümde ArcGIS ile KML'den Katman aracına (9.3-10.3) sahip olduğunda alan özniteliklerine dönüştürülmez. Windows veya Linux'ta ArcGIS Server. Bunu desteklemek için gelecekteki bir sürüm için düşündüğümüz bir geliştirme isteği var. "


2
Hey - Cevabına kişisel suç işledim. Yorumlarımı kopyalayıp yapıştıracak ve tırnak işaretleri içine alacaksanız, bir uzantı satın alma konusunda kendi yorumunuzu kesinlikle YAPMAYIN.
KHibma

@sirgeo, Veri Birlikte Çalışabilirlik uzantısında bu soruna kesinlikle bir çözüm var. Görünüşe göre bu hoşunuza giden bir çözüm değil.
Adam
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.