导出地图服务器缓存 (服务器)

摘要

用于将地图图像图层缓存中的切片作为缓存数据集或切片包导出至磁盘上的文件夹。 切片可导入至其他缓存中,也可以以独立于其父服务的方式,作为一个栅格数据集从 ArcGIS Desktop 或移动设备中进行访问。

使用情况

  • 运行此工具前,请在磁盘上创建文件夹,以保存导出的切片。

  • ArcGIS Server 账户必须拥有对目标缓存文件夹的写入权限。 如果无法向 ArcGIS Server 账户授予目标缓存文件夹的写入权限,但 ArcGIS Pro 客户端拥有目标缓存文件夹的写入权限,请选中从服务器复制数据参数。

  • 覆盖切片参数允许导出的切片完全覆盖目标缓存中的切片,而不是混合图像。 仍可将导出的切片限制在感兴趣区域。

  • 选中即用型格式参数后,将使用开放切片包规范生成缓存内容。 缓存格式为 Compact V2,且缓存方案采用 JSON 格式,而非 XML 格式。 可以将此缓存内容打包为 zip 归档作为切片包,以供发布和离线工作流使用。 可以使用从缓存数据集发布切片图层主题中描述的工作流提供此缓存内容。 仅当导出缓存类型参数值为缓存数据集时,此参数可用。

参数

标注说明数据类型
输入服务

带有要导出的缓存切片的地图图像图层。 您可以通过在门户中浏览到该服务,或者从工程窗格的门户选项卡中拖动一个 Web 切片图层来提供此参数值。

Image Service; Map Server
目标缓存路径

缓存将被导出到的目标文件夹。 此文件夹不必是一个已注册的服务器缓存目录。 ArcGIS Server 账户必须拥有对目标缓存文件夹的写入权限。 如果无法向服务器账户授予目标缓存文件夹的写入权限,但 ArcGIS DesktopArcGIS Pro 客户端拥有目标缓存文件夹的写入权限,请选中从服务器复制数据参数。

Folder
导出缓存类型

指定将导出的缓存类型。 切片包适合与 ArcGIS Maps SDKs for Native Apps 配合使用。

  • 缓存数据集将导出使用生成 ArcGIS Server 的地图或影像服务缓存。 其可用于 ArcGIS Desktop 并通过 ArcGIS Server 地图或影像服务对其进行使用。 此选项可用于生成即用型格式的内容。 这是默认设置。
  • 切片包将导出单个压缩文件,将在该文件中添加缓存数据集作为图层并对其进行合并,以便进行共享。 可以用于 ArcGIS Pro 中并与 ArcGIS Maps SDKs for Native Apps 配合使用。
String
从服务器复制数据

指定将切片移至目标文件夹的方式。

只在以下情况下选中此参数:无法向 ArcGIS Server 账户授予目标文件夹的写入权限,但 ArcGIS DesktopArcGIS Pro 客户端拥有目标文件夹的写入权限。 软件会在将服务器输出目录中的切片移至目标文件夹前将其导出。

  • 选中 - 首先将切片放入服务器输出目录中,随后将其移至目标文件夹。 ArcGIS Desktop 客户端必须具有对目标文件夹的写入权限。
  • 未选中 - 切片将直接导出到目标文件夹中。 ArcGIS Server 账户必须具有对目标文件夹的写入权限。 这是默认设置。
Boolean
存储格式类型

指定将用于已导出缓存的存储格式。

  • 紧凑型切片被组织到包和 bundlex 文件中以节省磁盘空间并允许以较快的速度复制缓存。 如果将导出缓存类型参数设置为切片包,则此为默认设置。
  • 紧凑型 V2仅能将切片组织到包文件中。 这种格式使得网络共享和云存储目录拥有了更好的性能。 如果将导出缓存类型参数设置为切片包,则切片包的扩展名将为 .tpkx,较新版本的 ArcGIS 产品(例如 ArcGIS OnlineArcGIS Enterprise 11.5ArcGIS Maps SDKs for Native Apps 200.0 或更高版本,以及 ArcGIS Runtime 100.5-100.15)均支持此扩展名。
  • 松散型每个切片都将存储为单个文件。
String
比例

导出切片时使用的比例级别列表。

Double
缓存服务实例数
(可选)

用于更新或生成切片的实例数。 该参数的值将设置为无限 (-1),且无法进行修改。

Long
感兴趣区域
(可选)

对将从缓存中导出切片的位置进行空间约束的感兴趣区域。 由于该工具在像素级别上裁剪缓存数据集,所以此参数在导出形状不规则的区域时非常有用。

若未指定感兴趣区域,则将导出地图的全图范围。

Feature Set
导出范围
(可选)

