地图转 KML (转换)
摘要
此工具用于将地图文档转换为 KML 文件,其中包含 Esri 几何和符号系统的转换。该文件采用 ZIP 压缩方式压缩,其扩展名为 .kmz,任何 KML 客户端都可以读取该文件,包括 ArcGIS Explorer、ArcGlobe 和 Google 地球。
用法
可通过两种方式控制 KML 的外观。
-
如果地图具有与比例相关的图层显示属性并且用户选择了合适的地图输出比例,则可减小输出 KMZ 文档的大小。
-
在 WGS84 坐标系中创建所有 KML/KMZ 文件。您需要确保图层会正确投影(如果图层没在 WGS84 中)。如果投影需要变换,可使用投影工具在 KML 转换前重新投影数据。
-
要输出叠加在地形上方的单一栅格图像,请使用返回单一合成图像选项。
-
要将每个图层输出为单独的栅格图像,请使用矢量转栅格选项。
语法
参数 | 说明 | 数据类型 |
in_map_document |
要转换为 KML 的地图文档。 | ArcMap Document |
data_frame |
要转换为 KML 的地图文档的数据框。 | String |
out_kmz_file |
待写入的 KML 文件。该文件是压缩文件,扩展名为 .kmz。任何 KML 客户端都可读取该文件,包括 ArcGIS Explorer、ArcGlobe 和 Google 地球。 | File |
map_output_scale (可选) | 导出地图中的每个图层时所使用的比例。此参数对任何比例可变选项都很重要,例如图层可见性或按比例渲染。如果此图层在导出比例下不可见,则其不会包含在已创建的 KML 文件中。如果没有比例可变选项,则可使用任何值(例如 1)。 如果导出将以 3D 矢量形式显示的图层并且将 is_composite 参数设置为 NO_COMPOSITE,则只要要素不具有任何取决于比例的渲染,您就可以将此参数设置为任何值。 仅应输入数字字符;例如,输入 20000 作为比例,而不能输入 1:20000 或 20,000。 | Double |
is_composite (可选) |
| Boolean |
is_vector_to_raster (可选) |
| Boolean |
extent_to_export (可选) | 待导出区域的地理范围。矩形范围边界应按左下右上形式(xmin、ymin、xmax、ymax)以空格分隔的 WGS84 地理坐标字符串进行指定。 | Extent |
image_size (可选) |
以像素为单位返回图像的大小。定义输出 KML 文档中所有栅格的垂直和水平分辨率。将该参数与 DPI 参数配合使用可控制输出图像的分辨率。 | Long |
dpi_of_client (可选) |
定义输出 KML 文档中所有栅格的设备分辨率。典型的屏幕分辨率是 96 dpi。如果地图内的数据支持高分辨率并且 KML 需要高分辨率,则考虑增加值。将该参数与图像大小参数配合使用可控制输出图像的分辨率。 | Long |
ignore_zvalue (可选) |
| Boolean |
代码实例
以下 Python 窗口脚本演示了如何在即时模式下使用 MapToKML 函数。
import arcpy
from arcpy import env
env.workspace = "C:/data"
arcpy.MapToKML_3d("city.mxd", "Layers", "city.kmz", "1")
以下 Python 脚本演示了如何在独立脚本中使用 MapToKML 函数。
'''*********************************************************************
Name: MapToKML Example
Description: This script demonstrates how to find
all map documents 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 MapToKML tool.
'''
# Import system modules
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('*.mxd')) > 0:
for mxd in arcpy.ListFiles('*.mxd'):
# Set Local Variables
dataFrame = 'Layers'
composite = 'NO_COMPOSITE'
vector = 'VECTOR_TO_VECTOR'
pixels = 2048
dpi = 96
clamped = 'ABSOLUTE'
for scale in range(10000, 30001, 10000):
# Strips the '.mxd' part of the name and appends '.kmz'
outKML = mxd[:-4]+'.kmz'
#Execute MapToKML
arcpy.MapToKML_conversion(mxd, dataFrame, outKML, scale,
composite, vector, '', pixels, dpi, clamped)
else:
arcpy.AddMessage('There are no map documents (*.mxd) in '+env.workspace)