碎多边形合并,即将数据集中小于指定面积的多边形合并到相邻的多边形中,支持优先级字段和分组字段。
命名空间:
SuperMap.Analyst.SpatialAnalyst程序集: SuperMap.Analyst.SpatialAnalyst (in SuperMap.Analyst.SpatialAnalyst)
版本: dll
语法
C# |
---|
public static bool Eliminate( DatasetVector sourceDataset, string[] groupFields, string[] priorityFields, double regionTolerance, double vertexTolerance, EliminateMode eliminateMode, bool isDeleteSingleRegion ) |
参数
- sourceDataset
- Type: SuperMap.Data..::.DatasetVector
待进行碎多边形合并的矢量面数据集。
- groupFields
- Type: array<
System..::.String
>[]()[]
分组字段,字段值相同的多边形才可能进行合并。
- priorityFields
- Type: array<
System..::.String
>[]()[]
合并对象的优先级字段,当分组字段不为空时有效。用户可以指定多个优先级字段或不指定。
- regionTolerance
- Type: System..::.Double
指定的最小多边形容限。单位与系统计算的面积(SMAREA 字段)的单位一致。将 SMAREA 字段的值与该容限值对比,小于该值的多边形将被消除。取值范围为大于等于0,指定为小于0的值会抛出异常。
- vertexTolerance
- Type: System..::.Double
指定的节点容限。单位与进行碎多边形合并的数据集单位相同。若两个节点之间的距离小于此容限值,则合并过程中会自动将这两个节点合并为一个节点。取值范围大于等于0,指定为小于0的值会抛出异常。
- eliminateMode
- Type: SuperMap.Analyst.SpatialAnalyst..::.EliminateMode
指定的碎多边形合并方式。目前仅支持“按面积合并”(EliminateMode.EliminateByArea)方式,即将碎多边形合并到与其相邻的具有最大面积的多边形中。
- isDeleteSingleRegion
- Type: System..::.Boolean
指定是否删除孤立的小多边形。如果为 true 会删除孤立的小多边形,否则不删除。
返回值
一个布尔值,如果合并成功返回 true,否则返回 false。备注
优先级字段使用说明:
- 当分组字段不为空时有效。用户可以指定多个优先级字段或不指定。
- 如果指定优先级字段,按照字段顺序,当被合并的多边形的字段值等于相邻多边形的字段值时,则合并到对应的多边形上;如果不相等,则比较下一个优先级字段的字段值;如果所有优先级字段值都不相等,则默认合并到相邻的面积最大的多边形上。
- 当优先级字段为空时,使用面积最大原则,即小多边形(被合并的多边形)将会被合并到面积最大的多边形上。
如图为例,用户指定了 A、B、C 三个优先级字段:
- 当被合并的多边形 F1 中 A 字段值等于相邻对象 F2 的 A 字段值时,则 F1 被合并到 F2 中;
- 如果 A 字段值不相等,则比较 B 字段值,如果 F1 的 B 字段值等于相邻对象的 F2 的 B 字段值,但同时等于 F3 的 A 字段值,则将 F1 合并到 F3 中,因为 A 字段具有更高的优先级。
- 如果 F2 和 F3 两个对象的 A 字段值都等于 F1 的 A 字段值,则默认使用面积最大的多边形,即,如果 Area(F2) > Area(F3),则 F1 合并到 F2,否则合并到 F3。