图层转 KML (3D Analyst)

摘要

该工具用于将内存中或基于文件的要素或栅格图层转换为 KML 文件,包括 ESRI 几何和符号系统的转换。该文件采用 ZIP 压缩方式压缩,具有 .kmz 扩展名,并且可以由任何 KML 客户端读取,包括 ArcGIS Explorer、ArcGlobe 和 Google 地球。

旧版本旧版本:

此工具以前位于“3D 分析”工具箱中。

用法

语法

LayerToKML_3d (layer, out_kmz_file, layer_output_scale, {is_composite}, {boundary_box_extent}, {image_size}, {dpi_of_client})
参数说明数据类型
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
(可选)
  • 合成输出 KML 文件将是表示源图层中的栅格或矢量要素的单一合成图像。栅格以 KML GroundOverlay 形式悬在 terrain 上方。选择该选项可减小输出 KML 文件的大小。选中该复选框时,KML 中的各要素和图层将不可选择。
  • 无_合成如果图层具有矢量要素,则它们将作为 KML 矢量保留。(如果图层是栅格,则可以为该参数选择任一选项,这没有任何明显的区别。)
Boolean
boundary_box_extent
(可选)

待导出区域的地理范围。范围矩形边界应按“左下右上”形式以空格分隔的 WGS84 地理坐标字符串进行指定。

Extent
image_size
(可选)

定义输出 KML 文档中任何栅格的垂直和水平分辨率。

Long
dpi_of_client
(可选)

定义输出 KML 文档中任何栅格的设备分辨率。

Long

代码示例

“图层转 KML”示例 1(Python 窗口)

以下 Python 窗口脚本演示了如何在立即模式下使用图层转 KML 功能。

import arcpy
from arcpy import env

env.workspace = "C:/data"
arcpy.LayerToKML_3d("bldg.lyr", "bldg.kmz", "1")
“图层转 KML”示例 2(独立脚本)

以下 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

环境

许可信息

ArcView: 需要 3D Analyst
ArcEditor: 需要 3D Analyst
ArcInfo: 需要 3D Analyst

7/10/2012