KML 转图层 (转换)

摘要

将 KML 或 KMZ 文件转换为要素类和图层文件。 图层文件用于保留于原始 KML 或 KMZ 文件中找到的符号。

了解有关 ArcGIS 中 KML 支持的详细信息

使用情况

  • 该工具用于创建包含要素数据集中要素类的文件地理数据库。 会将要素类名称命名为 pointlinemultipatches,具体取决于 KML 文件的原始要素。 会在文件地理数据库所在的同一文件夹级别下显示一个图层文件,并可以将该图层文件添加至地图以绘制要素。 此图层文件根据其点、线或面的方案绘制要素,同时保留原始 KML 符号。

    所创建的每个要素类均将含有用于保留有关原始 KML 文件的信息的属性。 原始文件夹结构、名称、弹出信息以及有助于定义要素在表面出现方式的字段,所有这些都组成了每个要素的属性。

  • 栅格或地面叠加层都将转换为文件地理数据库内的镶嵌数据集。 在与输出文件地理数据库属于相同级别的 GroundOverlays 文件夹中可以找到本机格式的源栅格。 默认情况下,不会转换地面叠加层。 使用包括地面叠加层选项创建栅格。

    注:

    使用 KML 转图层工具转换叠加层可能需要很长时间,具体取决于源数据。 将会转换 KML 内的所有可用栅格和叠加层。 如果 KML 引用了提供影像的服务,则将转换所有影像。 由于文件大小的不同,转换极为详细的影像可能会花费很长时间。

  • 将在 WGS84 坐标系中生成输出。 必要时,可使用投影工具将输出要素重新投影到另一个坐标系中。

  • 主要支持 OGC KML 标准中 KMZ 2.2 版本以下的输入。 不支持使用地址标签(按地理编码方式)的点位置。 源 KML 内需要有效的经度和纬度位置。

  • ArcGIS Pro 1.3 版本介绍了 KML 和 KMZ 作为数据源的本机支持。 要对 KML 图层执行地理处理操作,需要将其转换为文件地理数据库内的要素。 使用 KML 转图层工具,从“内容”菜单中选择 KML 图层,然后将其拖到该工具上的输入 KML 文件参数中。 对其进行转换后,可对新输出执行地理处理操作。

参数

标注说明数据类型
输入 KML 文件

要转换的 KML 或 KMZ 文件。

File; KML Layer
输出位置

文件地理数据库与图层 (.lyrx) 文件的目标文件夹。

Folder
输出数据名称
(可选)

输出文件地理数据库和图层文件的名称。 默认值为输入 KML 文件的名称。

String
包括地面叠加
(可选)

包括 KML 的地面叠加层(栅格、航空照片等)。 KMZ 指向提供栅格影像的服务时,请谨慎使用。 该工具将尝试按所有可用比例转换栅格影像。 此过程也许会较漫长且可能超出服务能力范围。

  • 选中 - 地面叠加层包括在输出中。
  • 未选中 - 地面叠加层不包括在输出中。 这是默认设置。
Boolean

派生输出

标注说明数据类型
输出图层文件

输出图层文件。

Group Layer
输出文件地理数据库

包含要素数据集内一个要素类的输出地理数据库。

Workspace

arcpy.conversion.KMLToLayer(in_kml_file, output_folder, {output_data}, {include_groundoverlay})
名称说明数据类型
in_kml_file

要转换的 KML 或 KMZ 文件。

File; KML Layer
output_folder

文件地理数据库与图层 (.lyrx) 文件的目标文件夹。

Folder
output_data
(可选)

输出文件地理数据库和图层文件的名称。 默认值为输入 KML 文件的名称。

String
include_groundoverlay
(可选)

包括地面叠加层(栅格、航空照片等)。 KMZ 指向提供栅格影像的服务时,请谨慎使用。 该工具将尝试按所有可用比例转换栅格影像。 此过程也许会较漫长且可能超出服务能力范围。

  • GROUNDOVERLAY地面叠加层包括在输出中。
  • NO_GROUNDOVERLAY地面叠加层不包括在输出中。 这是默认设置。
Boolean

派生输出

名称说明数据类型
output_layer

输出图层文件。

Group Layer
out_geodatabase

包含要素数据集内一个要素类的输出地理数据库。

Workspace

代码示例

KMLToLayer 示例 1(Python 窗口)

在 Python 窗口中,将 KMZ 文件转换为文件地理数据库。

import arcpy

arcpy.KMLToLayer_conversion(r'C:\kmls\earthquakes.kml',r'C:\gisdata\fromkmls','earthquake_09')
KMLToLayer 示例 2(独立脚本)

以下脚本会将 KMZ 和 KML 文件的文件夹转换为其各自的文件地理数据库。 然后,会将这些文件地理数据库内的要素类合并到单个文件地理数据库中。

注:
此脚本不维护 KMLToLayer 工具中的图层文件。

# 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 feature classes.

# Import system modules
import arcpy
import os

# Set workspace (where all the KMLs are)
arcpy.env.workspace = "C:/VancouverData/KML"

# Set local variables and location for the consolidated file geodatabase
out_location = "C:/WorkingData/fGDBs"
gdb = 'AllKMLLayers.gdb'
gdb_location = os.path.join(out_location, gdb)

# Create the master File Geodatabase
arcpy.management.CreateFileGDB(out_location, gdb)

# 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.conversion.KMLToLayer(kmz, out_location)

# Change the workspace to fGDB location
arcpy.env.workspace = out_location

# Loop through all the file geodatabases within the workspace
wks = arcpy.ListWorkspaces('*', 'FileGDB')
# Skip the Master GDB
wks.remove(gdb_location)

for fgdb in wks:  
    # Change the workspace to the current file geodatabase
    arcpy.env.workspace = fgdb

    # For every feature class inside, copy it to the Master and use the name 
    # from the original fGDB  
    feature_classes = arcpy.ListFeatureClasses('*', '', 'Placemarks')
    for fc in feature_classes:
        print("COPYING: {} FROM: {}".format(fc, fgdb))
        fcCopy = os.path.join(fgdb, 'Placemarks', fc)
        arcpy.conversion.FeatureClassToFeatureClass(
            fcCopy, gdb_location, fgdb[fgdb.rfind(os.sep) + 1:-4])

许可信息

  • Basic: 是
  • Standard: 是
  • Advanced: 是

相关主题