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

摘要

将切片从磁盘上的文件夹中导入到地图图像图层缓存。

源文件夹可以是已注册的服务器缓存目录的子文件夹、之前已向其导出缓存的文件夹或切片包 (.tpk)。目标服务必须与源缓存使用相同的切片方案和存储格式。

使用情况

  • 使用此工具将全部或部分缓存从一个文件夹导入到另一个文件夹。

  • 覆盖切片参数允许导入的切片完全覆盖现有的切片,而不是混合影像。 仍可将导入的切片限制在感兴趣区域。

参数

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

带有要导入的缓存切片的地图图像图层。 可以通过在门户中浏览至该服务来对其进行选择,也可以从工程窗格的门户选项卡中拖动一个 web 切片图层来提供此参数。

Image Service; Map Server
源缓存类型

指定将导入到服务器上运行的缓存地图或影像服务的缓存类型。

  • 地图或影像服务缓存将导入使用 ArcGIS Server 生成的地图或影像服务缓存。 其可用于 ArcGIS Desktop 并通过 ArcGIS Server 地图或影像服务对其进行使用。
  • 切片包将导入为实现共享将缓存数据集添加为图层并合并的单个压缩文件。 可以用于 ArcGIS Pro 中,并与 ArcGIS Maps SDKs for Native Apps 配合使用。
String
源缓存数据集
(可选)

将导入的切片所在的路径位置。 浏览时此路径由栅格数据集图标表示。 您不必指定已注册的服务器缓存目录;通常,需要指定磁盘上之前已导入切片的位置。 ArcGIS Server 账户应能访问此位置。 如果无法向 ArcGIS Server 账户授予此位置的访问权限,则请选中将数据上传到服务器参数。

Raster Dataset
源切片包
(可选)

将导入的切片包所在的路径。 ArcGIS Server 账户应能访问此位置。 将切片包文件导入到缓存地图或影像服务时会自动启用将数据上传到服务器参数。

File
将数据上传到服务器
(可选)

指定将切片移至服务器缓存目录的方式。

如果 ArcGIS Server 账户没有源缓存的读取权限,请选中此参数。 工具会在源缓存移至 ArcGIS Server 缓存目录前将其上传到 ArcGIS Server 上传目录。

  • 选中 - 首先将切片放在服务器上传目录中,随后将其移至服务器缓存目录。 如果源缓存类型参数设置为切片包,则此选项默认处于活动状态。
  • 未选中 - 将切片直接导入服务器缓存目录。 ArcGIS Server 账户必须有源缓存的读取权限。
Boolean
比例
(可选)

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

默认情况下,工具对话框中所列出的比例介于该服务的最小和最大缓存比例之间。 要更新比例范围,请转至服务编辑器 > 缓存选项卡,然后使用滑块更新最小和最大缓存比例。

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

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

Long
感兴趣区域
(可选)

对将切片导入到缓存时所处的位置进行空间约束的感兴趣区域面。 此参数在导入形状不规则区域的切片时非常有用,因为该工具会按像素分辨率裁剪与面相交的缓存数据集,然后将其导入到服务器缓存目录。

如果未提供该参数的值,则将使用导入范围参数的值。 默认情况下将使用地图的全图范围。

Feature Set
导入范围
(可选)

矩形范围,用于定义将导入到缓存的切片。 默认情况下,此范围将设置为要导入切片所属的地图服务的全图范围。 可选感兴趣区域参数允许您使用不规则形状对已导入切片进行空间约束。 如果为两个参数都提供了值,则感兴趣区域参数的优先级高于导出范围。

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

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

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

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

Extent
覆盖切片
(可选)

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

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

派生输出

标注说明数据类型
输出地图服务 URL

输出 URL。

String

arcpy.server.ImportMapServerCache(input_service, source_cache_type, {source_cache_dataset}, {source_tile_package}, {upload_data_to_server}, {scales}, {num_of_caching_service_instances}, {area_of_interest}, {import_extent}, {overwrite})
名称说明数据类型
input_service

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

Image Service; Map Server
source_cache_type

