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"
:不检查拓扑错误。
-
-