地图转 KML (转换)

摘要

用于将包含要素或栅格图层的地图转换为 KML 格式(.kmz 文件)。 输出 KML 将包含 Esri 要素几何、栅格像元、图层符号系统和其他属性的转换。

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

使用情况

  • 输出 .kmz 文件为包含 .kml 文件和其他补充文件的存档或 .zip 文件。 许多应用程序(包括 ArcGIS EarthGoogle Earth)都可以读取 .kmz 文件。

  • 可通过以下两种方式控制 KML 的外观:

    • 默认情况下,弹出窗口的显示内容由图层的所有可见字段组成。还可以使用图层的自定义弹出窗口设置弹出窗口的显示内容。如果尚未自定义图层弹出窗口,那么在单击 KML 要素时,将在弹出窗口中显示要素图层的 PopupInfo 字段中的值。这些值可以是数字或文本属性,也可以是存储在文本字段中的 HTML 格式的代码。
    • 如果未设置图层属性并且要素类包含某些属性(字段),则将在创建通过 KML 转图层工具最初创建的 KML 图层时使用字段属性,而这些属性将包含用于定义 KML 创建方式的属性。有关根据属性创建 KML 的详细信息,请参阅 KML 转换

  • 如果输入具有与比例相关的显示属性,请通过提供相应的地图输出比例参数值来减小输出 .kmz 文件的大小。

  • 输入地图的图层将投影到 WGS84,因为所有 .kmz 文件都必须使用该坐标系。 要确保投影能够准确定位要素和栅格像元,可能需要指定地理变换环境。 或者,在转换为 KML 之前,请使用投影工具,通过有效的转换将地图的图层重新投影到 WGS84。

  • 地图输出比例返回图像的大小(像素)参数一起用于创建切片输出。 例如,对于大小为 7000 x 5000 像素且返回图像的大小(像素)参数值为 1000 像素的图像,输出图像将由 7 x 5 或 35 个子图像组成。 如果地图输出比例参数值为 1,则每个子图像将为 1000 x 1000 像素。 如果地图输出比例参数值为 10,则每个子图像将为 100 x 100 像素。

  • 要将图例作为屏幕叠加层包含在输出 KML 中,需要为图例布局源参数指定值。 您的地图布局中必须包含一个图例元素

    仅图例元素会成为 KML 中的屏幕叠加层。 查看 KML 数据时,每个图例都将成为主 KML 文件夹下的子文件夹。

参数

标注说明数据类型
输入地图

将转换为 KML 的地图、场景或底图。

Map
输出文件 (KMZ)

输出 KML 文件,经过压缩并具有 .kmz 扩展名。

File
地图输出比例
(可选)

将导出地图中每个图层的比例。

此参数对任何比例可变选项都很重要,例如图层可见性或按比例渲染。 如果图层在输出比例下不可见,则其不会包含在输出 KML 中。 如果没有比例相关选项,则可使用任何值(例如 1)。

对于栅格图层,可以将值 0 用来创建一个未平铺输出图像。 如果使用大于或等于 1 的值,则由该值确定栅格的输出分辨率。 此参数对栅格图层以外的图层无效。

仅接受数字字符;例如,输入 20000 作为比例,而不是 1:20000。 在使用逗号作为小数点的语言中,也可以输入 20,000。

如果要导出将以 3D 矢量形式显示的图层并且选中返回单一合成图像参数,则只要要素不具有任何取决于比例的渲染,您就可以将此参数设置为任何值。

Double
返回单一合成图像
(可选)

指定输出 KML 将包含单个合成图像还是单独的图层。

  • 选中 - 输出 KML 文件将包含将地图中的所有要素合成为单个栅格图像的单个图像。 栅格以 KML GroundOverlay 形式叠加在地形上方。 此选项可减小输出 KMZ 的大小。 KML 中的各个要素和图层将不可选择。
  • 未选中 - 输出 KML 将包含单独的单个图层。 这是默认设置。 可通过将要素转换为图像参数值确定是以栅格的形式还是以矢量和栅格组合的形式返回图层。
