碎多边形合并,即将数据集中小于指定面积的多边形合并到相邻的多边形中,支持优先级字段和分组字段。

命名空间:  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。

请参见