矢量图形去掉尖角(简化面)

arcpy中,简化面对应的代码:(帮助文档的例子2)

# 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")

1)工作空间设置

arcpy.env.workspace = "C:/data/Portland.gdb/Hydrography"
  • arcpy.env.workspace 是 ArcPy 的环境设置之一,用于指定当前的工作空间。

  • 工作空间是 ArcGIS 中用于存储和管理数据的目录或地理数据库。

2)使用 ArcPy 的 EliminatePolygonPart 工具来移除多边形要素类中的小部分(例如小岛或孔洞)。

条件参数
  • 简化容差参数值用于确定简化程度。容差越大,生成的几何越粗糙。容差越小,生成的几何越接近输入几何。

  • 输入参数
  • inLakeFeatures

    • 输入要素类,表示包含多边形(如湖泊)的数据。

    • 示例:"lakes"(要素类名称)或 "C:/data/Portland.gdb/Hydrography/lakes"(完整路径)。

  • eliminatedFeatures

    • 输出要素类路径,表示移除小部分后的结果。

    • 示例:"C:/data/PortlandOutput.gdb/lakes_eliminated"

  • 100

    • 面积阈值(单位与输入要素类的坐标系一致)。

    • 面积小于 100 平方米的部分将被移除。

  • "OR"

    • 条件类型,表示移除满足面积  周长条件的部分。

    • 可选值:

      • "AREA":仅根据面积条件移除。

      • "PERIMETER":仅根据周长条件移除。

      • "OR":根据面积或周长条件移除。

      • "AND":根据面积和周长条件移除。

  • 0

    • 周长阈值(单位与输入要素类的坐标系一致)。

    • 如果条件类型为 "OR" 或 "PERIMETER",周长小于该值的部分将被移除。

    • 在本例中,周长阈值为 0,表示仅根据面积条件移除。

  • "CONTAINED_ONLY"

    • 指定移除部分的类型。

    • 可选值:

      • "CONTAINED_ONLY":仅移除完全包含在多边形内的部分(如小岛)。

      • "ANY":移除所有满足条件的部分(包括孔洞和小岛)。

3)核心语句:(这里还做了平滑处理)

CA.SimplifyPolygon(eliminatedFeatures, simplifiedFeatures, "POINT_REMOVE", 50, 200, "#", "KEEP_COLLAPSED_POINTS")
CA.SmoothPolygon(simplifiedFeatures, smoothedFeatures, "PAEK", 100, "FLAG_ERRORS")
  • 1)SimplifyPolygon 用于简化多边形的边界,移除不必要的顶点,同时保留其基本形状。

  • eliminatedFeatures

    • 输入要素类,表示已经移除小部分(如小岛)的多边形数据。

    • 示例:"C:/data/PortlandOutput.gdb/lakes_eliminated"

  • simplifiedFeatures

    • 输出要素类路径,表示简化后的结果。

    • 示例:"C:/data/PortlandOutput.gdb/lakes_simplified"

  • "POINT_REMOVE"

    • 简化算法,表示使用点移除算法(Douglas-Peucker 算法)。

    • 其他可选算法:

      • "BEND_SIMPLIFY":弯曲简化算法。

  • 50

    • 简化容差(单位与输入要素类的坐标系一致)。

    • 容差值越大,简化程度越高。

  • 200

    • 最小面积(单位与输入要素类的坐标系一致)。

    • 面积小于该值的多边形部分会被移除。

  • "#"

    • 可选参数,表示不使用拓扑检查。

  • "KEEP_COLLAPSED_POINTS"

    • 指定如何处理折叠的点(即简化后可能产生的无效几何)。

    • 可选值:

      • "KEEP_COLLAPSED_POINTS":保留折叠的点。

      • "NO_CHECK":不检查折叠的点。

2)SmoothPolygon 用于平滑多边形的边界,使其更加自然。

  • simplifiedFeatures

    • 输入要素类,表示简化后的多边形数据。

    • 示例:"C:/data/PortlandOutput.gdb/lakes_simplified"

  • smoothedFeatures

    • 输出要素类路径,表示平滑后的结果。

    • 示例:"C:/data/PortlandOutput.gdb/lakes_smoothed"

  • "PAEK"

    • 平滑算法,表示使用 PAEK(Polynomial Approximation with Exponential Kernel)算法。

    • 其他可选算法:

      • "BEZIER_INTERPOLATION":贝塞尔插值算法。

  • 100

    • 平滑容差(单位与输入要素类的坐标系一致)。

    • 容差值越大,平滑程度越高。

  • "FLAG_ERRORS"

    • 指定如何处理拓扑错误。

    • 可选值:

      • "FLAG_ERRORS":标记拓扑错误。

      • "NO_CHECK":不检查拓扑错误。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值