Od .shp do .kml do .shp bez utraty atrybutów


10

Przekształciłem plik kształtu z atrybutami w .kml dla klienta. Pliki .kml i atrybuty zostały następnie edytowane w Google Earth. Otrzymałem zaktualizowany plik .kml i teraz muszę go przywrócić do .shp. Problem w tym, że wszystkie moje atrybuty są teraz w formacie HTML, co powoduje, że wyskakujące okienko informacyjne w Google Earth. Gdy próbuję przekonwertować z powrotem na .shp, moje atrybuty zostają zbite w pole „Opis” (utworzone przez Google). I wszystkie moje atrybuty i informacje są skupione w jednej komórce. Czy istnieje sposób na wyodrębnienie danych z pola „Opis”. Nawet jeśli to zrobię, czy istnieje prosty sposób na pozbycie się formatu HTML i uczynienie go użytecznym?

To właśnie otrzymuję za pomocą metody „Fusion Table”, którą znalazłem na niektórych forach. Możesz zobaczyć html po lewej stronie, kontynuuje dalej niż pokazuje.

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

Korzystam z ArcGIS Desktop 10.2.


Czego używasz do konwersji między formatami? Czy zamiast tego możesz wypróbować ogr2ogr lub QGIS?
bugmenot123,

Odpowiedzi:


3

Właśnie potwierdziłem, że narzędzie przestrzennego ETL utworzone przy użyciu rozszerzenia Interoperacyjności danych przywróci atrybuty z pliku KML / KMZ z powrotem do pliku kształtu z taktowanym schematem. Wystarczy wybrać opcję Schemat dynamiczny w kreatorze tworzenia narzędzi:

Przestrzenny krok ETL


obejściem byłoby przeanalizowanie pola opisu pod kątem wartości różnych pól atrybutów, których potrzebujesz, i skopiowanie ich do odpowiednich pól. I następnym razem poproś klienta, aby dodał atrybuty do arkusza kalkulacyjnego programu Excel lub czegoś takiego, abyś mógł po prostu dołączyć go z powrotem do swojego pliku kształtu w celu aktualizacji.


1
Myślę, że to moje jedyne rozwiązanie w tym momencie. Ale zdecydowanie następnym razem dołączę arkusz kalkulacyjny programu Excel!
Katie B.,

Czy masz dostęp do rozszerzenia Interoperacyjności danych dla ArcGIS? Nie mam z tym doświadczenia w tej kwestii, ale mogą tam być pisarze, którzy mogą odwzorować twoich attirbutes
Adam

FME od Safe Software (na którym opiera się interoperacyjność danych) również zrobi to, czego potrzebujesz, ale jest to również kosztowne.
Adam

3

Musiałem najpierw otworzyć kml w QGIS i zapisać jako plik kształtu, który zachował atrybuty. W QGIS dodaj dane wektorowe i podczas przeglądania ustaw pliki typu na „Keyhole Markup Language (KML)” Przejdź do KML, który chcesz zaimportować, a następnie kliknij otwórz. Zapisz obiekty zaimportowane z KML do pliku Shapefile. Podczas importowania pliku kształtu w ArcMap zobaczysz wszystkie atrybuty zachowane.


2

To narzędzie Eksport do KML opracowane przez Kevina Martina działa.

Istnieją pewne problemy ze stylami, ale przynajmniej kolory i atrybuty są poprawne, i istnieje wiele opcji zabawy z atrybutami, etykietami itp.


2

Potrzebowałem tylko jednego z pól, które zawierały ciąg daty. Korzystając z arcMap, udało mi się to rozwiązać za pomocą kalkulatora pola, aby go wyodrębnić. Jeśli potrzebujesz tylko wyodrębnić kilka pól, może to działać dla ciebie, choć trochę nudne:

Poniższe kroki pomogą Ci zbudować linię VB do użycia w kalkulatorze pola do wycięcia podciągu z pola opisu na podstawie znaczników HTML i legalizacji danych przechowywanych w tabeli.

  1. W GoogleEarth otwórz KML / KMZ, kliknij funkcję, aby otworzyć wyskakujące okienko. Zidentyfikuj dokładną nazwę pola, które chcesz odzyskać. Mój nazywa się „DATA”
  2. W ArcMap otwórz tabelę atrybutów warstwy, którą utworzyłeś podczas importowania KML / KMZ.
  3. Zidentyfikuj pole opisu. W moich danych nazywa się to „PopupInfo”
  4. W pierwszym rekordzie kliknij prawym przyciskiem myszy komórkę „PopupInfo”, a następnie kliknij „skopiuj”
  5. Otwórz Notatnik i wklej zawartość komórki. Teraz zobaczysz HTML dla wyskakującego okienka.
  6. Użyj ctrl-F, aby znaleźć nazwę pola z KML / KMZ (w moim przypadku „DATA”). Oto zrzut ekranu pokazujący tylko linię HTML, na której mi zależy. wprowadź opis zdjęcia tutaj
  7. Policz liczbę znaków, w tym spacje, od początku nazwy pola do początku danych. W moim przypadku jest 15 znaków.
  8. Określ, ile znaków chcesz wyodrębnić. Do mojego podłańcucha potrzebuję 19. Na przykład, jeśli potrzebujesz tylko kodów stanu, takich jak AZ i WY, możesz potrzebować tylko 2. Jeśli twoje dane nie mają jednolitych wpisów długości w tym polu, popełniaj błąd z boku najdłuższego. Edycja: możesz usunąć dodatkowe znaki później ręcznie lub za pomocą funkcji instr () i rtrim () VB. Napisz lub napisz do mnie, jeśli potrzebujesz pomocy.
  9. W arcMap dodaj nowe pole TEKSTOWE jako warstwę i pamiętaj, aby podać co najmniej tyle znaków, ile potrzebujesz do danych. Domyślnie jest to 50.

  10. Następnie otwórz kalkulator pola dla nowego pola. Początek danych można znaleźć za pomocą funkcji InStr (), a dane wyodrębnić za pomocą funkcji Mid (). Wpisz następujące polecenie VB:

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

