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

97

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

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

TroutSlayer
источник

Ответы:

129

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

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

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

fmark
источник
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 может создавать только класс пространственных объектов базы геоданных, поэтому после него необходимо выполнить шаг Класс пространственных объектов в Класс пространственных объектов, чтобы преобразовать его в шейп-файл.

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

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

om_henners
источник
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

TroutSlayer
источник
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; вы просто ищете данные между тегами координат.

JasonBirch
источник
9

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

Pure.Krome
источник
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

SRG
источник
6

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


источник
5

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

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

Дон мельц
источник
5

Open Source MapWindow ГИС имеет бесплатное расширение ( KML2Shapefile ) для преобразования файлов KML / KMZ в шейп-файлы.

Тим Берманн
источник
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

whyzar
источник
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

Насим Ахмад
источник
Я думаю, что этот подход уже упоминался ранее другим автором. Кроме того, вы можете предложить что-то новое или улучшенное.
Тарас