碎多边形合并,需要指定被合并的多边形的 ID,支持优先级字段和分组字段。
命名空间:
SuperMap.Analyst.SpatialAnalyst程序集: SuperMap.Analyst.SpatialAnalyst (in SuperMap.Analyst.SpatialAnalyst)
版本: dll
语法
C# |
---|
public static bool EliminateSpecifiedRegions( DatasetVector sourceDataset, string[] smallRegionIDs, int[] excludeRegionIDs, string[] groupFields, string[] priorityFields, bool isMaxBorder, double vertexTolerance ) |
参数
- sourceDataset
- Type: SuperMap.Data..::.DatasetVector
待进行碎多边形合并的矢量面数据集。
- smallRegionIDs
- Type: array<
System..::.String
>[]()[]
指定被合并的小多边形的 ID,指定的对象如果找到符合要求的临近对象,则会被合并到临近对象中,小多边形会被删除。
- excludeRegionIDs
- Type: array<
System..::.Int32
>[]()[]
指定要排除的多边形的ID,即不参与运算的对象 ID。
- groupFields
- Type: array<
System..::.String
>[]()[]
分组字段,字段值相同的多边形才可能进行合并。
- priorityFields
- Type: array<
System..::.String
>[]()[]
合并对象的优先级字段,当分组字段不为空时有效。用户可以指定多个优先级字段或不指定。
- isMaxBorder
- Type: System..::.Boolean
设置合并对象时是否以最大边界方式合并,如果为 true,则指定的小多边形会被合并到临近的公共边界最长的多边形上,否则,则会被合并到临近的面积最大的多边形上。
- vertexTolerance
- Type: System..::.Double
指定的节点容限。单位与进行碎多边形合并的数据集单位相同。若两个节点之间的距离小于此容限值,则合并过程中会自动将这两个节点合并为一个节点。取值范围大于等于0,指定为小于0的值会抛出异常。
返回值
一个布尔值,如果合并成功返回 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。