ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • 帮助
  • Sign Out
ArcGIS Desktop

ArcGIS Online

专为贵组织打造的制图平台

ArcGIS Desktop

全面的专业性 GIS

ArcGIS Enterprise

面向企业的 GIS

ArcGIS for Developers

用于构建位置感知应用程序的工具

ArcGIS Solutions

适用于行业的免费模板地图和应用程序

ArcGIS Marketplace

获取适用于组织的应用程序和数据

  • 文档
  • 支持
Esri
  • 登录
user
  • 我的个人资料
  • 登出

ArcMap

  • 主页
  • 入门
  • 地图
  • 分析
  • 管理数据
  • 工具
  • 扩展模块

简化面

  • 摘要
  • 插图
  • 用法
  • 语法
  • 代码示例
  • 环境
  • 许可信息

摘要

在不改变基本几何形状的情况下,通过移除相对多余的折点来简化面轮廓。

了解有关简化线和简化面工作原理的详细信息

插图

简化面工具所使用的三种简化算法的比较

用法

  • 此工具针对不同目的采用不同的简化算法:

    • POINT_REMOVE 算法的工作原理是识别并移除相对多余的折点来简化数据,以便能够以较小的比例进行显示。这是此工具中最快的简化算法。这种算法通常用于数据压缩或粗糙的简化。随着容差的增大,生成的面轮廓中有棱角的部分将显著增加。这种算法基于道格拉斯-普克算法:Douglas, David and Peucker, Thomas, "Algorithms for the reduction of the number of points required to represent a digitized line or its caricature," The Canadian Cartographer. 10(2), 112-122 (1973)。
    • BEND_SIMPLIFY 算法的工作原理是识别并消除相对不太重要的折弯来简化数据,以便能够以较小的比例进行显示。相比于 POINT_REMOVE 算法,这种算法生成的结果更接近输入几何,但可能需要更多的处理时间。此法速度较慢,但通常会生成与原始要素更为接近的结果。其操作方式为消除沿面轮廓不太重要的折弯。这种算法基于 Wang, Zeshen and Müller, Jean-Claude, "Line Generalization Based on Analysis of Shape Characteristics," Cartography and Geographic Information Systems 25(1), 3–15 (1998) 中定义的算法。
    • WEIGHTED_AREA 算法的工作原理是首先识别每个折点的有效三角形面积。随后采用一系列度量对这些三角形进行加权以对比每个面积的平面度、偏度和凸度。通过加权后的面积指导移除相应折点以简化面轮廓,同时尽可能多地保留特性。这种算法基于 Zhou, Sheng and Jones, Christopher B., (2005) Shape-Aware Line Generalisation with Weighted Effective Area" in Fisher, Peter F. (Ed.) Developments in Spatial Handling 11th International Symposium on Spatial Handling, 369–80 中定义的算法。

  • 简化容差参数值用于确定简化程度。容差越大,生成的几何越粗糙。容差越小,生成的几何越接近输入几何。MinSimpTol 和 MaxSimpTol 字段将被添加至输出以存储使用过的容差。

    • 对于 POINT_REMOVE 算法,容差表示每个折点与新创建的线之间的最大允许垂直距离。
    • 对于 BEND_SIMPLIFY 算法,容差表示近似于有效折弯的圆的直径。
    • 对于 WEIGHTED_AREA 算法,容差的平方表示由三个相邻折点定义的有效三角形的面积。

  • 任何小于最小面积参数的面都将从输出要素类中移除。对于一组共享公共边的相邻面,最小面积适用于该组面的总面积。使用保留折叠点参数来将移除的面记录为点要素。

  • 多部分 (Multipart) 面可简化为单部分。

  • 使用保留折叠点参数(Python 中的 collapsed_point_option)来创建一个输出点要素类,以存储用于表示因低于最小面积而被移除的任何面的点。已派生点输出;它将与输出要素类参数(Python 中的 out_feature_class)使用相同的名称和位置,但带有 _Pnt 后缀。输出面要素类包含输入要素类中的所有字段。输出点要素类不包含任何这些字段。

  • 输出面要素类具有正确的拓扑。输入数据中的任何拓扑错误都会在输出面要素类中标记出来。输出要素类包括含有相应输入要素 ID 和输入拓扑错误的两个附加字段:InPoly_FID 和 SimPgnFlag。SimPgnFlag 值为 1 表示存在拓扑错误;值为 0 (零)表示不存在错误。

    旧版本:

    在之前版本的工具中,可能会在处理期间生成拓扑错误。为了脚本和模型的兼容性,工具语法中仍然包含处理拓扑错误(Python 中的 error_option)参数,但现在该参数已被忽略并从工具对话框中隐藏。

    SimPgnFlag 字段用来在输出要素类中标记工具在处理过程中引入的拓扑错误。现在,该字段用于标记输入中存在的错误。另外,在拓扑分辨率课程中,之前版本的工具已针对每个要素修改了容差并将这些值存储在 MinSimpTol 和 MaxSimpTol 字段中。在当前实施中,这些字段中的值将相同并等于在简化容差参数中指定的容差。请确保根据这些字段修改现有模型或脚本。

  • 使用输入障碍图层参数来标识不得被简化面越过的要素。障碍要素可以是点、线或面。

  • 处理大型数据集可能会超出内存限制。在这种情况下,考虑通过在制图分区环境设置中确定一个相关的面要素类来通过分区处理输入数据。将按顺序处理分区边界定义的数据部分。生成的输出要素类无缝,而且在分区边界一致。有关详细信息,请参阅使用分区概化大型数据集。

语法

