Краткая информация
Конвертирует файл KML или KMZ в классы объектов и файл слоя. Файл слоя поддерживает символы, находящиеся в исходном файле KML или KMZ.
Использование
Этот инструмент создает файловую базу геоданных, содержащую класс пространственных объектов в наборе классов объектов. Имя класса объектов будет задано как точка, линия, полигон или мультипатчи в зависимости от исходных объектов файла KML. На том же уровне папки, что и файловая база геоданных, будет файл слоя, который может быть добавлен на карту для отображения объектов. Этот файл слоя отображает объекты на основе их схемы точки, линии или полигона, сохраняя при этом исходные символы KML.
Каждый созданный класс объектов будет иметь атрибуты, содержащие информацию об исходном файле KML. Атрибуты каждого объекта состоят из следующих элементов: структура и имя исходной папки, всплывающая информация, а также поля, которые позволяют определить, как объекты размещаются на поверхности.
Растры или наложения земли будут конвертированы в каталог растров внутри файла базы геоданных. Исходный растр в родном формате доступен в папке GroundOverlays на том же уровне, что и выходной файл базы геоданных.
Выходные данные будут создаваться в системе координат WGS84. При необходимости, выходные объекты могут быть проецированы в другую систему координат с помощью инструмента Проецировать (Project).
Наиболее органично поддерживается ввод в KMZ версии 2.2 стандарта OGC KML. Положения точек, использующие тег адреса (путем геокодирования), не поддерживаются. В исходном KML требуется наличие допустимого положения, выраженного в виде широты и долготы.
Синтаксис
KMLToLayer_conversion (in_kml_file, output_folder, {output_data}, {include_groundoverlay})
Параметр | Объяснение | Тип данных |
in_kml_file | Файл KML или KMZ, который будет переведен. | File |
output_folder | Целевая папка для файла базы геоданных и файла слоя (.lyr). | Folder |
output_data (дополнительно) | Имя выходной файловой базы геоданных и файла слоя. По умолчанию используется имя входного файла KML. | String |
include_groundoverlay (дополнительно) | Включите наложение земли (растры, аэрофотоснимки и т. п.). Будьте осторожны, если KMZ ссылается на сервис, предоставляющий растровые изображения. Инструмент попытается преобразовать растровые изображения во всех доступных масштабах. Этот процесс может занять длительное время и привести к нагрузкам на сервис.
| Boolean |
Пример кода
KMLToLayer, пример 1 (окно Python)
Конвертирует файл KMZ в FGDB из окна Python.
import arcpy
arcpy.KMLToLayer_conversion(r'C:\kmls\earthquakes.kml',r'C:\gisdata\fromkmls','earthquake_09')
KMLToLayer, пример 2 (автономный скрипт)
Следующий скрипт конвертирует папку с файлами KMZ или KML в соответствующую файловую базу геоданных. Затем классы объектов в этих файловых базах геоданных будут консолидированы в единую файловую базу геоданных.Примечание. Этот скрипт не поддерживает файлы слоев из инструмента KML в слой.
# Name: BatchKML_to_GDB.py
# Description: Converts a directory of KMLs and copies the output into a single fGDB.
# A 2 step process: first convert the KML files, and then copy the featureclases
# Import system models
import arcpy, os
# Set workspace (where all the KMLs are)
arcpy.env.workspace="C:/VancouverData/KML"
# Set local variables and location for the consolidated file geodatabase
outLocation = "C:/WorkingData/fGDBs"
MasterGDB = 'AllKMLLayers.gdb'
MasterGDBLocation = os.path.join(outLocation, MasterGDB)
# Create the master FileGeodatabase
arcpy.CreateFileGDB_management(outLocation, MasterGDB)
# Convert all KMZ and KML files found in the current workspace
for kmz in arcpy.ListFiles('*.KM*'):
print ("CONVERTING: {0}".format(os.path.join(arcpy.env.workspace, kmz)))
arcpy.KMLToLayer_conversion(kmz, outLocation)
# Change the workspace to fGDB location
arcpy.env.workspace = outLocation
# Loop through all the FileGeodatabases within the workspace
wks = arcpy.ListWorkspaces('*', 'FileGDB')
# Skip the Master GDB
wks.remove(MasterGDBLocation)
for fgdb in wks:
# Change the workspace to the current FileGeodatabase
arcpy.env.workspace = fgdb
# For every Featureclass inside, copy it to the Master and use the name from the original fGDB
featureClasses = arcpy.ListFeatureClasses('*', '', 'Placemarks')
for fc in featureClasses:
print ("COPYING: {0} FROM: {1}".format(fc, fgdb))
fcCopy = os.path.join(fgdb, 'Placemarks', fc)
arcpy.FeatureClassToFeatureClass_conversion(fcCopy, MasterGDBLocation, fgdb[fgdb.rfind(os.sep)+1:-4])
# Clean up
del kmz, wks, fc, featureClasses, fgdb
Параметры среды
Информация о лицензировании
- ArcGIS for Desktop Basic: Да
- ArcGIS for Desktop Standard: Да
- ArcGIS for Desktop Advanced: Да