创建地图切片包 (数据管理)

描述

从地图或底图生成切片,并将切片进行打包从而创建单个压缩的 .tpk 文件。

使用方法

  • 输入地图必须具有相应的描述和标签,此工具才能执行。要添加描述和标签,请在内容窗格中右键单击地图名称,选择属性,然后在描述选项卡上输入描述和标签。

  • 针对切片格式参数选择 PNG 后,工具将根据指定的显示级别自动选择正确格式(PNG8、PNG24 或 PNG32)。

  • 此工具支持并行处理因子环境。如果环境未设置(默认情况下)或已设置为 100,则将启用完全并行处理,同时该工具尝试将工作分配给计算机上的所有逻辑内核。将环境设置为 0 将禁用并行处理。在 1 到 99 之间指定一个因子时,工具将通过应用以下公式确定要使用的逻辑内核的百分比,其结果将向上舍入到最近的整数值:

    Parallel Processing Factor / 100 * Logical Cores
    获取 ArcGIS 组织中的要素图层。

    如果此公式的结果是 0 或 1,则将不启用并行处理。

语法

arcpy.management.CreateMapTilePackage(in_map, service_type, output_file, format_type, level_of_detail, {service_file}, {summary}, {tags}, {extent}, {compression_quality}, {package_type}, {min_level_of_detail})
参数说明数据类型
in_map

用于生成切片并对其进行打包的地图。

Map
service_type

指定是从现有的地图服务生成切片方案,还是根据 ArcGIS Online、Bing 地图和 Google 地图生成地图切片。

  • EXISTING使用一个现有地图服务的切片方案。必须在 service_file 参数中指定地图服务。如果您的组织已在服务器上创建现有服务的切片方案并且您想要与其进行匹配,则请选择此选项。相匹配的切片方案可确保切片在 ArcGIS Runtime 应用程序中正确叠加。如果选择此选项,则源地图和用于导入切片方案的地图将使用相同的坐标系。
  • ONLINE将使用 ArcGIS Online/Bing 地图/Google 地图切片方案。这是默认设置。ArcGIS Online/Bing 地图/Google 地图切片方案可用于将您的缓存切片与这些在线地图服务的切片进行叠加。加载切片方案时,ArcGIS Desktop 以内置选项形式包括此切片方案。选择此切片方案时,源地图必须使用 WGS 1984 Web Mercator (Auxiliary Sphere) 投影坐标系。如果要将您的包与 ArcGIS Online、Bing 地图或 Google 地图进行叠加,则需要使用 ArcGIS Online/Bing 地图/Google 地图切片方案。ArcGIS Online/Bing 地图/Google 地图切片方案的优势在于其在 Web 地图领域内的高熟识度,所以您的切片将与其他使用此切片方案的组织的切片相一致。即使您不打算叠加这些广为熟知的地图服务,仍然可以选择此切片方案以便于互操作。ArcGIS Online/Bing 地图/Google 地图切片方案可能包含过度放大以至于无法在地图中使用的比例。在大比例下进行打包相当耗时,且会占用大量磁盘存储空间。例如,切片方案中的最大比例约为 1:1,000。在此比例下缓存整个美国大陆可能将耗费数周时间并需要数百 GB 的存储空间。如果尚未准备好在此比例级别下进行打包,则在创建切片包时移除此比例级别。
Boolean
output_file

输出地图切片包。

File
format_type

指定生成切片的格式。

  • PNG根据指定的细节层次,使用 PNG 自动选择正确的格式(PNG 8PNG 24PNG 32)。这是默认设置。
  • PNG8PNG 8 用于需要具有透明背景的叠加服务,例如道路和边界。PNG 8 可在磁盘上创建非常小的切片且不损失任何信息。如果地图包含的颜色超过 256 种,请勿使用 PNG 8。影像、山体阴影、梯度填充、透明度和抗锯齿可轻易地使地图包含的颜色超过 256 种。即使是符号(如高速公路盾形路牌符号)也可能在其边缘周围进行微小的抗锯齿,从而使地图包含意料之外的更多颜色。
  • PNG24可将 PNG 24 用于超过 256 种颜色的叠加服务,例如道路和边界。如果少于 256 种颜色,请使用 PNG 8。
  • PNG32PNG 32 用于超过 256 种颜色的叠加服务,例如道路和边界。PNG 32 特别适用于对线或文本启用了抗锯齿的叠加服务。与 PNG 24 相比,PNG 32 可磁盘上创建更大的切片。
  • JPEG此格式用于颜色变化较大但不需要透明背景的底图服务。例如,栅格图像和非常详细的矢量底图特别适合使用 JPEG。JPEG 为有损图像格式。在不影响图像显示效果的情况下,它会尝试有选择地删除数据。这会在磁盘上产生很小的切片,但如果地图包含矢量线作业或标注,它可能会在线周围生成过多的噪声或模糊区域。如果发生这种情况,可尝试将压缩值从默认的 75 增加到更大的值。更高的值(如 90)可以生成可接受的线作业质量,同时还可保证 JPEG 格式的小切片优势。您将确定可接受的图像质量。如果愿意接受图像中存在少量噪声,选择 JPEG 可节省大量的磁盘空间。更小的切片也意味着应用程序可更快地下载切片。
  • MIXED混合包在包的中心使用 JPEG,同时在包的边缘使用 PNG 32。如果要将栅格包完全叠加在其他图层之上,您应使用混合模式。创建混合包时,在检测到透明度的任何位置(也就是地图背景可见的位置)都会创建 PNG 32 切片。其余切片使用 JPEG 构建。这可降低平均文件大小,同时可在其他包上进行完全叠加。如果在这种情况下不使用混合模式包,将在图像叠加其他包的外围区域看到一个不透明的“凸边”。
