Daha çox

.Shp-dən .kml-ə .shp-ə atributları itirmədən


Atributları olan bir shapefile bir müştəri üçün .kml-ə çevirdim. .Kml və atributlar daha sonra Google Earth-də düzəldildi. Yenilənmiş .kml-i aldım və indi .shp-ə qaytarmalıyam. Problem budur: bütün xüsusiyyətlərim html formatındadır, bu da Google Earth-də açılan məlumat qutusuna çevrilir. Yenidən .shp-yə çevirməyə çalışdığım zaman atributlarım (google yaradılmış) "Təsvir" sahəsinə yığılır. Və bütün xüsusiyyətlərim və məlumatlarım bir hüceyrəyə yığılır. "Təsvir" sahəsindən məlumatları çıxarmaq üçün bir yol varmı? Bunu etsəm də html formatından qurtulmağın və istifadəyə almağın asan bir yolu varmı?

Bəzi forumlarda tapdığım "Füzyon Cədvəli" metodundan istifadə etdiyim budur. Solda html-i görə bilərsiniz, göstərildiyindən də davam edir.

ArcGIS Desktop 10.2 istifadə edirəm.


Data Interoperability uzantısından istifadə edərək yaradılan bir Mekansal ETL alətinin KML / KMZ dosyanızdakı atributları şema ilə yenidən bir formaya gətirəcəyini təsdiqlədim. Sadəcə seçin Dinamik Şema alət yaratmaq sihirbazındakı seçim:


ətrafında bir iş, ehtiyac duyduğunuz müxtəlif atribut sahələrinin dəyərləri üçün təsvir sahəsini təhlil edib müvafiq sahələrə kopyalamaq olardı. Növbəti dəfə, müştərinizdən bir excel yayım vərəqinə və ya bir şeyə atributlar əlavə etməsini istəyin ki, yeniləmək üçün onu yenidən formanıza qoşa bilərsiniz.


Əvvəlcə QGIS-də kml-i açmalı və bir shapefile kimi saxlamalı idim və atributları qorudu. QGIS-də, vektor məlumatları əlavə edin və gözdən keçirin, "Keyhole Markup Language (KML)" "tipli faylları seçin, idxal etmək istədiyiniz KML-ə baxın, sonra açın. KML-dən idxal olunan obyektləri bir Shapefile saxla. ArcMap-da shapefile idxal edərkən bütün xüsusiyyətlərin saxlanıldığını görəcəksiniz.


Bu vasitə, Kevin Martin tərəfindən hazırlanan KML-ə İxracat işi edir.

Üslublarla bağlı bəzi problemlər var, ancaq ən azından rənglər və atributlar düzgündür və atributlarla, yazılarla və s. İlə oynamaq üçün çox seçim var ...


Bir tarix sətri olan sahələrdən yalnız birinə ehtiyacım vardı. ArcMap istifadə edərək, onu çıxarmaq üçün sahə kalkulyatorundan istifadə edərək bunu həll edə bildim. Yalnız bir neçə sahə çıxarmaq lazımdırsa, bu biraz yorucu olsa da sizin üçün işləyə bilər:

Aşağıdakı addımlar, HTML etiketlərinə və cədvəlinizdə saxlanılan məlumatların əsaslarına əsaslanan təsvir sahəsindən alt sətri kəsmək üçün sahə kalkulyatorunda istifadə etmək üçün bir VB xətti yaratmağa kömək edəcəkdir.

  1. GoogleEarth-də KML / KMZ-nizi açın, popupu açmaq üçün bir xüsusiyyəti vurun. Almaq istədiyiniz sahənin tam adını müəyyənləşdirin. Minaya "DATE" deyilir
  2. ArcMap-da KML / KMZ idxal edərkən yaratdığınız təbəqənin atribut cədvəlini açın.
  3. Təsvir sahəsini müəyyənləşdirin. Mənim məlumatlarımda "PopupInfo" adlanır
  4. İlk qeyddə "PopupInfo" xanasına sağ vurun və "kopyalayın" düyməsini basın.
  5. Not defterini açın və hüceyrənin tərkibini yapışdırın. İndi pop-up üçün HTML-i görəcəksiniz.
  6. KML / KMZ-dən alan adını tapmaq üçün ctrl-F istifadə edin (mənim vəziyyətimdə "DATE"). Budur, yalnız əhəmiyyət verdiyim HTML xəttini göstərən bir ekran görüntüsü.
  7. Sahə adının əvvəlindən məlumatlarınızın başlanğıcına qədər boşluqlar daxil olmaqla simvol sayını hesablayın. Mənim vəziyyətimdə 15 simvol var.
  8. Nə qədər simvol çıxarmaq istədiyinizi müəyyənləşdirin. Substring üçün 19-a ehtiyacım var. Məsələn, yalnız AZ və WY kimi dövlət kodlarına ehtiyacınız varsa, yalnız 2-yə ehtiyacınız ola bilər. Məlumatlarınızın bu sahədəki uzunluq girişləri yoxdursa, ən uzun tərəfində səhv edin. Düzəliş et: əlavə simvolları daha sonra əl ilə və ya instr () və rtrim () VB funksiyalarından istifadə edərək silə bilərsiniz. Bu mövzuda köməyə ehtiyacınız varsa mənə mesaj göndərin və ya mesaj göndərin.
  9. ArcMap-da qatınıza yeni bir MƏTN sahəsi əlavə edin və məlumatlarınız üçün ən azı qədər simvol verdiyinizdən əmin olun. Varsayılan 50-dir.

  10. Sonra yeni sahəniz üçün sahə kalkulyatorunu açın. Verilərin başlanğıcı InStr () funksiyasından və Mid () funksiyasından istifadə edərək çıxarılır. Aşağıdakı VB əmrini yazın:

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

