根据耗费距离栅格和耗费方向栅格,分析从目标出发到达最近源的最短路径栅格。

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

请参见