zoukankan      html  css  js  c++  java
  • ArcGIS 网络分析[8.1] 资料1 使用AO打开或创建网络数据集之【打开】

    为了创建或打开一个网络数据集,你必须使用NetworkDatasetFDExtension对象(文件地理数据库中的数据集)或NetworkDatasetWorkspaceExtension对象(对于Shp文件组成的网络数据集)。

    当你拥有了合适的对象后,就可以使用IDatasetContainer2接口去创建或者打开网络数据集了。

    如果当前打开的Map对象中有网络数据集图层,那么就可以通过访问INetworkLayer接口的NetworkDataset字段来访问网络图层中的网络数据集。

    IDatasetContainer2接口的CreateDataset方法可以用于创建网络数据集。网络数据集创建完成后应立即用INetworkBuild接口的BuildNetwork方法构建。

    网络数据集的NetworkDatasetName对象可以被IDatasetContainer2接口的DatasetNames方法访问。

     

    涉及到的重要接口:

    IDatasetContainer2(Geodatabase类库中)、INetworkLayer(Carto类库中

    涉及到的重要类(全部在Geodatabase类库中)

    NetworkDatasetFDExtension、NetworkDatasetWorkspaceExtension

    NetworkDatasetNameClass

    1. 寻找IDatasetContainer2变量(要素数据集、Shp文件、SDC文件)

    下面的代码就演示了如何在给定数据库的要素数据集(要素数据集名称为fds)中打开网络数据集。

    1 IFeatureDatasetExtensionContainer fdsExtCont = fds as IFeatureDatasetExtensionContainer;  //要素数据集身份转化
    2 IFeatureDatasetExtension fdsExt = fdsExtCont.FindExtension(esriDTNetworkDataset);  //从要素数据集中找到IFeatureDatasetExtension对象
    3 IDatasetContainer2 dsCont = fdsExt as IDatasetContainer2;   //将IFeatureDatasetExtension对象身份转化为IDatasetContainer2

    下面的代码就演示了如何在给定shp文件(shp文件对象的名称为shpWS)中打开网络数据集。

    1 IWorkspaceExtensionManager wsExtMgr = shpWS as IWorkspaceExtensionManager;
    2 UID myUID = new UIDClass();
    3 myUID.Value = "esriGeoDatabase.NetworkDatasetWorkspaceExtension";
    4 IWorkspaceExtension wsExt = wsExtMgr.FindExtension(myUID); //与上面类似
    5 IDatasetContainer2 dsCont = wsExt as IDatasetContainer2; //与上面类似

    下面的代码演示了如何从给定的SDC文件中获取网络数据集(SDC文件对象名为sdcWS)

    1 IWorkspaceExtensionManager wsExtMgr = sdcWS as IWorkspaceExtensionManager;
    2 UID myUID = new UIDClass();
    3 myUID.Value = "esriGeoDatabase.NetworkDatasetWorkspaceExtension";
    4 IWorkspaceExtension wsExt = wsExtMgr.FindExtension(myUID);
    5 IDatasetContainer2 dsCont = wsExt as IDatasetContainer2;
    打开SDC中的网络数据集

    2. 使用IDatasetContainer2访问网络数据集

    一旦获取了用于访问合适的数据源(文件地理数据库或shp文件)的网络数据集扩展对象后,你就可以访问网络数据集了。例如,下面的代码就演示了如何打开名为“Street_ND”的网络数据集。

    1 // 上面的IDatasetContainer2变量 dsCont 的方法DatasetByName()找到名为"Street_ND"的网络数据集,返回一个IDataset对象
    2 IDataset dataset = dsCont.DatasetByName(esriDTNetworkDataset, "Street_ND"); 
    3 // 使用INetworkDataset变量 networkDataset 接住IDataset对象(经身份转换为INetworkDataset)
    4 INetworkDataset networkDataset = dataset as INetworkDataset;

    这样,就拿到了INetworkDataset,有了NetworkDataset(网络数据集),就可以转入NetworkAnalyst类库中的网络分析了。

  • 相关阅读:
    查看hbase中的中文
    查看hbase中的中文
    scala使用hbase新api
    scala使用hbase新api
    IDEA15使用maven编译scala和java
    IDEA15使用maven编译scala和java
    IDEA非sbt下spark开发
    IDEA非sbt下spark开发
    sed初学者实用说明
    sed初学者实用说明
  • 原文地址:https://www.cnblogs.com/onsummer/p/6994333.html
Copyright © 2011-2022 走看看