矩形范围,用于定义将导出的切片。 默认情况下,此范围将设置为要导入切片所属的地图服务的全图范围。 可选感兴趣区域参数允许您使用面要素进行导入操作。 建议您不要为两个参数都提供值。 如果为两个参数都提供了值,则感兴趣区域参数的优先级高于导出范围。

  • 当前显示范围 地图视图 - 范围基于活动地图或场景。
  • 绘制范围 构造直角并完成草图 - 范围将基于在地图或场景上绘制的矩形。
  • 图层范围 图层 - 范围基于活动地图图层。 选择可用图层或者使用所有图层中的数据范围选项。 每个地图图层具有以下选项:

    • 所有要素 全选 - 所有要素的范围。
    • 选定要素 基于选定要素的区域 - 选定要素的范围。
    • 可见要素 Extent Indicator - 可见要素的范围。

  • 浏览 浏览 - 范围将基于数据集。
  • 剪贴板 粘贴 - 可在剪贴板中复制和粘贴范围。
    • 复制范围 复制 - 将范围和坐标系复制到剪贴板。
    • 粘贴范围 粘贴 - 从剪贴板粘贴范围和坐标系。 如果剪贴板不包含坐标系,则范围将使用地图的坐标系。
  • 重置范围 重置 - 将范围重置为默认值。

当手动提供坐标时,坐标必须为数值,并且位于活动地图的坐标系中。 地图可能使用与提供的坐标不同的显示单位。 在南纬和西经坐标中使用负号。

Extent
覆盖切片
(可选)

指定接收缓存中的图像是与原始缓存中的切片合并,还是被其覆盖。

  • 选中 - 将替换感兴趣区域中的所有像素,并使用原始缓存中的切片有效覆盖目标缓存中的切片。
  • 未选中 - 导出切片后,将忽略原始缓存中的透明像素。 将导致目标缓存中的图像合并或混合。 这是默认设置。
Boolean
即用型格式
(可选)

指定是否按照开放切片包规范生成缓存内容,并确定缓存方案的文件格式。 仅当导出缓存类型参数值为缓存数据集时,此参数可用。

  • 选中 - 将使用开放切片包规范生成缓存内容。 切片包可以打包为 Zip 归档,便于执行离线工作流。 缓存格式将为紧凑型 V2,且缓存方案将以 JSON 格式存储。
  • 未选中 - 缓存内容将使用 XML 格式存储的方案生成。 请使用此选项将缓存复制到先前版本的 ArcGIS Enterprise。 这是默认设置。

Boolean

派生输出

标注说明数据类型
输出缓存路径

缓存已被导出到的目标文件夹。

String

arcpy.server.ExportMapServerCache(input_service, target_cache_path, export_cache_type, copy_data_from_server, storage_format_type, scales, {num_of_caching_service_instances}, {area_of_interest}, {export_extent}, {overwrite}, {ready_to_serve_format})
名称说明数据类型
input_service

带有要导出的缓存切片的地图图像图层。

Image Service; Map Server
target_cache_path

缓存将被导出到的目标文件夹。 此文件夹不必是一个已注册的服务器缓存目录。 ArcGIS Server 账户必须拥有对目标缓存文件夹的写入权限。 如果无法向服务器账户授予目标缓存文件夹的写入权限,但 ArcGIS DesktopArcGIS Pro 客户端拥有目标缓存文件夹的写入权限,请选中从服务器复制数据参数。

Folder
export_cache_type

指定将导出的缓存类型。 切片包适合与 ArcGIS Maps SDKs for Native Apps 配合使用。

  • CACHE_DATASET将导出使用生成 ArcGIS Server 的地图或影像服务缓存。 其可用于 ArcGIS Desktop 并通过 ArcGIS Server 地图或影像服务对其进行使用。 此选项可用于生成即用型格式的内容。 这是默认设置。
  • TILE_PACKAGE将导出单个压缩文件,将在该文件中添加缓存数据集作为图层并对其进行合并,以便进行共享。 可以用于 ArcGIS Pro 中并与 ArcGIS Maps SDKs for Native Apps 配合使用。
String
copy_data_from_server

指定将切片移至目标文件夹的方式。

在以下情况,请将此参数设置为 COPY_DATA:无法向 ArcGIS Server 账户授予目标文件夹的写入权限,但 ArcGIS DesktopArcGIS Pro 客户端拥有目标文件夹的写入权限。 软件会在将服务器输出目录中的切片移至目标文件夹前将其导出。

  • COPY_DATA首先将切片放入服务器输出目录中,随后将其移至目标文件夹。 ArcGIS DesktopArcGIS Pro 客户端必须具有对目标文件夹的写入权限。
  • DO_NOT_COPY切片将直接导出到目标文件夹中。 ArcGIS Server 账户必须具有对目标文件夹的写入权限。 这是默认设置。
