最近距离计算。求算“被计算记录集”中每一个对象到“参考记录集”中在查询范围内的所有对象的距离中的最小值(即最近距离),并将最近距离信息保存到一个新的属性表数据集中。

命名空间:  SuperMap.Analyst.SpatialAnalyst
程序集:  SuperMap.Analyst.SpatialAnalyst (in SuperMap.Analyst.SpatialAnalyst)
版本: dll

语法

C#
public static bool ComputeMinDistance(
	Recordset sourceRecordset,
	Recordset referenceRecordset,
	double minDistance,
	double maxDistance,
	Datasource outputDatasource,
	string outputDatasetName
)

参数

sourceRecordset
Type: SuperMap.Data..::.Recordset
指定的被计算记录集。只支持二维点记录集。
referenceRecordset
Type: SuperMap.Data..::.Recordset
指定的参考记录集。支持二维点、线、面记录集。
minDistance
Type: System..::.Double
指定的查询范围的最小距离。取值范围为大于或等于 0。单位与被计算记录集所属数据集的单位相同。
maxDistance
Type: System..::.Double
指定的查询范围的最大距离。取值范围为大于 0 的值及 -1。当设置为 -1 时,表示不限制最大距离。单位与被计算记录集所属数据集的单位相同。
outputDatasource
Type: SuperMap.Data..::.Datasource
指定的用于存储结果属性表数据集的数据源。
outputDatasetName
Type: System..::.String
指定的结果属性表数据集的名称。

返回值

一个布尔值,表示是否计算成功。如果成功,返回 true,否则返回 false。

备注

最近距离计算功能用于计算“被计算记录集”中每一个对象(称为“被计算对象”)到“参考记录集”中在查询范围内的所有对象(称为“参考对象”)的距离中的最小距离,也就是最近距离,计算的结果为一个纯属性表数据集,记录了“被计算对象”到最近的“参考对象”的最近距离信息,使用三个属性字段存储,分别为:Source_ID(“被计算对象”的 SMID)、根据参考对象的类型可能为 Point_ID、Line_ID、Region_ID(“参考对象”的 SMID)以及 Distance(前面二者的距离值)。如果被计算对象与多个参考对象具有最近距离,则属性表中相应的添加多条记录。

  • 支持的数据类型

    “被计算记录集”仅支持二维点记录集,“参考记录集”可以是为从二维点、线、面数据集以及二维网络数据集获得的记录集。从二维网络数据集可以获得存有弧段的记录集,或存有结点的记录集(从网络数据集的子集获取),将这两种记录集作为“参考记录集”,可用于查找最近的弧段或最近的结点。

    “被计算记录集”和“参考记录集”可以是同一个记录集,也可以是从同一个数据集查询出的不同记录集,这两种情况下,不会计算对象到自身的距离。

  • 查询范围

    查询范围由用户指定的一个最小距离和一个最大距离构成,用于过滤不参与计算的“参考对象”,即从“被计算对象”出发,只有与其距离介于最小距离和最大距离之间(包括等于)的“参考对象”参与计算。如果将查询范围设置为从“0”到“-1”,则表示计算到“参考记录集”中所有对象的最近距离。

    如下图所示,红色圆点来自“被计算记录集”,方块来自“参考记录集”,粉色区域表示查询范围,则只有位于查询范围内的蓝色方块参与最近距离计算,也就是说本例的计算的结果只包含红色圆点与距其最近的蓝色方块的 SMID 和距离值。

  • 注意事项:

    1. “被计算记录集”和“参考记录集”所属的数据集的必须具有相同的坐标系。
    2. 如下图所示,点到线对象的距离,是计算点到整个线对象的最小距离,即在线上找到一点与被计算点的距离最短;同样的,点到面对象的距离,是计算点到面对象的整个边界的最小距离。
    3. 计算两个对象间距离时,出现包含或(部分)重叠的情况时,距离均为 0。例如点对象在线对象上,二者间距离为 0。

请参见