SimplifyPolygon_cartography (in_features, out_feature_class, algorithm, tolerance, {minimum_area}, {error_option}, {collapsed_point_option}, {in_barriers})
参数说明数据类型
in_features

要简化的输入面要素。

Feature Layer
out_feature_class

简化后的输出面要素类。其中包含输入要素类中的所有字段。输出面要素类具有正确的拓扑。该工具不会引入拓扑错误,但输入数据中的拓扑错误会在输出面要素类中标记出来。输出要素类包括含有相应输入要素 ID 和输入拓扑错误的两个附加字段:InPoly_FID 和 SimPgnFlag。SimPgnFlag 值 1 表示存在输入拓扑错误;值 0 (零)表示不存在输入错误。

Feature Class
algorithm

指定面简化算法。

  • POINT_REMOVE —保留构成面轮廓的基本形状的关键点,而移除所有其他点。这是默认设置。
  • BEND_SIMPLIFY —保留线中的关键折弯,并移除多余折弯。
  • WEIGHTED_AREA —保留形成有效三角形面积的折点。
String
tolerance

容差用于确定简化程度。可以选择首选单位;否则,将使用输入单位。MinSimpTol 和 MaxSimpTol 字段将被添加至输出以存储在执行处理时使用过的容差。

  • 对于 POINT_REMOVE 算法,容差表示每个折点与新创建的线之间的最大允许垂直距离。
  • 对于 BEND_SIMPLIFY 算法,容差表示近似于有效折弯的圆的直径。
  • 对于 WEIGHTED_AREA 算法,容差的平方表示由三个相邻折点定义的有效三角形的面积。
Linear Unit
minimum_area
(可选)

设置要保留的面的最小面积。默认值为零,即保留所有面。可以为指定的值选择首选单位;否则,将使用输入单位。

Areal Unit
error_option
(可选)
旧版本:

这是一个不再使用的旧参数。以前使用该参数来指示如何处理可能在处理过程中引入的拓扑错误。为了脚本和模型的兼容性,工具语法中仍然包含此参数,但其已从工具对话框中隐藏。

String
collapsed_point_option
(可选)

指示是否创建输出点要素类以存储因小于 minimum_area 参数而被移除的任何面的中心。已派生点输出;它将与您以 out_feature_class 参数指定的面输出要素类使用相同的名称,但带有 _Pnt 后缀,不过它们位于相同文件夹中。

  • KEEP_COLLAPSED_POINTS —在派生的输出点要素类中记录因小于最小面积而被移除的面的中心。这是默认设置。
  • NO_KEEP —不创建派生的输出点要素类。
Boolean
in_barriers
[in_barriers,...]
(可选)

包含充当简化障碍的要素的输入。生成的简化面不会接触或越过障碍要素。例如,当简化森林覆盖区域时,生成的简化森林面不会越过被定义为障碍的道路要素。

Feature Layer

派生输出

名称说明数据类型
out_point_feature_class

代码示例

SimplifyPolygon 示例(Python 窗口)

以下 Python 窗口脚本演示了如何在即时模式下使用 SimplifyPolygon 工具。

import arcpy
import arcpy.cartography as CA
arcpy.env.workspace = "C:/data"
CA.SimplifyPolygon("soils.shp", "C:/output/output.gdb/simplified_soils", "POINT_REMOVE", 100)
SimplifyPolygon 示例 2(独立脚本)

以下独立脚本演示了如何使用 SimplifyPolygon 工具。

# Name: SimplifyPolygon_Example2.py
# Description: Eliminate small islands before simplifying and smoothing lake boundaries
 
# Import system modules
import arcpy
import arcpy.management as DM
import arcpy.cartography as CA
 
# Set environment settings
arcpy.env.workspace = "C:/data/Portland.gdb/Hydrography"
 
# Set local variables
inLakeFeatures = "lakes"
eliminatedFeatures = "C:/data/PortlandOutput.gdb/lakes_eliminated"
simplifiedFeatures = "C:/data/PortlandOutput.gdb/lakes_simplified"
smoothedFeatures = "C:/data/PortlandOutput.gdb/lakes_smoothed"
# Eliminate small islands in lake polygons.
DM.EliminatePolygonPart(inLakeFeatures, eliminatedFeatures, 100, "OR", 0, "CONTAINED_ONLY")
 
# Simplify lake polygons.
CA.SimplifyPolygon(eliminatedFeatures, simplifiedFeatures, "POINT_REMOVE", 50, 200, "#", "KEEP_COLLAPSED_POINTS")
 
# Smooth lake polygons.
CA.SmoothPolygon(simplifiedFeatures, smoothedFeatures, "PAEK", 100, "FLAG_ERRORS")

环境

  • 制图分区
  • 当前工作空间
  • 默认输出 Z 值
  • 输出 M 值域
  • 输出 XY 值域
  • 输出坐标系
  • 范围
  • 输出包含 M 值
  • 输出包含 Z 值
  • 临时工作空间
  • XY 容差

许可信息

  • ArcGIS Desktop Basic: 否
  • ArcGIS Desktop Standard: 是
  • ArcGIS Desktop Advanced: 是

相关主题

  • 制图综合工具集概述
  • 了解冲突解决和制图综合
  • 通过地理处理自动化冲突解决和制图综合的工作流
  • 简化线
  • 简化建筑物
  • 简化线和简化面的工作原理

ArcGIS Desktop

  • 主页
  • 文档
  • 支持

ArcGIS 平台

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

关于 Esri

  • 关于我们
  • 招贤纳士
  • Esri 博客
  • 用户大会
  • 开发者峰会
Esri
分享您的想法。
Copyright © 2019 Esri. | 隐私政策 | 法律声明