描述
此工具用于将要素或栅格图层转换为 KML 文件,其中包含 Esri 几何和符号系统的转换。该文件采用 ZIP 压缩方式压缩,具有 .kmz 扩展名,并且可以由任何 KML 客户端读取,包括 ArcGIS Earth、ArcGlobe 和 Google Earth。
使用方法
可通过两种方式控制 KML 的外观:
-
如果图层具有与比例相关的显示属性并且用户选择了合适的地图输出比例,则可减小输出 KMZ 文档的大小。
所有 KML 和 KMZ 文件均在 WGS84 坐标系中创建。 如果图层未采用 WGS84 坐标,您需要确保图层可以正确投影。 如果投影需要变换,可使用投影工具在 KML 转换前重新投影数据。
要输出叠加在地形上方的单一栅格图像,请使用返回单一合成图像选项。
输入要素与附件将包含在输出 .kmz 文件中。请注意 .kmz 文件内附件的以下情况。
- 附件可明显增大输出文件大小。
- 当在 KML 客户端中使用 KML 文件时,可通过 KML 弹出窗口获取附件。
- 可在运行工具之前,通过禁用维护附件环境设置将附件排除。
- 并非所有 KML 客户端都支持显示附件。一些 KML 客户端应用程序能够更好地支持图像和 PDF 等附件。
语法
arcpy.conversion.LayerToKML(layer, out_kmz_file, {layer_output_scale}, {is_composite}, {boundary_box_extent}, {image_size}, {dpi_of_client}, {ignore_zvalue})
参数 | 说明 | 数据类型 |
layer | 要转换为 KML 的要素或栅格图层或者图层文件 (.lyr)。 | Layer |
out_kmz_file | 待写入的 KML 文件。该文件是压缩文件,扩展名为 .kmz。任何 KML 客户端都可读取该文件,包括 ArcGIS Earth、ArcGlobe 和 Google Earth。 | File |
layer_output_scale (可选) | 导出图层时使用的比例。此参数与任何比例可变选项结合使用,例如图层可见性或按比例渲染。如果此图层在导出比例下不可见,则其不会包含在已创建的 KML 文件中。如果没有比例相关选项,则可使用任何值(例如 0)。 如果导出将以 3D 矢量形式显示的图层并且将 is_composite 参数设置为 NO_COMPOSITE,则只要要素不具有任何取决于比例的渲染,您就可以将此参数设置为任何值。 仅应输入数字字符;例如,输入 20000 作为比例,而不能输入 1:20000 或 20,000。 | Double |
is_composite (可选) |
| Boolean |
boundary_box_extent (可选) | 待导出区域的地理范围。矩形范围边界应按左下右上形式(xmin、ymin、xmax、ymax)以空格分隔的 WGS84 地理坐标字符串进行指定。 | Extent |
image_size (可选) | 使用返回单一合成图像参数时,定义垂直和水平分辨率。将该参数与 DPI 参数配合使用可控制输出图像的分辨率。 | Long |
dpi_of_client (可选) | 使用返回单一合成图像参数时,定义 KML 输出的设备分辨率。将该参数与 image_size 参数配合使用可控制输出图像的分辨率。 | Long |
ignore_zvalue (可选) |
| Boolean |
代码示例
LayerToKML 示例 1(Python 窗口)
以下 Python 窗口脚本演示了如何在即时模式下使用 LayerToKML 函数。
import arcpy
arcpy.env.workspace = "C:/data"
arcpy.LayerToKML_conversion("bldg.lyr", "bldg.kmz")
LayerToKML 示例 2(独立脚本)
以下 Python 脚本演示了如何在独立脚本中使用 LayerToKML 函数。
# Name: LayerToKML Example
# Description: The following stand-alone script demonstrates how to find
# all layer files in a given workspace and export each to
# a KML at the 1:10,000, 1:20,000, and 1:30,000 scale using
# the LayerToKML tool.
import arcpy
# Set environment settings
arcpy.env.workspace = "C:/data"
# Use the ListFiles method to identify all layer files in workspace
if len(arcpy.ListFiles("*.lyr")) > 0:
for layer in arcpy.ListFiles("*.lyr"):
# Set Local Variables
composite = 'NO_COMPOSITE'
pixels = 2048
dpi = 96
clamped = 'CLAMPED_TO_GROUND'
for scale in range(10000, 30001, 10000):
# Strips the '.lyr' and adds scale + _.kmz
outKML = layer[:4] + str(scale) + "_.kmz"
#Execute LayerToKML
arcpy.LayerToKML_conversion(layer, outKML, scale, composite,
'', pixels, dpi, clamped)
else:
arcpy.AddMessage('There are no layer files in '+arcpy.env.workspace+'.')
环境
许可信息
- Basic: 是
- Standard: 是
- Advanced: 是