Преобразование между форматами KML и shapefile (SHP)?


97

Мои пользователи отправляют мне данные о точках, которые были оцифрованы с помощью Google Планета Земля.

Как я могу преобразовать их KML в шейп-файл?

Ответы:


129

Используя открытый исходный код ogr2ogrиз GDAL / OGR :

ogr2ogr -f 'ESRI Shapefile' output.shp input.kml

Как отмечено в комментарии Грего ниже , вам может понадобиться использовать двойные кавычки вместо одинарных кавычек для параметра выходного формата (например, «ESRI Shapefile» для командной строки Windows). Смотрите также GDAL Wiki .


20
... и просто чтобы исключить следующий естественный вопрос, он работает и в другом направлении: ogr2ogr -f KML output.kml input.shp
glennon

8
Если вы предпочитаете использовать инструменты на основе графического интерфейса, QGIS может выступать в качестве внешнего интерфейса для ogr2ogr.
Подземье

1
жаль, что на сайте GDAL / OGR нет подсказок
Pure.Krome

1
@mattwilkie Я думаю, он имел в виду что-то вроде Zamzar.com. Сервис онлайн-конвертации.
RK

1
Мне пришлось использовать двойные кавычки для аргумента "ESRI Shapefile".
MatthewD

30

ArcGIS 10 имеет инструмент GP под названием KML To Layer, который преобразует KML в класс пространственных объектов. Ищите KML, используя новый поиск. Я использовал это для того, чтобы получать данные о разливах нефти из Google и конвертировать их в SHP.

KML To Layer может создавать только класс пространственных объектов базы геоданных, поэтому после него необходимо выполнить шаг Класс пространственных объектов в Класс пространственных объектов, чтобы преобразовать его в шейп-файл.


2
Упомянутый здесь инструмент выглядит как KML To Layer, но он может создать только класс пространственных объектов базы геоданных, за которым следует шаг Класс объектов в Класс пространственных объектов, чтобы преобразовать его в шейп-файл.
PolyGeo

19

Используйте ogr2ogr, но если вас не интересует командная строка, попробуйте ogr2gui - действительно простой интерфейс для ogr2ogr.


10

Чтобы использовать пространственные данные, опубликованные в виде файла KML или KMZ в ArcGIS, сначала необходимо преобразовать KML в класс пространственных объектов (шейп-файл). Университет Коннектикута опубликовал скрипт для создания шейп-файлов из KML под названием KML_to_Shp.tbx. Он работает довольно хорошо, и вы можете использовать его из ArcToolbox. Поскольку KML будет (должен) всегда находиться в географических координатах (WGS84), вы в конечном итоге захотите преобразовать их в UTM Zone 15N NAD83 ...

Как и со всеми новыми инструментами, ознакомьтесь с документацией перед использованием. Это можно найти на веб-сайте Центра образования и исследований в области землепользования UCONN. Как только вы добавите его в свой набор инструментов и поймете его ограничения, инструмент станет очень простым в использовании.

http://clear.uconn.edu/tools/kml_to_shp/index.htm


3
Вам не всегда нужна UTM Zone 15N NAD83, вам нужна соответствующая зона для данных. И вы также можете проецировать, используя WGS84 (то есть WGS84 не означает латлон)
Vinko Vrsalovic


10

Еще один коммерческий продукт, о котором стоит упомянуть, - Global Mapper . Это относится к категории просмотра, преобразования, перепроектирования практически любых географических данных, которые вы можете себе представить. Я широко использую бесплатную версию в классе, который преподаю, и почти все уходят, комментируя, как это швейцарский армейский нож инструментов ГИС (хотя бесплатная версия не переводит, она раскрывает все меню и опции). Хорошо стоит затрат в моем опыте.


10

Пара дополнительных вариантов в дополнение к другим ответам ...

Приложение SL-King fdo2fdo , использующее библиотеки FDO с открытым исходным кодом, позволяет выполнять переводы KML в SHP и наоборот. Он включает в себя как графический интерфейс (который выражает переводы формат-формат и более настраиваемые переводы отображения схем), так и инструмент командной строки.

Для соответствующих приложений FME Safe Software дает вам удивительный контроль над тем, как вы отображаете исходную информацию в место назначения. Если у вас есть ArcGIS, вы можете получить к нему доступ через Расширение взаимодействия данных ( список форматов ) за дополнительную плату.

Если бы они были просто точечными объектами без атрибутов, я бы рассмотрел синтаксический анализ XML во что-то, что вы можете легко импортировать как CSV; вы просто ищете данные между тегами координат.


9

Другой вариант - использовать стороннее расширение XToolsPro, работающее в ArcGIS. Среди множества удобных инструментов преобразования есть функция «Импорт данных из KML».



8

Есть также некоторые другие коммерческие продукты. Arc2Earth приходит на ум. У него довольно хорошая интеграция с ArcGIS Desktop. http://www.arc2earth.com


8

QGIS стал намного более надежным для преобразования между kml и shp. Просто используйте Сохранить как из контекстного меню на слое. Или откройте каждый из этих типов файлов из меню «Добавить новый слой», обязательно измените тип файла в диалоговом окне.


6

Вы также можете посмотреть на FME от Safe Software http://www.safe.com

Доступна 14-дневная пробная версия. FME позволяет вам даже сопоставлять атрибуты из вашего файла KML с форматом ESRI SHP во время процесса преобразования / переноса данных, помимо возможности фильтровать точечные файлы KML на основе определенных атрибутов или пространственных экстентов.

