地图转 KML (转换)

摘要

将地图转换为包含几何和符号系统的 KML 文件。 输出文件采用 ZIP 压缩方式压缩,具有 .kmz 扩展名,并且可以由任何 KML 客户端读取,包括 ArcGIS EarthGoogle Earth

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

使用情况

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

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

  • 如果地图具有与比例相关的图层显示属性并且用户选择了合适的地图输出比例,则可减小输出 KMZ 文档的大小。

  • 所有 .kml.kmz 文件均采用 WGS84 坐标系进行创建。 如果图层未采用 WGS84 坐标,请确保它们正确投影。 如果投影需要变换,可使用投影工具在 KML 转换前重新投影数据。

  • 要输出叠加在地形上方的单一栅格图像,请使用返回单一合成图像参数。

  • 要将每个图层输出为单独的栅格图像,使用矢量转栅格参数。

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

  • 要在输出 KML 中包含图例,请为图例布局源参数指定一个值。 您的地图布局中必须包含一个图例元素

    图例将作为屏幕叠加层包含在输出 KML 中。 仅图例元素会成为 KML 中的屏幕叠加层。 查看 KML 数据时,每个图例都将成为主 KML 文件夹下的子文件夹。 通过打开 KML 文件夹树中的位置来配置屏幕叠加层的位置。

参数

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

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

Map
输出文件

输出 KML 文件。 该文件是压缩文件,扩展名为 .kmz。 任何 KML 客户端都可读取该文件,包括 ArcGIS EarthGoogle Earth

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
导出范围
(可选)

待导出区域的地理范围。 将矩形范围边界指定为按左下右上的形式(x-min、y-min、x-max、y-max)以空格分隔的 WGS84 地理坐标字符串。

  • 默认 - 该范围将基于所有参与输入的最大范围设定。这是默认设置。
  • 当前显示范围 - 该范围与数据框或可见显示范围相等。如果没有活动地图,则该选项将不可用。
  • 如下面的指定 - 该范围将基于指定的最小和最大范围值。
  • 浏览 - 该范围将基于现有数据集。
Extent
返回图像的大小(像素)
(可选)

地图输出比例参数值设置为大于或等于 1 的值时,栅格图层的切片大小。 此参数仅对栅格图层有效。

Long
输出图像的 DPI
(可选)

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

Long
紧贴地面的要素
(可选)

指定是否将要素强制固定于地面。

  • 选中 - 将忽略输入要素的 z 值,并将在创建 KML 输出时将要素强制固定于地面。 要素将被叠加到 terrain 上。 当要素不具有 z 值时,将使用此选项。 这是默认设置。
  • 未选中 - 在创建 KML 输出时,将使用输入要素的 z 值。 将在 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。 任何 KML 客户端都可读取该文件,包括 ArcGIS EarthGoogle Earth

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_COMPOSITEKML 包含单独的单个图层。 这是默认设置。 可通过 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
(可选)

待导出区域的地理范围。 将矩形范围边界指定为按左下右上的形式(x-min、y-min、x-max、y-max)以空格分隔的 WGS84 地理坐标字符串。

  • 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
(可选)

指定是否将要素强制固定于地面。

  • CLAMPED_TO_GROUND将忽略输入要素的 z 值,并将在创建 KML 输出时将要素强制固定于地面。 要素将被叠加到 terrain 上。 当要素不具有 z 值时,将使用此选项。 这是默认设置。
  • ABSOLUTE在创建 KML 输出时,将使用要素的 z 值。 将在 KML 客户端中相对于海平面绘制要素。
Boolean
layout
(可选)

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

String

代码示例

地图转 KML (MapToKML) 示例 1(Python 窗口)

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

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.conversion.MapToKML("cities.mapx", "cities.kmz")
地图转 KML (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))

环境

此工具不使用任何地理处理环境。

许可信息

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

相关主题