迁移大型逻辑示意图数据集时的建议
在迁移包含大量逻辑示意图的逻辑示意图数据集前,建议您检查要迁移的逻辑示意图的大小并分析该逻辑示意图数据集的配置情况。
在以下情况中,迁移将十分耗时且占用内存:
- 您要迁移大量逻辑示意图。
- 您要迁移的逻辑示意图中包含数千个逻辑示意图要素。
- 您的逻辑示意图要素类中存在类型为“查询”、“函数”、“格式化”或“脚本”的逻辑示意图属性。
对于上述情况,强烈建议您按照上一部分(分步迁移大型逻辑示意图数据集)中所述方法迁移您的逻辑示意图数据集。
关于执行并行过程以迁移逻辑示意图时的性能部分将为您提供在可接受的时间段内迁移大量逻辑示意图所需设置的计算机数量以及能够并行执行的过程数量的一些建议。
分步迁移大型逻辑示意图数据集
Phase#1 - 准备要迁移的逻辑示意图数据集
第一阶段包括分析想要迁移的 10 版之前的逻辑示意图数据集的配置情况和组织情况,并使其准备就绪以进行有效迁移:
- 在安装了 ArcGIS Schematics 扩展模块的 10 版之前的客户端上启动 ArcCatalog。
- 浏览并选择想要迁移的 10 版之前的逻辑示意图数据集,然后在 Schematics Designer 中对其进行编辑。
- 分析每个逻辑示意图要素类定义,并检查逻辑示意图要素类中是否存在“查询”、“函数”、“格式化”或“脚本”类型属性。
- 如准备 10 版之前的逻辑示意图数据集主题中所述:
- 验证为每个逻辑示意图要素类设置的空间参考。
- 配置要迁移为容器的所有结点逻辑示意图要素类的 ContainerMark 属性。
- 此外,还可在 10 版之前的逻辑示意图数据集中创建临时逻辑示意图文件夹,并将逻辑示意图的子集移动到临时文件夹中。
Phase#2 - 迁移逻辑示意图数据集定义
第二阶段包括迁移逻辑示意图数据集定义:
- 启动 ArcCatalog。
- 在“目录树”中右键单击想要迁移的 10 版之前的逻辑示意图数据集,然后指向迁移至最新的 Schematics 版本。
- 在打开的选择几何类型 对话框中为要迁移的逻辑示意图结点和绘制类指定几何类型,然后关闭该对话框。
- 在打开的迁移至最新的 Schematics 版本 对话框中:
- 指定您想要迁移至哪个输出逻辑示意图数据集。
- 选中输出活动部分中的定义。
- 单击确定。
Phase#3 - 同时迁移逻辑示意图的各子集
第三阶段的重点在于迁移 10 版之前的逻辑示意图数据集中包含的逻辑示意图。
它包括在不同计算机上运行多个并行迁移过程,每个迁移过程负责处理逻辑示意图的不同子集。
您必须在每台 10.x 计算机上启动一个或多个迁移过程,方法如下:
- 启动 ArcCatalog。
- 在“目录树”中右键单击 10 版之前的逻辑示意图数据集并选择迁移至最新的 Schematics 版本。
- 关闭打开的选择几何类型 对话框。
- 在打开的迁移至最新的 Schematics 版本 对话框中:
- 指定您想要迁移至哪个输出逻辑示意图数据集。
- 在输出活动部分进行如下操作:
- 选中逻辑示意图。
- 选中指定过滤器,并配置 SQL 过滤器以将其用于确定此过程将迁移的逻辑示意图子集;例如,基于 FOLDERID 构建一个 SQL 表达式(该 FOLDERID 与您在 Phase#1 期间创建的某个临时文件夹相对应)。
- 对于那些包含具有“查询”、“函数”、“格式化”或“脚本”类型属性的逻辑示意图要素的逻辑示意图,取消选中含属性求值。注:
如果您的逻辑示意图数据集定义中不存在“查询”、“函数”、“格式化”或“脚本”逻辑示意图属性,则可选中含属性求值复选框。在此情况下,选中或不选中此选项均不会对迁移逻辑示意图所需的时间产生影响。
- 单击确定。
进行每个迁移过程期间,Schematics 将在迁移特定逻辑示意图时检查其是否已存在于输出逻辑示意图数据集中。仅当该逻辑示意图不存在于输出逻辑示意图数据集时才会对其进行迁移。
Phase#4 - 更新迁移的逻辑示意图中逻辑示意图要素的属性(可选)
如果迁移逻辑示意图子集时取消选中了含属性求值选项,则不对为迁移的逻辑示意图的逻辑示意图要素定义的任何“查询”、“函数”、“格式化”或“脚本”类型属性进行求值。在此情况下,需要稍后更新那些属性。
对于基于“标准构建器”或通过自定义查询配置的逻辑示意图,以下 Python 示例脚本将举例说明如何轻松快捷地更新那些属性。它以更新逻辑示意图 GP 工具为基础并可用于多种情况:
- 情况 A - 刷新迁移到特定逻辑示意图文件夹中的所有逻辑示意图的属性
- 情况 B - 刷新基于特定逻辑示意图模板的所有已迁移逻辑示意图的属性
- 情况 C - 刷新 N 天未更新的所有已迁移逻辑示意图的属性
# Name: RefreshingAttributesInMigratedDiagrams.py
# Description: Refreshing attributes on schematic features contained in migrated diagrams
# Requirement: ArcGIS Schematics extension
# import system modules
import arcpy
msgNoLicenseAvailable = "ArcGIS Schematics extension license required"
try:
# Checks out the ArcGIS Schematics extension license
if arcpy.CheckExtension("Schematics") == "Available":
arcpy.CheckOutExtension("Schematics")
else:
raise Exception(msgNoLicenseAvailable)
# Sets Schematics general settings
dataLocation="C:/ArcGIS/ArcTutor/Schematics/Schematics_In_ArcMap"
gdbName="ElecDemo.gdb"
in_schDataset="ElecDemo"
in_schFolder="MyTemporaryFolderName"
in_diagTempName="GeoSchematic"
updateOption="REFRESH"
recOption1="RECURSIVE"
nbDays="60"
# Sets environment settings
arcpy.env.overwriteOutput = True
arcpy.env.workspace = dataLocation + "/" + gdbName
# Case A - Refreshing attributes on schematic diagrams that were migrated on a particular schematic folder.
arcpy.UpdateDiagrams_schematics(in_schDataset + "/" + in_schFolder1,"REFRESH")
# Case B - Refreshing attributes on all migrated schematic diagrams that are based on a specified diagram template.
arcpy.UpdateDiagrams_schematics(in_schDataset, "REFRESH", "RECURSIVE", in_diagTempName)
# Case C - Refreshing attributes on all migrated schematic diagrams that have not been updated for N days.
arcpy.UpdateDiagrams_schematics(in_schDataset, "REFRESH", "RECURSIVE", "#", nbDays)
# Returns the ArcGIS Schematics extension license
arcpy.CheckInExtension("Schematics")
print "Script completed successfully"
except Exception as e:
# If an error occurred, print line number and error message
import traceback, sys
tb = sys.exc_info()[2]
print "An error occurred on line %i" % tb.tb_lineno
print str(e)
REFRESH 构建器选项是此脚本中使用的关键选项。它允许对逻辑示意图内容进行更新,从而仅刷新与网络要素相关联的逻辑示意图要素属性或由自定义查询返回的记录。更新后,对这些网络要素或查询的记录所做的其他任何更改都不会体现在逻辑示意图中。
要在已迁移逻辑示意图中刷新属性,请进行以下操作:
- 启动 ArcCatalog。
- 将脚本复制粘贴到 Python 窗口中。
- 按 Enter 键。
Phase#5 - 重新组织迁移的逻辑示意图数据集(可选)
如果您在 10 版之前的逻辑示意图数据集中创建了临时逻辑示意图文件夹以轻松将逻辑示意图迁移到每个文件夹中,则迁移的逻辑示意图数据集中也将存在这些临时文件夹。您现在可将迁移至这些文件夹的逻辑示意图移动到所需的逻辑示意图位置,然后移除临时文件夹。
关于执行并行过程以迁移逻辑示意图时的性能
要迁移大量大小可观的逻辑示意图(例如,包含 2,000 个逻辑示意图要素的逻辑示意图),建议您在不同计算机上执行多个并行迁移过程,每个迁移过程负责处理逻辑示意图的不同子集。以下部分将详述有关支持迁移过程的客户端计算机以及执行迁移的数据库服务器的要求,包括对这些过程进行尺寸标注的建议。
ArcGIS Desktop 10.2 客户端计算机要求
- 处理器:双核(最低配置)
- 已安装内存 (RAM):最低配置为 4 GB,支持通过执行两个并行过程迁移 1,000 个大型逻辑示意图(每个过程负责处理 500 个逻辑示意图)。
对于执行四个并行过程来迁移 2,000 个大型逻辑示意图(每个过程负责处理 500 个逻辑示意图)的 CPU 消耗,则建议采用 8 GB 的已安装内存。
数据库服务器计算机要求
- 已安装内存 (RAM):16 GB(最低配置)
- 数据库大小:1,000 个逻辑示意图(每个逻辑示意图中包含 2,000 个逻辑示意图要素)需占用约 1.5 GB 磁盘空间,必须正确标注数据库尺寸才能支持要迁移的逻辑示意图的大小。
标注迁移过程尺寸以并行执行
将文件地理数据库中包含的 10 版之前的逻辑示意图迁移到文件或 SDE 地理数据库中是十分迅速的 - 约一小时内可迁移 500 个大型逻辑示意图。然而,将 SDE 地理数据库中存储的 10 版之前的逻辑示意图数据集中包含的逻辑示意图迁移到 SDE 中则需花费较长时间 - 约六小时内迁移 500 个大型逻辑示意图。如果存在大量类型为“查询”、“函数”、“格式化”或“脚本”的逻辑示意图属性,并在迁移期间对这些属性进行求值,那么所需时间可能加倍(即增加至 12 小时)。
如果需要迁移大量逻辑示意图(例如 10,000 个逻辑示意图),可通过进行以下操作在一夜内完成所有迁移:
- 将 10,000 个逻辑示意图分为 20 个子集(例如,将逻辑示意图重新组织为 20 个临时逻辑示意图文件夹)。
- 设置四或五台 Desktop 10.2 客户端计算机。
- 在每台 Desktop 10.2 客户端计算机上启动四或五个并行迁移过程,每个过程负责处理逻辑示意图的特定子集(例如,特定逻辑示意图文件夹)。