Əlbətdə, mənim sahə adlarımı dəyişdirin (3 və 6-cı addımlardan) və 15 və 19 rəqəmlərinin uzunluğunu alt simlərinizin uzunluğuna dəyişdirin (addımlar 7 və 8-də).

Yuxarıdakı VB sətrində:

  • [PopupInfo] KML açılır penceresi üçün HTML-i ehtiva edən zəhlətökən sahənin adıdır.
  • "TARİH", çıxarmaq istədiyim məlumatları ehtiva edən KML sahə adı və HTML etiketidir.
  • 15 tarix etiketinin başlanğıcından həqiqi tarix məlumatlarının başlanğıcına qədər olan simvol sayıdır.
  • 19, tarix sətrində qorumaq istədiyimiz simvolların sayıdır.

Atributları qorumaqla KML sənədlərini .shp sənədlərinə çevirmək üçün ArcMap, Google Drive Fusion Tables və MS Excel istifadə edərək bəzi addımları atdığım bir təlimat.

Bələdçiyə sahib olan sayta keçid.


PopupInfo xml sahəsini faydalı dəyərlərə bölmək üçün imleclər və siyahılar istifadə edərək bu işi edə bildim

  1. arcpy KML-dən qat qatına və Layihə vasitələrindən istədiyiniz koordinat sisteminə daxil olmaq üçün istifadə edin (orijinal konversiya çıxışına sahələr əlavə etmək problemi ilə qarşılaşdım, bununla əlaqəli qat faylına görə ola bilər)

  2. PopupInfo simli ilk sətirdən əldə etmək üçün .da.SearchCursor istifadə edin. Sonra onu '<' əsasında bir siyahıya bölün, ilk iki dəyəri silin (Google Earth-dən etiket sahəsi) və 'td>' etiketi olmayan, lakin 'td>' bağlama etiketi olmayan qalan dəyərləri yeni bir siyahıya daxil edin. sahə adları (cüt indekslər) və sahə dəyərləri (tək indekslər)

  3. Bütün sahələri əlavə etmək üçün arcpy.AddField_management ilə sahə adları siyahısını nəzərdən keçirin (əgər varsa, keçin)

  4. PopupInfo-nu bütün satırlar üçün əldə etmək üçün .da.UpdateCursor istifadə edin, sonra bölün və axtarış kursorunda olduğu kimi yeni siyahılar yaradın.

  5. bu dəfə satırları yeniləmək üçün bütün tək indeks dəyərlərindən istifadə edin (əgər i% 2 <> 0: sıra [(i-1) / 2] = siyahı [i]) və sonra cursor.updateRow (sıra)


bugmenot123 artıq qeyd etmişdi, lakin ogr2ogr shapefiles ilə kml arasında çevirə bilər.

KML və shapefile (SHP) formatı arasında konvertasiya olunur? ikisi arasında necə çevriləcəyini əhatə edir.


YENİLƏNİB: eyni mövzuda bu mövzuya rast gəlsəniz, sizin üçün bir vasitə var! Https://mygeodata.cloud/ saytına baxın

Çox yaxşı işləyirəm. KML-lərimi yükləyə bildim və ixrac olunan shapefile öz xüsusiyyətlərimin hamısını öz sahələrində düzgün şəkildə tapdı. Yalnız mənfi cəhət məhdud sayda "pulsuz" dönüşümün olmasıdır.


Bu dönüşüm məsələsinə hələ də sadə bir həll yolu yoxdur. Son bir neçə ildə burada bir neçə dəfə soruşulub:

əlavə məlumatlarla qgis-in-qgis

masa üstü üçün arcgis-dönüşüm-kml2shp-dönüşüm zamanı xüsusiyyətlərin qorunması

atribut məlumatlarını itirmədən-kml-shapefile çevirmək

esri'nin KmltoLayer dönüşüm aracı üçün izahatı:

"Esri'deki KML alətinin" sahibi "deyə bilərəm: Hər hansı bir versiyada (9.3-10.3) ArcGIS ilə KML-dən Layer alətindən istifadə edərkən bir KML içərisindəki ExtendedData elementləri sahə atributlarına çevrilməyəcək (9.3-10.3). Windows və ya Linuxdakı ArcGIS Server. Gələcək bir buraxılış üçün düşündüyümüz bu dəstək üçün bir inkişaf tələbi var. "


Videoya baxın: Azərbaycan Respublikasının Dövlət rəmzləri (Oktyabr 2021).