Від .shp до .kml до .shp без втрати атрибутів


10

Я перетворив файл форми з атрибутами в .kml для клієнта. Потім .kml та атрибути були відредаговані в Google Earth. Я отримав оновлений .kml, і тепер мені потрібно повернути його до .shp. Проблема полягає в тому, що всі мої атрибути тепер перебувають у форматі html, завдяки чому спливаюче вікно інформації в Google Earth. Коли я намагаюся перетворити назад у .shp, мої атрибути збиваються у поле "Опис", створене google. І ВСІ мої атрибути та інформація зібрані в одну клітинку. Чи є спосіб витягнути дані з поля "Опис". Навіть якщо я це роблю, чи існує простий спосіб позбутися формату html та зробити його корисним?

Це те, що я отримую, використовуючи метод "Таблиця синтезу", який я знайшов на деяких форумах. Ви можете бачити HTML ліворуч, він продовжується далі, ніж показано.

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

Я використовую ArcGIS Desktop 10.2.


Що ви використовуєте для перетворення між форматами? Чи можете ви спробувати ogr2ogr або QGIS?
bugmenot123

Відповіді:


3

Я щойно підтвердив, що просторовий інструмент ETL, створений за допомогою розширення Interoperability Data, поверне атрибути з вашого файлу KML / KMZ до файлу форм із схемою в такт. Просто виберіть параметр " Динамічна схема " у майстрі створення інструментів:

Просторовий крок ETL


обхідним завданням буде проаналізувати поле опису значень різних потрібних полів атрибутів та скопіювати їх у відповідні поля. І наступного разу змусіть свого клієнта додати атрибути в аркуш розкладу Excel чи щось таке, щоб ви могли просто приєднати його до свого файлу форм для оновлення.


1
Я думаю, що це моє єдине рішення на даний момент. Але я обов'язково включаю лист розкладу Excel наступного разу!
Katie B.

Чи маєте ви доступ до розширення сумісності даних для ArcGIS? Я не маю досвіду роботи з цим питанням, але там можуть бути письменники, які можуть переробити ваші підказки
Адам,

FME від безпечного програмного забезпечення (на основі якого є сумісність даних) також зробить те, що вам потрібно, але це теж дорого.
Адам

3

Мені довелося відкрити kml в QGIS спочатку і зберегти як файл форми, і він підтримував атрибути. У QGIS Додайте векторні дані та під час перегляду встановіть файли типу "Мова розмітки замкової щілини (KML)". Перейдіть до KML, який потрібно імпортувати, та натисніть кнопку "Відкрити". Збережіть об’єкти, імпортовані з KML, у Shapefile. При імпорті файлу форми в ArcMap ви побачите збережені всі атрибути.


2

Цей інструмент " Експорт у KML", розроблений Кевіном Мартіном, працює.

Існують деякі проблеми зі стилями, але принаймні кольори та атрибути є правильними, і є безліч варіантів, щоб грати з атрибутами, мітками тощо ...


2

Мені знадобилося лише одне з полів, яке містило рядок дати. Використовуючи arcMap, я зміг це вирішити, використовуючи польовий калькулятор для його вилучення. Якщо вам потрібно лише витягнути пару полів, це може спрацювати для вас, хоч і трохи нудно:

Наступні кроки допоможуть вам створити рядок VB, який буде використаний у калькуляторі поля, щоб вирізати підрядку з поля опису на основі тегів HTML та нижньої частини даних, що зберігаються у вашій таблиці.

  1. У GoogleEarth відкрийте KML / KMZ, натисніть на функцію, щоб відкрити спливаюче вікно. Визначте точну назву поля, яке потрібно відновити. Шахта називається "ДАТА"
  2. У ArcMap відкрийте таблицю атрибутів шару, який ви створили при імпорті KML / KMZ.
  3. Визначте поле опису. У моїх даних це називається "PopupInfo"
  4. У першому записі клацніть правою кнопкою миші клітинку "PopupInfo" та натисніть "копіювати"
  5. Відкрийте Блокнот і вставте вміст комірки. Тепер ви побачите HTML для спливаючих вікон.
  6. Використовуйте ctrl-F для пошуку назви поля з KML / KMZ (у моєму випадку "DATE"). Ось скріншот, що показує лише рядок HTML, який мене цікавить. введіть тут опис зображення
  7. Порахуйте кількість символів, включаючи пробіли від початку назви поля до початку ваших даних. У моєму випадку є 15 символів.
  8. Визначте, скільки символів ви хочете витягти. Для моєї підрядки мені потрібно 19. Наприклад, якщо вам просто потрібні коди штатів, такі як AZ і WY, вам може знадобитися лише 2. Якщо ваші дані не мають послідовних записів по довжині в цьому полі, помиліться на стороні найдовшої. Редагувати: додаткові символи можна видалити пізніше вручну або за допомогою функцій Vstr () та rtrim (). Напишіть або надішліть мені повідомлення, якщо вам потрібна допомога в цьому.
  9. В arcMap додайте нове поле TEXT для свого шару і обов'язково надайте йому принаймні стільки символів, скільки вам потрібно для ваших даних. За замовчуванням - 50.

  10. Потім відкрийте калькулятор поля для нового поля. Початок даних відбувається за допомогою функції InStr (), а дані витягуються за допомогою функції Mid (). Введіть таку команду VB:

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