Существует также возможность выполнить пакетное преобразование, когда у вас есть большой набор файлов KML от ваших пользователей.

~ SRG


6

использовать OGR для управления командной строкой, Google Планета Земля Про предоставит вам графический способ конвертации, как и множество других приложений


5

ET GeoWizards также имеет функцию импорта из Google Earth, которая преобразует файлы KML или KMZ в класс пространственных объектов. > http://www.ian-ko.com/ET_GeoWizards/gw_MainFeatures.htm

Если вы ищете опцию с открытым исходным кодом, я вижу, что MapWindow было только что обновлено, и есть несколько плагинов для преобразования в KML и из KML и шейп-файла.



4

Если у вас есть расширение взаимодействия, просто загрузите этот KML прямо в ArcMap и экспортируйте в shp.

Хотя ответ на ваш вопрос противоположен, в случае, если кто-то пришел сюда, чтобы сделать наоборот, я нахожу этот сценарий идеальным для перехода с SHP -> KML http://arcscripts.esri.com/details.asp?dbid=14273




3

Вот несколько вариантов, которые я не видел ни в одном из ответов, чтобы добавить дополнительные ресурсы для преобразования KML в SHP:

Конвертер MyGeodata

Онлайн-конвертер формата Keyhole Markup Language в формат ESRI Shapefile (KML to SHP) - это быстрый и простой в использовании инструмент как для индивидуальных, так и для пакетных преобразований. Конвертер также поддерживает более 90 других векторных и растровых форматов ГИС / САПР и более 3000 координатных систем координат.

Бесплатные инструменты географии охватывает и предоставляет учебник по инструменту Zonums Software


2

Хорошая и простая помощь, которая может дать более четкие результаты, - это сначала преобразовать KML в GPX (есть несколько программ с открытым исходным кодом, которые могут это сделать) и открыть соответствующие данные (GPX имеет 5 различных классов информации: путевые точки, трекпоинты, Маршрутные точки, треки и маршруты) с помощью ogr2ogr из GDAL / OGR в QGIS и сохраните его непосредственно в формате файла .SHP.

Также довольно просто использовать пакетный процесс для большого количества данных (например, используя векторные слои слияния из SAGA) для создания одного файла формы, если это необходимо, и вы также можете очистить пустые атрибуты перед окончательным «Сохранить как SHP».

Обратите особое внимание на систему кодификации, если в конечном результате появляются странные символы ... вы можете выбрать правильный в тот момент, когда добавляете новые векторные данные на карту.


0

Я опаздываю на вечеринку, но вот несколько дополнительных способов:

  1. Google Fusion Tables позволяет преобразовывать информацию о точках KML в WGS84 X и Y в формате .csv, который затем можно использовать в предпочитаемом программном обеспечении для анализа ГИС.

  2. Использование пакета rgdal в R .:

    install.packages("rgdal")
    library(rgdal) #load package
    kmlfile=readOGR("yourkmlfilehere.kml") #load KML
    writeOGR(kmlfile,"yourshapepath",layer="shapename", driver="ESRI Shapefile") #save shape

0

Другой совет: если вы хотите преобразовать несколько KML-файлов в папке / каталоге одновременно в шейп-файл с помощью командной строки, откройте cmd в папке и введите:

для / R% f в (* .kml) выполните ogr2ogr -f "Шейп-файл ESRI" "% ~ dpnf.shp" "% f"

Примечание. Он будет использовать имя KML в качестве имени шейп-файла, поэтому убедитесь, что ваши KML-файлы имеют надлежащие форматы именования для шейп-файлов. Шейп-файл будет создан в том же каталоге, что и соответствующий kml. KML в подкаталогах также будут преобразованы в шейп-файлы.


-1

Для преобразования KML в формат файла Shp вы можете использовать утилиту ogr2ogr. Во-первых, вам нужно установить его в системе. Если вы уже установили его, используйте в терминале тип ogr2ogr.

Теперь для конвертации данную команду нужно выполнить т.е.

--- ogr2ogr -f 'ESRI Shapefile' Output_sahpefile.shp Input_KML.kml

Вот как ogr2ogr может выполнить преобразование, и если вы не получаете результатов, вы можете преобразовать Kml в shp методом кодирования.

это также можно сделать с помощью PHP. Вы можете создать функцию, которая определила эту команду как строку и может дать эту строку в методе shell_exec () для выполнения. Shell_exec () фактически выполняет команду и возвращает вывод в виде строки.

public function KML_to_shp($KMLfilepath,$output){
 $query="ogr2ogr -f 'ESRI Shapefile'  $output.gml  $KMLfilepath";
 shell_exec($query);
 }

Вот сообщение для преобразования kml в shp с помощью инструмента командной строки ogr2ogr или с помощью php-кода. Хотя, если вы используете инструмент QGIS, вы можете просмотреть одно из моих сообщений в блоге здесь kml, чтобы конвертировать shp с помощью QGIS, или же продолжить использовать этот пост.


1
Вы связаны с веб-сайтом, который вы предлагаете в качестве ответа? Если это так, пожалуйста, укажите это в своих сообщениях.
LaughU

-2

В ArcGIS просто выполните поиск «kml TO LAYER» или «Layer to KML». этот инструмент поможет вам конвертировать в шейп-файл и KML


Я думаю, что этот подход уже упоминался ранее другим автором. Кроме того, вы можете предложить что-то новое или улучшенное.
Тарас
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.