指定将导入到服务器上运行的缓存地图或影像服务的缓存类型。

  • CACHE_DATASET将导入使用 ArcGIS Server 生成的地图或影像服务缓存。 其可用于 ArcGIS Desktop 并通过 ArcGIS Server 地图或影像服务对其进行使用。
  • TILE_PACKAGE将导入为实现共享将缓存数据集添加为图层并合并的单个压缩文件。 可以用于 ArcGIS Pro 中,并与 ArcGIS Maps SDKs for Native Apps 配合使用。
String
source_cache_dataset
(可选)

与数据框名称相匹配的缓存文件夹的路径。 您不必指定已注册的服务器缓存目录;通常,需要指定磁盘上之前已导入切片的位置。 ArcGIS Server 账户应能访问此位置。 如果无法向 ArcGIS Server 账户授予此位置的访问权限,请将 upload_data_to_server 参数设置为 UPLOAD_DATA

Raster Dataset
source_tile_package
(可选)

将导入的切片包 (.tpk) 所在的路径。 ArcGIS Server 账户应能访问此位置。 将切片包文件导入到缓存的地图或影像服务时,将忽略 upload_data_to_server 参数,因为该参数自动设置为 UPLOAD_DATA

File
upload_data_to_server
(可选)

指定将切片移至服务器缓存目录的方式。

如果 ArcGIS Server 账户没有源缓存的读取权限,请将此参数设置为 UPLOAD_DATA。 工具会在源缓存移至 ArcGIS Server 缓存目录前将其上传到 ArcGIS Server 上传目录。

  • UPLOAD_DATA首先将切片放在服务器上传目录中,随后将其移至服务器缓存目录。 如果 source_cache_typeTILE_PACKAGE,则将默认启用此功能。
  • DO_NOT_UPLOAD将切片直接导入服务器缓存目录。 ArcGIS Server 账户必须有源缓存的读取权限。
Boolean
scales
[scales,...]
(可选)

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

Double
num_of_caching_service_instances
(可选)

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

Long
area_of_interest
(可选)

对将切片导入到缓存时所处的位置进行空间约束的感兴趣区域面。 此参数在导入形状不规则区域的切片时非常有用,因为该工具会按像素分辨率裁剪与面相交的缓存数据集,然后将其导入到服务器缓存目录。

如果未提供该参数的值,则将使用导入范围参数的值。 默认情况下将使用地图的全图范围。

Feature Set
import_extent
(可选)

矩形范围,用于定义将导入到缓存的切片。 默认情况下,此范围将设置为要导入切片所属的地图服务的全图范围。 可选感兴趣区域参数允许您使用不规则形状对已导入切片进行空间约束。 如果为两个参数都提供了值,则感兴趣区域参数的优先级高于导出范围。

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

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

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

派生输出

名称说明数据类型
out_job_url

输出 URL。

String

代码示例

ImportMapServerCache 示例 1(独立脚本)

将缓存数据集导入到默认比例级数的缓存服务。 接收缓存中的切片将被正在导入的切片所覆盖。

# Name: ImportMapServerCache.py
# Description: The following stand-alone script demonstrates how to import map
#               server cache from a source directory with CACHE_DATASET and
#               OVERWRITE existing cache on the service for the number
#               of scales specified without Uploading data to server
# Requirements: os, sys, time and traceback modules

# Any line that begins with a pound sign is a comment and will not be executed
# Empty quotes take the default value.
# To accept arguments from the command line replace values of variables to
#                                                           "sys.argv[]"

# Import system modules
import arcpy
from arcpy import env
import os, sys, time, datetime, traceback, string

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

# List of input variables for map service properties
connectionFile      = r"C:\Users\<username>\AppData\Roaming\ESRI\Desktop10.1\ArcCatalog"
server              = "arcgis on MyServer_6080 (publisher)"
serviceName         = "Rainfall.MapServer"
inputService        = connectionFile + "\\" + server + "\\" + serviceName
sourceCacheType     = "CACHE_DATASET"
sourceCacheDataset  = "C:/data/destination_folder/Layers"
sourceTilePackage   = ""
uploadDataToServer  = "DO_NOT_UPLOAD"
scales              = [500000,250000,125000,64000]
numOfCachingServiceInstances = "2"
areaOfInterest      = ""
importExtents       = ""
overwriteTiles      = "OVERWRITE"