Boolean
storage_format_type

指定将用于已导出缓存的存储格式。

  • COMPACT切片被组织到包和 bundlex 文件中以节省磁盘空间并允许以较快的速度复制缓存。 若将 export_cache_type 参数设置为 TILE_PACKAGE,则此为默认设置。
  • COMPACT_V2仅能将切片组织到包文件中。 这种格式使得网络共享和云存储目录拥有了更好的性能。 如果将 export_cache_type 参数设置为 TILE_PACKAGE,则切片包的扩展名将为 .tpkx,较新版本的 ArcGIS 产品(例如 ArcGIS OnlineArcGIS Enterprise 11.5ArcGIS Maps SDKs for Native Apps 200.0 或更高版本,以及 ArcGIS Runtime 100.5-100.15)均支持此扩展名。
  • EXPLODED每个切片都将存储为单个文件。
String
scales
[scales,...]

导出切片时使用的比例级别列表。

Double
num_of_caching_service_instances
(可选)

用于更新或生成切片的实例数。 该参数的值将设置为无限 (-1),且无法进行修改。

Long
area_of_interest
(可选)

对将从缓存中导出切片的位置进行空间约束的感兴趣区域。 由于该工具在像素级别上裁剪缓存数据集,所以此参数在导出形状不规则的区域时非常有用。

若未指定感兴趣区域,则将导出地图的全图范围。

Feature Set
export_extent
(可选)

矩形范围,用于定义将导出的切片。 默认情况下,此范围将设置为要导入切片所属的地图服务的全图范围。 可选感兴趣区域参数允许您使用面要素进行导入操作。 建议您不要为两个参数都提供值。 如果为两个参数都提供了值,则感兴趣区域参数的优先级高于导出范围。

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

指定接收缓存中的图像是与原始缓存中的切片合并,还是被其覆盖。

  • OVERWRITE将替换感兴趣区域中的所有像素,并使用原始缓存中的切片有效覆盖目标缓存中的切片。
  • MERGE导出切片后,将忽略原始缓存中的透明像素。 将导致目标缓存中的图像合并或混合。 这是默认设置。
Boolean
ready_to_serve_format
(可选)

