范围距离计算。求算“被计算记录集”中每一个对象到“参考记录集”中在查询范围内的每一个对象的距离,并将距离信息保存到一个新的属性表数据集中。
命名空间:
SuperMap.Analyst.SpatialAnalyst程序集: SuperMap.Analyst.SpatialAnalyst (in SuperMap.Analyst.SpatialAnalyst)
版本: dll
语法
C# |
---|
public static bool ComputeRangeDistance( 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,且必须大于或等于最小距离。单位与被计算记录集所属数据集的单位相同。
- outputDatasource
- Type: SuperMap.Data..::.Datasource
指定的用于存储结果属性表数据集的数据源。
- outputDatasetName
- Type: System..::.String
指定的结果属性表数据集的名称。
返回值
一个布尔值,表示是否计算成功。如果成功,返回 true,否则返回 false。备注
该功能用于计算记录集 A 中每一个对象到记录集 B 中在查询范围内的每一个对象的距离,记录集 A 称为“被计算记录集”,当中的对象称作“被计算对象”,记录集 B 称为“参考记录集”,当中的对象称作“参考对象”。“被计算记录集”和“参考记录集”可以是同一个记录集,也可以是从同一个数据集查询出的不同记录集,这两种情况下,不会计算对象到自身的距离。
查询范围由一个最小距离和一个最大距离构成,用于过滤不参与计算的“参考对象”,即从“被计算对象”出发,只有与其距离介于最小距离和最大距离之间(包括等于)的“参考对象”参与计算。
如下图所示,红色圆点为“被计算对象”,方块为“参考对象”,粉色区域表示查询范围,则只有位于查询范围内的蓝色方块参与距离计算,也就是说本例的计算的结果只包含红色圆点与粉色区域内的蓝色方块的 SMID 和距离值。
范围距离计算的结果为一个纯属性表数据集,记录了“被计算对象”到“参考对象”的距离信息,使用三个属性字段存储,分别为:Source_ID(“被计算对象”的 SMID)、根据参考对象的类型可能为 Point_ID、Line_ID、Region_ID(“参考对象”的 SMID)以及 Distance(前面二者的距离值)。
注意事项:
- “被计算记录集”和“参考记录集”所属的数据集的必须具有相同的坐标系。
- 如下图所示,点到线对象的距离,是计算点到整个线对象的最小距离,即在线上找到一点与被计算点的距离最短;同样的,点到面对象的距离,是计算点到面对象的整个边界的最小距离。
- 计算两个对象间距离时,出现包含或(部分)重叠的情况时,距离均为 0。例如点对象在线对象上,二者间距离为 0。