简化建筑物 (Coverage)
插图
用法
-
输入 Coverage 必须有多边形拓扑。
-
由于存在创建叠置边界的可能性,因此初始区域可用作生成的要素。要从初始区域创建完全构建的区域,请在 out_cover 上使用清理和 POLY 选项。
-
如果 in_cover 非常大,此工具的运行时间将会相当长。要使其运行得更快,请在输入 Coverage 上使用 Arc 命令 INDEX(关于命令参考,请参见 ArcInfo Workstation 帮助)创建空间索引。
-
将创建以下信息表:output_coverage.bnd、output_coverage.tic、output_coverage.aat 和 output_coverage.patbldgsim。
-
out_cover.aat 将存储新弧线,且不含有来自 input_coverage.aat 的任何信息。
-
in_cover 中的所有路径和区域属性以及拓扑都会丢失。
-
将 input_coverage.pat 中的所有属性(AREA 和 PERIMETER 除外)复制到 output_coverage.patbldgsim。此工具不会计算初始区域的 AREA 值,但在 output_coverage.PATBLDGSIM 中将 AREA 值设置为零并计算 PERIMETER。具有 POLY 选项的清理工具将计算 AREA 值。
-
output_coverage.patbldgsim 也将包含两个新项目:BDS-STATUS 和 BDS-GROUP。项目 BDS-STATUS 记录以下简化状态:
- 已简化独立建筑物
- 由于空间冲突,部分简化独立建筑物
- 生成的建筑物中出现短侧
- 与直线相连接的建筑物已简化或部分简化
- 未简化
项目 BDS-GROUP 存储每组已连接建筑物的唯一正值。单座建筑物接收的 BDS-GROUP 值为 0。带有孔洞的单座建筑物的外边界和内边界接收唯一负值。
-
如果未指定选择文件,或者选择文件不包含多边形,则选择输入 Coverage 中的所有多边形进行简化处理。如果选择文件不包含多边形要素类,或者选择文件与输入 Coverage 不匹配(即,选择文件不是源自输入 Coverage),则程序将停止。
-
如果检测到组中有 500 多个相邻多边形,工具将停止并返回以下消息:“检测到 500 多个相邻多边形。进程已停止。”
语法
参数 | 说明 | 数据类型 |
in_cover |
包含建筑物多边形的输入 Coverage。 | Coverage |
out_cover |
包含作为初始区域的已简化建筑物和子类 BLDGSIM 的输出 Coverage。输出 Coverage 的名称必须不同于输入 Coverage 的名称。 | Coverage |
simplification_tolerance |
以 Coverage 单位为单位设置简化容差。必须指定容差,且容差必须大于零。 | Double |
minimum_area (可选) |
以 Coverage 单位为单位设置要保留的最小面积。默认值是简化容差的平方。输入 0 以包括所有建筑物。 | Double |
selection_file (可选) |
使用 ArcPlot 命令 WRITESELECT(有关命令参考,请参见 ArcInfo Workstation 帮助)创建的特殊文件。此文件用于确定在 ArcPlot 中选择的 Coverage 要素。此选项允许您简化输入 Coverage 中的选定建筑物。 | File |
CheckConflict (可选) |
指定是否检查建筑物之间的潜在冲突,即叠置或接触。
| Boolean |
代码实例
以下独立脚本演示如何简化建筑物 Coverage。
# Name: SimplifyBuilding_Example.py
# Description: Simplifies a building coverage
# Requirements: ArcInfo Workstation
# Import system modules
import arcpy
from arcpy import env
# Set environment settings
env.workspace = "C:/data"
# Set local variables
inCover = "campus"
outCover = "C:/output/cartocampus"
simplificationTolerance = 6
minimumArea = 55
checkConflict = "CHECK_CONFLICT"
# Execute SimplifyBuilding
arcpy.SimplifyBuilding_arc(inCover, outCover, simplificationTolerance,
minimumArea, "", checkConflict)
arcpy.Clean_arc(outCover)