String
level_of_detail

生成包切片的最高比例。默认值为 1。可能的值为 1 至 24。

较大的值反映较大的比例,可以显示更多细节,但是占用更多存储空间,较小的值反映较小的比例,显示的细节较少,占用的存储空间也较少。

此值必须大于或等于 min_level_of_detail

Long
service_file
(可选)

用于切片方案的地图服务或 XML 文件的名称。仅当 service_type 参数为 EXISTING 时才需要此参数。

MapServer; File
summary
(可选)

将摘要信息添加到包的属性中。

String
tags
(可选)

将标签信息添加到包的属性中。可以添加多个标签,用逗号或分号分隔。

String
extent
(可选)

指定用于选择或裁剪要素的范围。

  • MAXOF - 将使用所有输入的最大范围。
  • MINOF - 将使用所有输入共有的最小区域。
  • DISPLAY - 该范围与可见显示范围相等。
  • 图层名称 - 将使用指定图层的范围。
  • Extent 对象 - 将使用指定对象的范围。
  • 以空格分隔的坐标字符串 - 将使用指定字符串的范围。坐标以 x-min,y-min,x-max,y-max 的顺序表示。
Extent
compression_quality
(可选)

针对 JPEG 压缩质量的介于 1 和 100 之间的值。对于 JPEG 切片格式,默认值为 75;对于其他切片格式,默认值为 0。

JPEGMIXED 格式支持压缩。如果选择较高的值,则生成的文件较大,但图像质量较好。如果选择较低的值,则生成的文件较小,但图像质量较差。

Long
package_type
(可选)

指定将创建的切片包类型。

  • tpk切片使用 Compact 存储格式进行存储。整个 ArcGIS 平台均支持。
  • tpkx切片使用 CompactV2 存储格式进行存储,该格式可提供更好的网络共享和云存储目录性能。ArcGIS 产品的较新版本(例如 ArcGIS Online 7.1、ArcGIS Enterprise 10.7 和 ArcGIS Runtime 100.5)均支持这种改进并简化的包结构类型。这是默认设置。
String
min_level_of_detail
(可选)

生成包切片的最低比例。默认值为 1。可能的值为 1 至 24。

较大的值反映较大的比例,可以显示更多细节,但是占用更多存储空间,较小的值反映较小的比例,显示的细节较少,占用的存储空间也较少。

此值必须小于或等于 level_of_detail

Long

代码示例

CreateMapTilePackage 示例 1(Python 窗口)

以下 Python 脚本演示了如何在 Python 窗口中使用 CreateMapTilePackage 工具。

import arcpy
arcpy.env.workspace = "C:/TilePackageExample" 
arcpy.CreateMapTilePackage_management("World Soils", "ONLINE", "Example.tpk", "PNG8", "10")
CreateMapTilePackage 示例 2(独立脚本)

针对工程中的所有地图,查找并创建地图切片包。

# Name: CreateMapTilePackage.py
# Description: Find all the maps in the project and
#   create a map tile package for each map
# import system modules
import os
import arcpy
# Set environment settings
arcpy.env.overwriteOutput = True
arcpy.env.workspace = "C:/Tilepackages" 
# Loop through the project, find all the maps, and
#   create a map tile package for each map,
#   using the same name as the map
p = arcpy.mp.ArcGISProject("c:\\temp\\myproject.aprx")
for m in p.listMaps():
    print("Packaging " + m.name)
    arcpy.CreateMapTilePackage_management(m, "ONLINE", "{}.tpk".format(m.name), 
                                          "PNG8", "10")

许可信息

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

相关主题