currentTime         = datetime.datetime.now()
arg1                = currentTime.strftime("%H-%M")
arg2                = currentTime.strftime("%Y-%m-%d %H:%M")
file                = 'C:/data/report_%s.txt' % arg1

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

# use "scales[0]","scales[-1]","scales[0:3]"

try:
    starttime = time.clock()
    result = arcpy.server.ImportMapServerCache(inputService, sourceCacheType,
                                               sourceCacheDataset,
                                               sourceTilePackage,
                                               uploadDataToServer, scales,
                                               numOfCachingServiceInstances,
                                               areaOfInterest, importExtents,
                                               overwriteTiles)
    finishtime = time.clock()
    elapsedtime = finishtime - starttime

    #print messages to a file
    while result.status < 4:
        time.sleep(0.2)
    resultValue = result.getMessages()
    report.write ("completed " + str(resultValue))

    print("Imported Map server Cache Tiles successfully for" + serviceName + \
        " from" + sourceCacheDataset + "\n in " + str(elapsedtime)+ "sec on " + arg2)

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

print("Imported Map server Cache Tiles ")

report.close()
ImportMapServerCache 示例 2(独立脚本)

将感兴趣区域的缓存切片从切片包导入到缓存服务。

# Name: ImportMapServerCache.py
# Description: The following stand-alone script demonstrates how to import map
#               server cache from a source directory with Tile Package to an existing service for
#               the default number of scales specified using an AOI by uploading data to remote server
# To Import cache tiles for the scales specified for given feature class

# Requirements: os, sys, time and traceback modules
# Author: ESRI

# Any line that begins with a pound sign is a comment and will not be executed
# Empty quotes take the default value.
# To accept arguments from the command line replace values of variables to
#                                                           "sys.argv[]"

# Import system modules
import arcpy
from arcpy import env
import os, sys, time, datetime, traceback, string

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

# List of input variables for map service properties
connectionFile = r"C:\Users\<username>\AppData\Roaming\ESRI\Desktop10.1\ArcCatalog"
server = "arcgis on MyServer_6080 (publisher)"
serviceName = "Rainfall.MapServer"
inputService = connectionFile + "\\" + server + "\\" + serviceName
sourceCacheType = "TILE_PACKAGE"
sourceCacheDataset = ""
sourceTilePackage = "C:\\data\\destination_folder\\TPK\\Rainfall.tpk"
uploadDataToServer = "UPLOAD_DATA"
scales = [500000,250000,125000,64000]
numOfCachingServiceInstances = "2"
cacheDir = "c:\\arcgisserver\\arcgiscache"
areaOfInterest = "C:/data/101/Portland/Portland_Metro.shp"
importExtents = ""
overwriteTiles = "MERGE"

currentTime = datetime.datetime.now()
arg1 = currentTime.strftime("%H-%M")
arg2 = currentTime.strftime("%Y-%m-%d %H:%M")
file = 'C:/data/report_%s.txt' % arg1

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

# use "scales[0]","scales[-1]","scales[0:3]"

try:
    starttime = time.clock()
    result = arcpy.server.ImportMapServerCache(inputService, sourceCacheType,
                                               sourceCacheDataset,
                                               sourceTilePackage,
                                               uploadDataToServer, scales,
                                               numOfCachingServiceInstances,
                                               areaOfInterest, importExtents,
					       overwriteTiles)
    finishtime = time.clock()
    elapsedtime = finishtime - starttime
    #print messages to a file
    while result.status < 4:
        time.sleep(0.2)
    resultValue = result.getMessages()
    report.write ("completed " + str(resultValue))

    print("Imported Map server Cache Tiles successfully for " + serviceName + \
        " from " + sourceTilePackage + " to " + cacheDir + "\n using "+ areaOfInterest + \
        " in " + str(elapsedtime) + " sec \n on  " + arg2)

except Exception as e:
    # If an error occurred, print line number and error message
    tb = sys.exc_info()[2]
    report.write("Failed at step 2 \n" "Line %i" % tb.tb_lineno)
    report.write(str(e))

report.close()

print("Imported Map server Cache Tiles for the given feature class")

环境

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

许可信息

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

相关主题