根据耗费距离栅格和耗费方向栅格,分析从目标出发到达最近源的最短路径栅格。
命名空间:
SuperMap.Analyst.SpatialAnalyst程序集: SuperMap.Analyst.SpatialAnalyst (in SuperMap.Analyst.SpatialAnalyst)
版本: dll
语法
C# |
---|
public static DatasetGrid CostPath( Dataset sourceDataset, DatasetGrid distanceDataset, DatasetGrid directionDataset, ComputeType computeType, Datasource targetDatasource, string targetDatasetName ) |
参数
- sourceDataset
- Type: SuperMap.Data..::.Dataset
指定的目标所在的数据集。可以为点、线、面或栅格数据集。如果是栅格数据,要求除标识目标以外的单元格为无值。
- distanceDataset
- Type: SuperMap.Data..::.DatasetGrid
指定的耗费距离栅格数据集。
- directionDataset
- Type: SuperMap.Data..::.DatasetGrid
指定的耗费方向栅格数据集。
- computeType
- Type: SuperMap.Analyst.SpatialAnalyst..::.ComputeType
指定的栅格距离最短路径分析的计算方式。
- targetDatasource
- Type: SuperMap.Data..::.Datasource
指定的用于存储结果数据集的数据源。
- targetDatasetName
- Type: System..::.String
指定的结果最短路径所在的数据集的名称。
返回值
最短路径结果数据集,为栅格数据集。备注
该方法根据给定的目标数据集,以及通过“生成耗费距离栅格”功能得到的耗费距离栅格和耗费方向栅格,来计算每个目标对象到达最近的源的最短路径,也就是最小耗费路径。该方法不需要指定源所在的数据集,因为源的位置在距离栅格和方向栅格中能够体现出来,即栅格值为 0 的单元格。生成的最短路径栅格是一个二值栅格,值为 1 的单元格表示路径,其他单元格的值为 0。
例如,将购物商场(一个点数据集)作为源,各居民小区(一个面数据集)作为目标,分析从各居民小区出发,如何到达距其最近的购物商场。实现的过程是,首先针对源(购物商场)生成距离栅格和方向栅格,然后将居民小区作为目标区域,通过最短路径分析,得到各居民小区(目标)到最近购物商场(源)的最短路径。
注意,该方法中要求输入的耗费距离栅格和耗费方向栅格必须是匹配的,也就是说二者应是同一次使用“生成耗费距离栅格”功能生成的。此外,有三种计算最短路径的方式:像元路径、区域路径和单一路径,具体含义请参见 ComputeType 枚举。
示例
以下代码示范了如何实现距离栅格最短路径分析,并返回结果栅格数据集。
CopyC#
private DatasetGrid CostPathAnalyst(Dataset sourceDataset, DatasetGrid distanceDataset, DatasetGrid directionDataset, Datasource targetDatasource) { //设置结果栅格数据集的名称,并检查数据源中是否已存在该数据集,如存在则删除 String outputDatasetName = "costPathGrid"; if (targetDatasource.Datasets.Contains(outputDatasetName)) { targetDatasource.Datasets.Delete(outputDatasetName); } //调用CostPath()方法进行距离栅格最短路径分析,并获取结果栅格数据集 DatasetGrid resultDatasetGrid = DistanceAnalyst.CostPath(sourceDataset, distanceDataset, directionDataset, ComputeType.Cell, targetDatasource, outputDatasetName); return resultDatasetGrid; }