Boolean
将要素转换为图像
(可选)

指定是将地图中的每个要素图层转换为单独的栅格图像,还是将其保留为要素。 如果选中返回单一合成图像参数,则不会使用此参数。

  • 选中 - 要素图层将在 KML 输出中转换为单独的栅格图像。 正态栅格图层也将被添加到 KML 输出中。 各输出 KML 栅格图层为可选状态,并且可以在特定 KML 查看器应用程序中调整其透明度。
  • 未选中 - 要素将作为要素几何保留在输出 KML 中。 这是默认设置。
Boolean
范围
(可选)

要转换的图层的地理范围。 输出 KML 中仅包含此范围中的要素或栅格像元。

  • 当前显示范围 地图视图 - 范围基于活动地图或场景。 仅在存在活动地图时,才可使用此选项。
  • 图层范围 图层 - 范围基于活动地图图层。 使用下拉列表选择可用图层,或使用所有图层中数据的范围选项获取所有活动地图图层(不包括底图)的组合范围。 仅在存在具有图层的活动地图时,才可使用此选项。
  • 浏览 浏览 - 范围基于现有数据集。
  • 重置范围 重置 - 将范围重置为默认值。
  • 手动输入坐标 - 坐标必须是数值,并且与活动地图的坐标系相匹配。

    地图可能使用不同的显示单位

Extent
返回图像的大小(像素)
(可选)

地图输出比例参数值大于或等于 1 时,栅格图层的切片大小。 此参数对栅格图层以外的图层无效。

Long
输出图像 DPI
(可选)

输出 KML 文档中所有栅格的设备分辨率。 典型的屏幕分辨率是 96 dpi。 如果地图内的数据支持高分辨率并且 KML 需要高分辨率,则考虑增加值。 可将该参数与返回图像的大小(像素)参数一起用于控制输出图像分辨率。 默认值为 96。

Long
将要素强制固定于地面
(可选)

指定是否将忽略输入要素的 z 值以及是否在地面高程处定位或强制固定所有要素。

  • 选中 - 将忽略输入要素的 z 值,并在地面高程处定位或强制固定所有要素。 如果输入要素没有 z 值,则会始终将其强制固定于地面。 这是默认设置。
  • 未选中 - 要素的 z 值将保留在输出 KML 中。 将在 KML 客户端中相对于海平面绘制要素。
Boolean
图例布局源
(可选)

包含将作为屏幕叠加层包含在 KML 输出中的图例元素的布局名称。

String

arcpy.conversion.MapToKML(in_map, out_kmz_file, {map_output_scale}, {is_composite}, {is_vector_to_raster}, {extent_to_export}, {image_size}, {dpi_of_client}, {ignore_zvalue}, {layout})
名称说明数据类型
in_map

将转换为 KML 的地图、场景或底图。

Map
out_kmz_file

输出 KML 文件,经过压缩并具有 .kmz 扩展名。

File
map_output_scale
(可选)

将导出地图中每个图层的比例。

此参数对任何比例可变选项都很重要,例如图层可见性或按比例渲染。 如果图层在输出比例下不可见,则其不会包含在输出 KML 中。 如果没有比例相关选项,则可使用任何值(例如 1)。

对于栅格图层,可以将值 0 用来创建一个未平铺输出图像。 如果使用大于或等于 1 的值,则由该值确定栅格的输出分辨率。 此参数对栅格图层以外的图层无效。

仅接受数字字符;例如,输入 20000 作为比例,而不是 1:20000。 在使用逗号作为小数点的语言中,也可以输入 20,000。

如果要导出将以 3D 矢量形式显示的图层并且将 is_composite 参数设置为 NO_COMPOSITE,则只要要素不具有任何取决于比例的渲染,您就可以将此参数设置为任何值。

Double
is_composite
(可选)