Oczywiście zamień moje nazwy pól na swoje (z kroków 3 i 6) i zmień długość liczb 15 i 19 na długość podłańcuchów (znalezione w krokach 7 i 8).

W linii VB powyżej:

  • [PopupInfo] to nazwa irytującego pola zawierającego kod HTML dla wyskakującego okienka KML.
  • „DATA” to nazwa pola KML i znacznik HTML zawierający dane, które chcę wyodrębnić.
  • 15 to liczba znaków od początku znacznika daty do początku rzeczywistych danych daty.
  • 19 to liczba znaków w ciągu daty, które chcemy zachować.

1

Oto znaleziony przewodnik, który przeprowadzi Cię przez kilka kroków za pomocą ArcMap, Google Drive Fusion Tables i MS Excel do konwersji plików KML do plików .shp przy zachowaniu atrybutów.

Link do strony z przewodnikiem .


Tak, ale to nie rozwiązuje mojego problemu. Moje atrybuty są nadal zbijane w polu „Opis” w formacie HTML. Narzędzie KML do warstwy nie działa w mojej sytuacji. Próbowałem nawet innych skryptów.
Katie B.,

Zobacz moją zredagowaną odpowiedź.
Cameron Sloan,

Po raz kolejny obraz, który podłączyłem w moim pierwotnym pytaniu, jest moim wynikiem przy użyciu metody tabeli termojądrowej. To nie działa w mojej sytuacji.
Katie B.,

Czy doprowadziłeś to do doskonałości?
Cameron Sloan,

Tak, ten sam problem. Właśnie znalazłem inną stronę forum, na której ktoś ma ten sam problem. Wygląda na to, że będę musiał przejść przez 1000 wierszy skryptu i usunąć kod lub spróbować wykonać polecenie „znajdź i zamień”. Doceniam twoją pomoc.
Katie B.,

1

Udało mi się to zrobić za pomocą kursorów i list, aby podzielić pole PopupInfo xml na przydatne wartości

  1. użyj arcpy KML do narzędzia do warstw i narzędzi projektu, aby dostać się do pożądanego układu współrzędnych (napotkałem problemy z dodawaniem pól do oryginalnego wyniku konwersji, co może być spowodowane powiązanym z nim plikiem warstwy)

  2. Użyj .da.SearchCursor, aby pobrać ciąg PopupInfo z pierwszego wiersza. Następnie podziel go na listę opartą na „<”, usuń dwie pierwsze wartości (pole etykiety z Google Earth) i umieść pozostałe wartości, które mają znacznik „td>”, ale nie znacznik zamykający „td>”, na nowej liście nazw pól (indeksy parzyste) i wartości pól (indeksy nieparzyste)

  3. Zapętlaj listę nazw pól za pomocą arcpy.AddField_management, aby dodać wszystkie pola (pomiń, jeśli już istnieją)

  4. Użyj .da.UpdateCursor, aby uzyskać PopupInfo dla wszystkich wierszy, a następnie podziel i utwórz nowe listy, tak jak kursor wyszukiwania

  5. tym razem użyj wszystkich nieparzystych wartości indeksu, aby zaktualizować wiersze (jeśli i% 2 <> 0: wiersz [(i-1) / 2] = lista [i]), a następnie kursor.updateRow (wiersz)



0

AKTUALIZACJA: jeśli natrafisz na ten wątek z tym samym problemem, istnieje narzędzie dla Ciebie! Sprawdź https://mygeodata.cloud/

Działam naprawdę dobrze Udało mi się przesłać mój plik KML, a wyeksportowany plik kształtu miał poprawnie wszystkie moje atrybuty w swoich polach. Jedynym minusem jest to, że istnieje ograniczona liczba „bezpłatnych” konwersji.


-3

Nadal nie ma prostego rozwiązania tego problemu z konwersją. W ciągu ostatnich kilku lat zadawano tu wiele pytań:

kml-w-qgis-z-dodatkowymi danymi

zachowując-atrybuty-podczas-kml2shp-konwersji-w-arcgis-na-pulpicie

Konwertuj-kml-na-shapefile-bez-utraty-atrybut-danych

Wyjaśnienie esri dotyczące narzędzia do konwersji KmltoLayer:

„Jako„ właściciel ”narzędzia KML w Esri mogę powiedzieć: elementy ExtendedData wewnątrz KML nie będą się tłumaczyć na atrybuty pól podczas używania narzędzia KML do warstwowania z ArcGIS w dowolnej wersji (9.3-10.3). Obejmuje to ArcMap na Windows lub ArcGIS Server w systemie Linux. Istnieje prośba o ulepszenie w celu obsługi tego, co rozważamy w przyszłej wersji. ”


2
Hej - obrażam się na twoją odpowiedź. Jeśli masz zamiar skopiować i wkleić moje komentarze i umieścić je w cudzysłowie, na pewno NIE dodawaj własnego komentarza na temat zakupu rozszerzenia.
KHibma,

@ Sirgeo jest zdecydowanie rozwiązanie tego problemu, w rozszerzeniu Interoperacyjności danych. Wydaje się, że nie jest to rozwiązanie, które ci się podoba.
Adam
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.