同步镶嵌数据集 (Data Management)
摘要
使用最初添加镶嵌数据集时所使用的栅格类型及选项,在镶嵌数据集中重新构建或更新每个栅格项目,并在属性表中更新受影响的字段。
同步是一个单向操作:源数据中的更改可以同步到镶嵌数据集的属性表,但属性表中的更改不会影响源数据(但可能会被同步内容所覆盖)。
同步时所做的更改无法撤消。如果对可能被覆盖的镶嵌数据进行修改,则可能需要创建备份副本。
用法
-
可以将选择集用于此工具,用以限制待更新的栅格项目。如果进行选择或查询,则仅处理这些项目。
同步可以添加新项目、更新现有项目或移除项目。
过时项目是指自镶嵌数据集创建以来或上次同步镶嵌数据集后更改的源栅格。例如,可能已更新地理配准,或者可能已构建金字塔。
由于栅格项目已重新构建,因此自上次构建以来对这些项目所做的任何修改(例如编辑属性表中的函数或内容)都会丢失。
如果选择移除数据源已损坏的项目,请确保所有网络连接正常工作,因为此工具会移除无法访问的所有项目。
此工具还可对源栅格构建金字塔和计算统计数据,并可为栅格项目创建缩略图和栅格缓存。
此工具对于使镶嵌数据集保持最新状态特别有用。如果新的栅格数据集已添加至此镶嵌数据集访问的工作空间,则新的栅格数据集就可以添加到镶嵌数据集中。用外部托管数据库中的表填充的镶嵌数据集也可以使用此工具进行更新。
在完成同步后,将执行镶嵌数据集选项中列出的操作。
此工具可用于为镶嵌数据集中的项目生成缓存。始终可以进行缓存的项目可使用以下数据进行创建:LAS 文件、LAS 数据集和 terrain。项目还可使用缓存栅格函数进行缓存。
语法
参数 | 说明 | 数据类型 |
in_mosaic_dataset |
镶嵌数据集的路径和名称。 | Mosaic Layer |
where_clause (可选) |
可以使用 SQL 定义查询,或者使用查询构建器构建查询。 | SQL Expression |
new_items (可选) | 选择镶嵌数据集是否与新添加的项目进行同步。如果选择使用此选项,则将为新数据搜索项目的工作空间。当数据添加到镶嵌数据集后,其使用的栅格类型将与同一工作空间内的其他项目相同。 如果选择使用新项目进行更新,则可以选择是否更新像元大小范围、边界或概视图。
| Boolean |
sync_only_stale (可选) |
选择是更新所有主要项,还是仅更新过时的主要项。 如果在创建项目后,修改用于构建栅格值的相应源文件,则此项目被视为过时。例如,可能已更新地理配准,或者可能已构建金字塔。
| Boolean |
update_cellsize_ranges (可选) | 选择是否更新像元大小范围。
| Boolean |
update_boundary (可选) | 选择是否更新边界。
| Boolean |
update_overviews (可选) | 选择是否更新所有废弃的概视图。如果修改过任何基础栅格,则概视图变为废弃项。
| Boolean |
build_pyramids (可选) |
选择是否为指定的镶嵌数据集项构建金字塔。可以为镶嵌数据集中的每个栅格项目构建金字塔。金字塔可以提高每个栅格的显示速度。
如果在运行此工具的同一实例中添加项目,则不会为新添加的项目构建金字塔。 | Boolean |
calculate_statistics (可选) |
选择是否为指定的镶嵌数据集项计算统计数据。可以为镶嵌数据集中的每个栅格项目计算统计数据。在执行某些任务时(如应用对比度拉伸),需要对镶嵌数据集进行统计。
如果在运行此工具的同一实例中添加项目,则不会为新添加的项目构建统计数据。 | Boolean |
build_thumbnails (可选) |
选择是否为指定的镶嵌数据集项构建缩略图。缩略图是可为镶嵌定义中的每个栅格项目创建的较小的高度重采样图像。可在以影像服务形式访问镶嵌数据集时访问缩略图,缩略图将显示为元数据(项目描述)的一部分。
如果在运行此工具的同一实例中添加项目,则不会为新添加的项目构建缩略图。 | Boolean |
build_item_cache (可选) | 选择是否为指定的镶嵌数据集项构建缓存。在使用 LAS、Terrain 或 LAS 数据集栅格类型添加数据时,可以创建缓存。项目还可使用“缓存栅格函数”进行缓存。
如果在运行此工具的同一实例中添加项目,则不会为新添加的项目构建缓存。 | Boolean |
rebuild_raster (可选) | 选择是否使用原始栅格类型从数据源重新构建栅格项目。
此操作仅影响要同步的项目。如果已选择 UPDATE_WITH_NEW_ITEMS,则此参数不适用。 | Boolean |
update_fields (可选) | 选择是否更新表中的字段。此操作仅影响要同步的项目。
如果选择更新字段,则可通过在 fields_to_update 参数中选择要更新的字段来控制它们。如果已编辑某些字段,则可能需要在 fields_to_update 参数中将其取消选择。 | Boolean |
fields_to_update [field_to_update,...] (可选) | 指定应更新的字段。 此参数仅在 update_fields 参数的选项为 UPDATE_FIELDS 时才有效。 如果已编辑某些字段,则可能需要确保不列出它们。 即使不使用 REBUILD_RASTER 关键字,也可刷新“栅格”列。但是,如果使用 REBUILD_RASTER,则即使不指定“栅格”字段,也会重新构建“栅格”列。 | String |
existing_items (可选) | 选择是否要在镶嵌数据集内更新现有项目。 如果选择此选项,则随后可选择要更新的现有参数:sync_only_stale、build_pyramids、calculate_statistics、build_thumbnails、build_item_cache、update_raster、update_fields 或 fields_to_update。
| Boolean |
broken_items (可选) | 选择是否要移除所有损坏的链接。 请确保所有网络连接正常工作,因为此工具会移除无法访问的所有项目。
| Boolean |
代码实例
这是 SynchronizeMosaicDataset 的 Python 示例。
import arcpy
arcpy.SynchronizeMosaicDataset_management("c:/data/syncmd.gdb/md", "Year>1999", \
"NO_NEW_ITEMS", "SYNC_STALE", "#", \
"#", "#", "NO_PYRAMIDS", "NO_STATISTICS", \
"NO_THUMBNAILS", "NO_ITEM_CACHE", \
"NO_RASTER", "NO_FIELDS", "#")
这是 SynchronizeMosaicDataset 的 Python 脚本示例。
#============================
#Synchronize Mosaic Dataset
'''Usage: SynchronizeMosaicDataset_management(in_mosaic_dataset, {where_clause}, {NO_NEW_ITEMS |
UPDATE_WITH_NEW_ITEMS}, {SYNC_STALE | SYNC_ALL},
{UPDATE_CELL_SIZES | NO_CELL_SIZES}, {UPDATE_BOUNDARY |
NO_BOUNDARY}, {NO_OVERVIEWS | UPDATE_OVERVIEWS},
{NO_PYRAMIDS | BUILD_PYRAMIDS}, {NO_STATISTICS |
CALCULATE_STATISTICS}, {NO_THUMBNAILS |
BUILD_THUMBNAILS}, {NO_ITEM_CACHE | BUILD_ITEM_CACHE},
{UPDATE_RASTER | NO_RASTER}, {UPDATE_FIELDS | NO_FIELDS},
{fields_to_update;fields_to_update...},
{UPDATE_EXISTING_ITEMS | IGNORE_EXISTING_ITEMS},
{IGNORE_BROKEN_ITEMS | REMOVE_BROKEN_ITEMS})
'''
try:
import arcpy
arcpy.env.workspace = r"C:/Workspace"
# Synchronize source and add new data
mdname = "syncmd.gdb/mdnew"
query = "#"
updatenew = "UPDATE_WITH_NEW_ITEMS"
syncstale = "SYNC_STALE"
updatecs = "#"
updatebnd = "#"
updateovr = "#"
buildpy = "NO_PYRAMIDS"
calcstats = "NO_STATISTICS"
buildthumb = "NO_THUMBNAILS"
buildcache = "NO_ITEM_CACHE"
updateras = "NO_RASTER"
updatefield = "NO_FIELDS"
fields = "#"
arcpy.SynchronizeMosaicDataset_management(mdname, query, updatenew, syncstale,
updatecs, updatebnd, updateovr, buildpy,
calcstats, buildthumb, buildcache,
updateras, updatefield, fields)
# Synchronize data item after Year 1999
# Add new data if available from the source
# Do not update fields from source raster
mdname = "syncmd.gdb/md"
query = "Year>1999"
updatenew = "NO_NEW_ITEMS"
syncstale = "SYNC_STALE"
updatecs = "#"
updatebnd = "#"
updateovr = "#"
buildpy = "#"
calcstats = "#"
buildthumb = "BUILD_THUMBNAILS"
buildcache = "#"
updateras = "NO_RASTER"
updatefield = "NO_FIELDS"
fields = "#"
arcpy.SynchronizeMosaicDataset_management(mdname, query, updatenew, syncstale,
updatecs, updatebnd, updateovr, buildpy,
calcstats, buildthumb, buildcache,
updateras, updatefield, fields)
# Synchronize LAS mosaic dataset and build cache
# Rebuild raster item from source data and do not update Point Spacing
mdname = "syncmd.gdb/lasmd"
query = "#"
updatenew = "NO_NEW_ITEMS"
syncstale = "SYNC_ALL"
updatecs = "#"
updatebnd = "#"
updateovr = "#"
buildpy = "#"
calcstats = "#"
buildthumb = "BUILD_THUMBNAILS"
buildcache = "BUILD_ITEM_CACHE"
updateras = "UPDATE_RASTER"
updatefield = "UPDATE_FIELDS"
fields = "PointCount;Version;ZMax;ZMin"
arcpy.SynchronizeMosaicDataset_management(mdname, query, updatenew, syncstale,
updatecs, updatebnd, updateovr, buildpy,
calcstats, buildthumb, buildcache,
updateras, updatefield, fields)
# Remove broken items from mosaic dataset
mdname = "syncmd.gdb/mdbroken"
query = "#"
updatenew = "NO_NEW_ITEMS"
syncstale = "SYNC_STALE"
updatecs = "#"
updatebnd = "#"
updateovr = "#"
buildpy = "#"
calcstats = "#"
buildthumb = "#"
buildcache = "#"
updateras = "#"
updatefield = "#"
fields = "#"
updateexist = "IGNORE_EXISTING_ITEMS"
removebroken = "REMOVE_BROKEN_ITEMS"
arcpy.SynchronizeMosaicDataset_management(mdname, query, updatenew, syncstale,
updatecs, updatebnd, updateovr, buildpy,
calcstats, buildthumb, buildcache,
updateras, updatefield, fields, updateexist,
removebroken)
except:
print "Synchronize Mosaic Dataset example failed."
print arcpy.GetMessages()