图层转 KML (3D Analyst)
摘要
该工具用于将内存中或基于文件的要素或栅格图层转换为 KML 文件,包括 ESRI 几何和符号系统的转换。该文件采用 ZIP 压缩方式压缩,具有 .kmz 扩展名,并且可以由任何 KML 客户端读取,包括 ArcGIS Explorer、ArcGlobe 和 Google 地球。
旧版本:此工具以前位于“3D 分析”工具箱中。
用法
-
输出 KMZ 文件不能已经存在。
-
如果图层具有与比例相关的渲染器并且用户选择了合适的图层输出比例,则可减小输出 KMZ 文档的大小。
-
要输出悬在地形上方的单个栅格图像,请使用返回单一合成图像选项。
-
要以单独的栅格图像的形式输出每个图层,可使用矢量转栅格选项。
语法
| 参数 | 说明 | 数据类型 |
layer |
待转换为 KML 的内存中的图层或存储在磁盘上的图层文件。 | Feature layer |
out_kmz_file |
待写入的 KML 文件。该文件是压缩文件,扩展名为 .kmz。任何 KML 客户端都可读取该文件,包括 ArcGIS Explorer、ArcGlobe 和 Google 地球。 | KML file |
layer_output_scale |
导出图层时使用的比例。将遵守所有与比例相关的渲染,因此,如果图层在导出比例下不可见,则该图层不会包含在创建的 KML 文件中。图层的符号由该比例控制。 仅应输入数字字符。例如,输入“20000”作为比例,而不能输入 1:20000 或 20,000。 此外,如果要在返回单一合成图像选项被禁用的情况下导出将显示为 3D 矢量的图层(例如点图层),并且没有为图层定义任何与比例相关的渲染,则导出过程不需要该参数,可以将其设置为任何数值,例如 1。 | Double |
is_composite (可选) |
| Boolean |
boundary_box_extent (可选) |
待导出区域的地理范围。范围矩形边界应按“左下右上”形式以空格分隔的 WGS84 地理坐标字符串进行指定。 | Extent |
image_size (可选) |
定义输出 KML 文档中任何栅格的垂直和水平分辨率。 | Long |
dpi_of_client (可选) |
定义输出 KML 文档中任何栅格的设备分辨率。 | Long |
代码示例
以下 Python 窗口脚本演示了如何在立即模式下使用图层转 KML 功能。
import arcpy
from arcpy import env
env.workspace = "C:/data"
arcpy.LayerToKML_3d("bldg.lyr", "bldg.kmz", "1")
以下 Python 脚本演示了如何在独立脚本中使用图层转 KML 功能。
'''*********************************************************************
Name: LayerToKML Example
Description: This 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 system modules
import arcpy
from arcpy import env
# Obtain a license for the ArcGIS 3D Analyst extension
arcpy.CheckOutExtension("3D")
# Set environment settings
env.workspace = "C:/data"
try:
# 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 = 192
# Strips the '.lyr' part of the name and appends '.kmz'
outKML = file[:4] + ".kmz"
for scale in range(10000, 30001, 10000):
#Execute LayerToKML
arcpy.LayerToKML_conversion(layer, outKML, scale, composite,
'', pixels, dpi)
else:
arcpy.AddMessage('There are no layer files in '+env.workspace+'.')
except Exception as e:
print e.message