指定是否按照开放切片包规范生成缓存内容,并确定缓存方案的文件格式。 仅当 export_cache_type 参数值为 CACHE_DATASET 时,可使用此参数。

  • READY_TO_SERVE_FORMAT将使用开放切片包规范 (https://github.com/Esri/tile-package-spec) 生成缓存内容。 切片包可以打包为 Zip 归档,便于执行离线工作流。 缓存格式将为紧凑型 V2,且缓存方案将以 JSON 格式存储。
  • NON_READY_TO_SERVE_FORMAT缓存内容将使用 XML 格式存储的方案生成。 请使用此选项将缓存复制到先前版本的 ArcGIS Enterprise。 这是默认设置。
Boolean

派生输出

名称说明数据类型
output_cache_path

缓存已被导出到的目标文件夹。

String

代码示例

ExportMapServerCache 示例 1(独立脚本)

将存储格式从 EXPLODED 更改为 COMPACT 时导出某一要素类的缓存切片。

# Name: ExportMapServerCacheTiles.py
# Description: The following stand-alone script demonstrates how to export
# 		cache from a map layer in ArcGIS Enterprise portal,
# 		as CACHE_DATASET in COMPACT_V2 storage format and MERGE tiles
#               using an AREA_OF_INTEREST to TARGET_CACHE_PATH
#		which is accessible to server instances

# Example: This sample script updates map cache tiles.

import arcpy
from arcpy import env
import os, sys, time, datetime, traceback, string
import traceback, sys

# Set environment settings
env.workspace = "C:/data"

# Sign in to ArcGIS Enterprise
myPortal= "https://MyPortal.domain.com/portalwebadaptor"
arcpy.SignInToPortal(myPortal, "siteadminValue", "siteadminPassword")
myServer="https://Myserver.domain.com/serverwebadaptor"
serviceName= "SampleWorldCities"
serviceType= "MapServer"
myPortalServiceURL = (myServer + "/" + "rest/services" +"/" + serviceName + "/"
                      + serviceType)



# Stand alone ArcGIS Server
##target_server_connection = r"C:\share\python3\arcgis on MyServer.ags"
##serviceName= "MyServiceName"
##serviceType= ".MapServer"
##myPortalServiceURL = (target_server_connection +  "\\" + serviceName + serviceType)

print (myPortalServiceURL)

#variables for reporting
currentTime = datetime.datetime.now()
arg1 = currentTime.strftime("%H-%M")
arg2 = currentTime.strftime("%Y-%m-%d %H:%M")
file = r'C:\test\report_%s.txt'% arg1


# List of input variables for map or image service 
targetCachePath 	= "C:/data/temp"
exportCacheType 	= "CACHE_DATASET"
copyDataFromServer 	= "DO_NOT_COPY"
storageFormat 		= "COMPACT_V2"
scales 			= [500000,250000,125000,64000]
numOfCachingServiceInstances = "2"
areaOfInterest 		= "C:/data/101/Portland/Metro.shp"
exportExtents 		= ""
overwriteTiles 		= "MERGE"
ready_to_serve_format   = "NON_READY_TO_SERVE_FORMAT"


# Print results of the script to a report
report = open(file,'w')

try:
    result = arcpy.server.ExportMapServerCache(myPortalServiceURL, targetCachePath,
                                               exportCacheType,
                                               copyDataFromServer,
                                               storageFormat, scales,
                                               numOfCachingServiceInstances,
                                               areaOfInterest, exportExtents,
					       overwriteTiles,
                                               ready_to_serve_format)
    while result.status < 4:
        time.sleep(0.2)
    resultValue = result.getMessages()
    report.write ("completed " + str(resultValue))

    print ("Exported cache successfully for " + serviceName )
    
except Exception as e:
    # If an error occurred, print line number and error message
    import traceback, sys
    tb = sys.exc_info()[2]
    report.write("Failed at step 1 \n" "Line %i" % tb.tb_lineno)
    report.write(str(e))
report.close()
ExportMapServerCache 示例 2(独立脚本)

ArcGIS Server 实例无法访问目标文件夹时将使用 TILE_PACKAGE 导出缓存。

# Name: ExportMapServerCacheTiles2.py
# Description: The following stand-alone script demonstrates how to export cache
#               on a map service on standalone server as TILE_PACKAGE for default number of scales of a service, to a
#               TARGET_CACHE_PATH which is inaccessible to server instances using
#               COPY_DATA_FROM_SERVER 

# Example: This sample script updates map cache tiles.

import arcpy
from arcpy import env
import os, sys, time, datetime, traceback, string
import traceback, sys

# Set environment settings
env.workspace = "C:/data"

# Sign in to ArcGIS Enterprise
##myPortal= "https://MyPortal.domain.com/portalwebadaptor"
##arcpy.SignInToPortal(myPortal, "siteadminValue", "siteadminPassword")
##myServer="https://Myserver.domain.com/serverwebadaptor"
##serviceName= "SampleWorldCities"
##serviceType= "MapServer"
##myPortalServiceURL = (myServer + "/" + "rest/services" +"/" + serviceName + "/"
##                      + serviceType)
##

# Stand alone ArcGIS Server
target_server_connection = r"C:\share\python3\arcgis on MyServer.ags"
serviceName= "MyServiceName"
serviceType= ".MapServer"
myPortalServiceURL = (target_server_connection +  "\\" + serviceName + serviceType)

print (myPortalServiceURL)

#variables for reporting
currentTime = datetime.datetime.now()
arg1 = currentTime.strftime("%H-%M")
arg2 = currentTime.strftime("%Y-%m-%d %H:%M")
file = r'C:\test\report_%s.txt'% arg1


# List of input variables for map or image service 
targetCachePath = "C:/temp/usa"
exportCacheType = "TILE_PACKAGE"
copyDataFromServer = "COPY_DATA"
storageFormat = "COMPACT_V2"
scaleValues = [500000,250000,125000,64000]
numOfCachingServiceInstances = "2"
exportExtents = ""
areaOfInterest = ""
overwriteTiles = "MERGE"
ready_to_serve_format = "NON_READY_TO_SERVE_FORMAT"

# Print results of the script to a report
report = open(file,'w')

try:
    result = arcpy.server.ExportMapServerCache(inputService, targetCachePath,
                                               exportCacheType,
                                               copyDataFromServer,
                                               storageFormat, scales,
                                               numOfCachingServiceInstances,
                                               areaOfInterest,
                                               exportExtents, overwriteTiles,
                                               ready_to_serve_format)
    while result.status < 4:
        time.sleep(0.2)
    resultValue = result.getMessages()
    report.write ("completed " + str(resultValue))

    print ("Exported cache successfully for " + serviceName )
    
except Exception as e:
    # If an error occurred, print line number and error message
    import traceback, sys
    tb = sys.exc_info()[2]
    report.write("Failed at step 1 \n" "Line %i" % tb.tb_lineno)
    report.write(str(e))
report.close()

环境

此工具不使用任何地理处理环境。

许可信息

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

相关主题