指定输出 KML 将包含单个合成图像还是单独的图层。

  • COMPOSITE输出 KML 文件将包含将地图中的所有要素合成为单个栅格图像的单个图像。 栅格以 KML GroundOverlay 形式叠加在地形上方。 此选项可减小输出 KMZ 的大小。 KML 中的各个要素和图层将不可选择。
  • NO_COMPOSITE输出 KML 将包含单独的单个图层。 这是默认设置。 可通过 is_vector_to_raster 参数值确定是以栅格的形式还是以矢量和栅格组合的形式返回图层。
Boolean
is_vector_to_raster
(可选)

指定是将地图中的每个要素图层转换为单独的栅格图像,还是将其保留为要素。 如果 is_composite 参数设置为 COMPOSITE,则不会使用此参数。

  • VECTOR_TO_IMAGE要素图层将在 KML 输出中转换为单独的栅格图像。 正态栅格图层也将被添加到 KML 输出中。 各输出 KML 栅格图层为可选状态,并且可以在特定 KML 查看器应用程序中调整其透明度。
  • VECTOR_TO_VECTOR要素将作为要素几何保留在输出 KML 中。 这是默认设置。
Boolean
extent_to_export
(可选)

要转换的图层的地理范围。 输出 KML 中仅包含此范围中的要素或栅格像元。 可以使用以下选项指定该范围:

  • MAXOF - 将使用的所有输入的最大范围。
  • MINOF - 将使用的所有输入共用的最小范围。
  • DISPLAY - 范围与可见显示范围相等。
  • 图层名称 - 将使用指定图层的范围。
  • Extent 对象 - 将使用指定对象的范围。
  • 以空格分隔的坐标字符串 - 将使用指定字符串的范围。 坐标按 x-min、y-min、x-max、y-max 的顺序表示。
Extent
image_size
(可选)

map_output_scale 参数值大于或等于 1 时,栅格图层的切片大小。 此参数对栅格图层以外的图层无效。

Long
dpi_of_client
(可选)

输出 KML 文档中所有栅格的设备分辨率。 典型的屏幕分辨率是 96 dpi。 如果地图内的数据支持高分辨率并且 KML 需要高分辨率,则考虑增加值。 将该参数与 image_size 参数配合使用可控制输出图像的分辨率。 默认值为 96。

Long
ignore_zvalue
(可选)

指定是否将忽略输入要素的 z 值以及是否在地面高程处定位或强制固定所有要素。

  • ABSOLUTE要素的 z 值将保留在输出 KML 中。 将在 KML 客户端中相对于海平面绘制要素。
  • CLAMPED_TO_GROUND将忽略输入要素的 z 值,并在地面高程处定位或强制固定所有要素。 如果输入要素没有 z 值,则会始终将其强制固定于地面。 这是默认设置。
Boolean
layout
(可选)

包含将作为屏幕叠加层包含在 KML 输出中的图例元素的布局名称。

String

代码示例

MapToKML 示例 1(Python 窗口)

以下 Python 窗口脚本演示了如何在即时模式下使用 MapToKML 函数。

import arcpy
arcpy.conversion.MapToKML("C:/Maps/Cities.mapx", "C:/OutputMaps/Cities.kmz")
MapToKML 示例 2(独立脚本)

以下 Python 脚本演示了如何在独立脚本中使用 MapToKML 函数。

# Import system modules
import arcpy

# Set environment settings
arcpy.env.workspace = "C:/data"

# Use ListFiles to identify all map files in workspace
files = arcpy.ListFiles('*.mapx') 
if len(files) > 0:
    for map_file in files:
        # Set Local Variables
        composite = 'NO_COMPOSITE'
        vector = 'VECTOR_TO_VECTOR'
        pixels = 2048
        dpi = 96
        clamped = 'ABSOLUTE'
        for scale in range(10000, 20000, 30000):
            # Strips the '.mapx' part of the name and appends '.kmz'
            outKML = map_file[:-5]+'.kmz'

            # Run MapToKML	
            arcpy.conversion.MapToKML(map_file, outKML, scale, composite, 
                                      vector, '', pixels, dpi, clamped)
else:
    arcpy.AddMessage('There are no map files (*.mapx) in {}.'.format(arcpy.env.workspace))