碎多边形合并,需要指定被合并的多边形的 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。

版本信息

SuperMap iObjects .NET


请参见