Звичайно, замініть назви моїх полів на ваше (від кроків 3 та 6) та змініть довжину чисел 15 та 19 на довжину підрядків (знайдених на кроках 7 та 8).

У рядку VB вище:

  • [PopupInfo] - це назва дратівливого поля, яке містить HTML для спливаючих вікон KML.
  • "DATE" - це ім'я поля KML та тег HTML, який містить дані, які я хочу витягнути.
  • 15 - кількість символів від початку тегу дати до початку фактичних даних про дату.
  • 19 - це кількість символів у рядку дати, яку ми хочемо зберегти.

1

Ось посібник, з якого я виявив, що проходить вас через кілька кроків, використовуючи ArcMap, Google Drive Fusion Tables та MS Excel для перетворення KML-файлів у .shp-файли, зберігаючи атрибути.

Посилання на сайт, на якому є путівник .


Так, але це не вирішує мою проблему. Мої атрибути все ще потрапляють у поле "Опис" у форматі html. Інструмент KML для шару не працює для моєї ситуації. Я навіть пробував інші архрипти.
Katie B.

Дивіться мою відредаговану відповідь.
Камерон Слоан

Знову ж таки, зображення, яке я пов’язав у своєму первісному запитанні, є моїм результатом при використанні методу таблиці злиття. Це не працює для моєї ситуації.
Katie B.

Ви внесли це у відмінне?
Камерон Слоан

Так, те саме питання. Щойно я знайшов інший веб-сайт форуму, де у когось іншого є те саме питання. Здається, мені доведеться пройти 1000 рядків сценарію та видалити код або спробувати зробити «знайти і замінити». Я ціную вашу допомогу.
Katie B.

1

Мені вдалося зробити цю роботу за допомогою курсорів та списків, щоб розділити поле PopupInfo xml на корисні значення

  1. використовуйте arcpy KML для інструментів шару та інструменти Project, щоб перейти до потрібної системи координат (я зіткнувся з проблемами додавання полів до вихідного результату перетворення, що може бути пов'язано з файлом шару, пов'язаним з ним)

  2. Використовуйте .da.SearchCursor, щоб отримати рядок PopupInfo з першого ряду. Потім розділіть його на список на основі "<", видаліть перші два значення (поле мітки з Google Планета Земля) і залиште значення, які мають тег "td>", але не тег "td>" в новий список назв полів (парні індекси) та значень полів (непарні індекси)

  3. Проведіть список імен полів з arcpy.AddField_management, щоб додати всі поля (пропустити, якщо вони вже є)

  4. Використовуйте .da.UpdateCursor, щоб отримати PopupInfo для всіх рядків, а потім розділити та створити нові списки так само, як за допомогою курсору пошуку

  5. цього разу використовуйте всі непарні значення індексу для оновлення рядків (якщо i% 2 <> 0: рядок [(i-1) / 2] = список [i]), а потім cursor.updateRow (рядок)



0

ОНОВЛЕННЯ: якщо ви зіткнулися з цією ниткою з тією ж проблемою, є інструмент для вас! Перевірте https://mygeodata.cloud/

Я дуже добре працюю. Мені вдалося завантажити свій KML, і експортований файл форми мав усі мої атрибути правильно у власних полях. Єдиним недоліком є ​​те, що існує обмежена кількість "безкоштовних" конверсій.


-3

Досі не існує простого рішення цього питання конверсії. Про це просили тут кілька разів за останні кілька років:

kml-in-qgis-з додатковими даними

збереження-атрибутів-під час-kml2shp-перетворення-в-аркгіс-для-робочого столу

перетворити-kml у форму-файл без втрати-атрибут-дані

Пояснення esri для інструменту перетворення KmltoLayer:

"Як" власник "інструменту KML в Esri я можу сказати: Елементи ExtendedData всередині KML не перетворяться в атрибути поля при використанні інструменту KML в Layer з ArcGIS в будь-якій версії (9.3-10.3). Це включає ArcMap на Windows або ArcGIS Server на Linux. Існує запит на вдосконалення, щоб підтримати це, що ми розглядаємо для майбутнього випуску. "


2
Гей - я приймаю особисту образу на вашу відповідь. Якщо ви збираєтесь копіювати та вставляти мої коментарі та ставити їх у цитатах, впевненість НЕ додайте власних коментарів щодо придбання розширення.
Khibma

@sirgeo, безумовно, є вирішення цього питання в розширенні Дані про сумісність даних. Просто здається, що це не рішення, яке вам подобається.
Адам
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.