Я преобразовал шейп-файл с атрибутами в .kml для клиента. Затем .kml и атрибуты были отредактированы в Google Earth. Я получил обновленный .kml, и теперь мне нужно вернуть его в .shp. Проблема в том, что все мои атрибуты теперь в формате html, что делает всплывающее окно с информацией в Google Планета Земля. Когда я пытаюсь конвертировать обратно в .shp, мои атрибуты объединяются в («Описание создано» в Google) поле. И ВСЕ мои атрибуты и информация объединены в одну ячейку. Есть ли способ извлечь данные из поля «Описание». Даже если я это сделаю, есть ли простой способ избавиться от формата HTML и сделать его пригодным для использования?
Это то, что я получаю, используя метод Fusion Table, который я нашел на некоторых форумах. Вы можете увидеть HTML слева, он продолжается дальше, чем он показывает.
Я использую ArcGIS Desktop 10.2.
Ответы:
Я только что подтвердил, что инструмент Spatial ETL, созданный с использованием расширения Data Interoperability, перенесет атрибуты из вашего файла KML / KMZ обратно в шейп-файл с тактовой схемой. Просто выберите параметр « Динамическая схема» в мастере создания инструмента:
Обходным путем было бы проанализировать поле описания для значений различных полей атрибутов, которые вам нужны, и скопировать их в соответствующие поля. И в следующий раз попросите вашего клиента добавить атрибуты в электронную таблицу Excel или что-то еще, чтобы вы могли просто присоединить их к своему шейп файлу для обновления.
источник
Сначала мне пришлось открыть kml в QGIS и сохранить как шейп-файл, и он сохранил атрибуты. В QGIS, Добавить векторные данные и при просмотре установите для файлов типа «Keyhole Markup Markup Language (KML)». Найдите KML, который вы хотите импортировать, затем нажмите «Открыть». Сохраните объекты, импортированные из KML, в шейп-файл. При импорте шейп-файла в ArcMap вы увидите все поддерживаемые атрибуты.
источник
Этот инструмент, Экспорт в KML, разработанный Кевином Мартином, делает свою работу.
Есть некоторые проблемы со стилями, но, по крайней мере, цвета и атрибуты верны, и есть много вариантов, чтобы поиграть с атрибутами, метками и т. Д.
источник
Мне нужно было только одно из полей, которое содержало строку даты. Используя arcMap, я смог решить эту проблему с помощью полевого калькулятора для его извлечения. Если вам нужно извлечь только пару полей, это может работать для вас, хотя и немного утомительно:
Следующие шаги помогут вам построить строку VB для использования в калькуляторе полей, чтобы вырезать подстроку из поля описания на основе тегов HTML и объема данных, хранящихся в вашей таблице.
В arcMap добавьте новое поле TEXT в свой слой и не забудьте указать ему как минимум столько символов, сколько потребуется для ваших данных. По умолчанию 50.
Затем откройте калькулятор поля для вашего нового поля. Начало данных определяется с помощью функции InStr (), а данные извлекаются с помощью функции Mid (). Введите следующую команду VB:
Mid([PopupInfo],InStr([PopupInfo],"DATE")+15,19)
Конечно, замените мои имена полей своими (из шагов 3 и 6) и измените длину чисел 15 и 19 на длину подстрок (найденных в шагах 7 и 8).
В строке VB выше:
источник
Вот руководство, которое я нашел, которое проведет вас через некоторые шаги, используя ArcMap, Google Drive Fusion Tables и MS Excel для преобразования файлов KML в файлы .shp с сохранением атрибутов.
Ссылка на сайт, на котором есть руководство .
источник
Я смог сделать эту работу с помощью курсоров и списков, чтобы разделить поле PopupInfo xml на полезные значения
используйте инструмент arcpy KML to layer и инструменты Project, чтобы попасть в нужную систему координат (я столкнулся с проблемами при добавлении полей к исходному результату преобразования, что может быть связано с файлом слоя, связанным с ним)
Используйте .da.SearchCursor, чтобы получить строку PopupInfo из первой строки. Затем разделите его на список, основанный на '<', удалите первые два значения (поле метки из Google Earth) и поместите оставшиеся значения, имеющие тег 'td>', но не закрывающий тег 'td>', в новый список имен полей (четные индексы) и значений полей (нечетные индексы)
Просмотрите список имен полей с помощью arcpy.AddField_management, чтобы добавить все поля (пропустите, если они уже существуют)
Используйте .da.UpdateCursor, чтобы получить PopupInfo для всех строк, затем разделить и создать новые списки, как с помощью курсора поиска.
на этот раз используйте все нечетные значения индекса для обновления строк (если i% 2 <> 0: row [(i-1) / 2] = list [i]), а затем cursor.updateRow (row)
источник
bugmenot123 уже упоминал об этом, но ogr2ogr может конвертировать между shape-файлами и kml.
Преобразование между форматами KML и shapefile (SHP)? охватывает, как конвертировать между двумя.
источник
ОБНОВЛЕНИЕ: если вы столкнетесь с этой темой с той же проблемой, есть инструмент для вас! Проверьте https://mygeodata.cloud/
Я действительно хорошо работаю. Я смог загрузить свой KML, и у экспортированного шейп-файла были все мои атрибуты правильно в их собственных полях. Единственный недостаток - ограниченное количество «бесплатных» конверсий.
источник
До сих пор нет простого решения этой проблемы конверсии. За последние несколько лет он задавался здесь несколько раз:
KML-в-Qgis-с дополнительными-данными
сохранение-атрибутов-во-kml2shp-преобразование-в-ArcGIS-для-рабочего стола
новообращенный-KML-на-шейп-без потери-атрибутов-данных
Объяснение esri для их инструмента конвертации KmltoLayer:
«Как« владелец »инструмента KML в Esri, я могу сказать: элементы ExtendedData внутри KML не будут преобразовываться в атрибуты поля при использовании инструмента KML to Layer с ArcGIS в любой версии (9.3-10.3). Это включает ArcMap на Windows или ArcGIS Server в Linux. Существует запрос на расширение для поддержки этого, который мы рассматриваем в будущем выпуске ».
источник