ArcGIS中最短路径的实现_第1页
ArcGIS中最短路径的实现_第2页
ArcGIS中最短路径的实现_第3页
ArcGIS中最短路径的实现_第4页
ArcGIS中最短路径的实现_第5页
已阅读5页,还剩15页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

最短路径分析属于 ArcGIS 的网络分析范畴 而 ArcGIS 的网络 分析分为两类 分别是基于几何网络和网络数据集的网络分析 它们都可以实现最短路径功能 下面先介绍基于几何网络的 最短路径分析的实现 以后会陆续介绍基于网络数据集的最短 路径分析以及这两种方法的区别 几何网络是一种特殊的特征要素类 由一系列不同类别的 点要素和线要素 可以度量并能图形表达 组成的 可在 Feat ureDataset 下面创建 可进行图形与属性的编辑 包括流向分 析和追踪分析两大功能 主要接口是 ITraceFlowSolver 我们 先在一幅地图上做出一个几何网络才能进行最短路径分析 下 面是主要的一些步骤 ArcMap 帮助中琐碎的说明有三四十项 被我省略很多 1 打开 ArcCatalog 连接到包含地图的文件夹 2 在空白处 右键新建一个 Personal GeoDatabase 3 在生成的 Personal GeoDatabase 上右键新建一个 feat ure dataset 4 双击 Personal GeoDatabase 进去 找到刚才 new 出 的 feature dataset 右键 Import 导入 Feature Class Single 选择要建立几何网络的图层或者 shape 文件 5 然后再右键新建一个 Geometric Network 选择从已存 在的图元中建立几何网络 6 打开 ArcMap 把刚才建立的 Personal GeoDatabase Feature Class 添加到地图中 这样几何网络就建立好了 这样我们就建立好一个几何网络了 我们现在要通过编程 来实现最短路径 用到的接口主要有 INetworkCollection IGe ometricNetwork IPointToEID ITraceFlowSolverGEN 它实 现了 ITraceFlowSolver 的接口 INetSchema IEIDHelper 等 主要步骤如下 1 获取几何网络工作空间 2 定义一个边线旗数组 把离点串最近的网络元素添加进 数组 3 设置开始和结束边线的权重 4 进行路径分析 5 得到路径分析的结果 上次介绍了用几何网络实现的 最短路径 这次用网络数据集实 现真正的最短路径功能 跟上次一样 先处理下数据 1 先打开 ArcCatalog 连接到目标文件夹 假定该文件 下有一个名为 road 的道路图层 2 在 road 图层上右键新建一个网络数据集 并按照其默 认设置直至完成 3 打开该地图的工作空间 把刚才新建的网络数据集添加 工作空间中 4 在网络分析菜单中选择新建最近设施点 这时在工作空间里 可以看到多了一个名为 Closest Facility 的 图层 它下面还有 4 个子图层 名字分别为 Facilities Incide nts Barriers Routes Facilities 就是设施点图层 也就 是目的点 Incidents 的意思就是出发点 Barriers 是障碍点 意思就是地图某条道路附近有一个障碍点 如果障碍点与道 路距离在容限范围内 则表示此道路不通 Routes 就是最终 的结果 这样我们编程实现最短路径的思路就出现了 1 添加出发点 2 添加目的点 3 生成最优路径 获取结果 图片看不清楚 请点击这里查看原图 大图 这里的添 加出发点或者目的点 是往 Facilities 或 Incidents 图层上添加 元素 获取结果也是从 Routes 中获取 Polyline 往 Facilities 或 Incidents 图层上添加元素用到的主要方法是 INALocator 的 QueryLocationByPoint 函数 生成路径主要接口是 INASolver 和它的 Solve 方法 获取结果是按属性查找 因为 Routes 类 其实就是一个图层类 只不过只是存在于内存 1 CMapControlDefault m map 2 IPointCollectionPtr m ipPointCollection 3 4 ILayerPtr ipLayer m map GetLayer 0 网络数据集 5 INALayerPtr ipNaLayer ipLayer 6 if NULL ipNaLayer 7 8 return 9 10 11 INAContextPtr ipNaContext 12 HRESULT hr ipNaLayer get Context 13 INAClassLoaderPtr ipNAClassLoader CLSID NAClassLoader 14 INALocatorPtr ipNALocator NULL 15 hr ipNaContext get Locator 16 ipNALocator put SnapToleranceUnits esriMeters 17 ipNALocator put SnapTolerance 200 18 ipNaContext 19 hr ipNAClassLoader putref Locator ipNALocator 20 21 INamedSetPtr ipNamedSet NULL 22 ipNaContext get NAClasses 23 24 CString szName Facilities 25 BSTR bstrName szName AllocSysString 26 INAClassPtr ipNAFacilitiesClass NULL 27 hr ipNamedSet get ItemByName bstrName IUnknown 28 szName Incidents 29 bstrName szName AllocSysString 30 INAClassPtr ipNAIncidentsClass NULL 31 hr ipNamedSet get ItemByName bstrName IUnknown 32 szName CFRoutes 33 bstrName szName AllocSysString 34 INAClassPtr ipNARoutesClass NULL 35 hr ipNamedSet get ItemByName bstrName IUnknown 36 37 INALocationPtr ipNALocation1 CLSID NALocation 38 INALocationPtr ipNALocation2 CLSID NALocation 39 ipNAClassLoader get Locator 40 IPointPtr ipBeginPoint CLSID Point 41 m ipPointCollection get Point 0 42 IPointPtr ipEndPoint CLSID Point 43 m ipPointCollection get Point 1 44 IPointPtr ipPoint1 CLSID Point 45 IPointPtr ipPoint2 CLSID Point 46 double dbLVal 0 0 47 ipNALocator QueryLocationByPoint ipBeginPoint 48 ipNALocator QueryLocationByPoint ipEndPoint 49 50 INALocationObjectPtr ipNALocationObject NULL 51 IFeatureClassPtr ipFeatureClass ipNAIncidentsClass 52 IFeaturePtr ipFeature NULL 53 ipFeatureClass CreateFeature 54 IRowSubtypesPtr ipRowSubtypes ipFeature 55 ipRowSubtypes InitDefaultValues 56 ipFeature putref Shape ipBeginPoint 57 ITablePtr ipTable NULL 58 ipFeature get Table 59 long nIndex 0 60 szName Sequence 61 bstrName szName AllocSysString 62 ipTable FindField bstrName 63 VARIANT var int 64 var int intVal 1 65 var int vt VT INT 66 ipFeature put Value nIndex var int 67 szName Name 68 bstrName szName AllocSysString 69 ipTable FindField bstrName 70 ipFeature put Value nIndex COleVariant Start Point 71 ipNALocationObject ipFeature 72 ipNALocationObject put NALocation ipNALocation1 73 ipFeature Store 74 IFieldsPtr ipFields CLSID Fields 75 hr ipTable get Fields 76 long nFieldCount 0 77 hr ipFields get FieldCount 78 for int k 0 k get Field k 82 BSTR bstrFieldName 83 ipField get Name 84 CString szFieldName bstrFieldName 85 86 87 ipFeatureClass ipNAFacilitiesClass 88 ipFeatureClass CreateFeature 89 ipRowSubtypes ipFeature 90 ipRowSubtypes InitDefaultValues 91 ipFeature putref Shape ipEndPoint 92 ipTable NULL 93 ipFeature get Table 94 nIndex 0 95 szName Sequence 96 bstrName szName AllocSysString 97 ipTable FindField bstrName 98 var int intVal 2 99 ipFeature put Value nIndex var int 100 szName Name 101 bstrName szName AllocSysString 102 ipTable FindField bstrName 103 ipFeature put Value nIndex COleVariant End Point 104 ipNALocationObject ipFeature 105 ipNALocationObject put NALocation ipNALocation2 106 ipFeature Store 107 108 INAClosestFacilitySolverPtr ipNACFSolver NULL 109 INASolverPtr ipNASolver NULL 110 ipNaContext get Solver 111 112 IGPMessagesPtr ipGPM CLSID GPMessages 113ITrackCancelPtr ipTrackCancel CLSID TrackCancel 114 VARIANT BOOL bIsPartialSolution 115 ipNASolver Solve ipNaContext ipGPM ipTrackCancel 116 117 szName CFRoutes 118 bstrName szName AllocSysString 119 ipNARoutesClass NULL 120 hr ipNamedSet get ItemByName bstrName IUnknown 121 122 IFeatureClassPtr ipFeatureClassRoutes ipNARoutesClass 123 IFeatureCursorPtr ipFCursor NULL 124 IQueryFilterPtr ipQueryFilter CLSID QueryFilter 125 CString szQueryFilter ObjectID 0 126 BSTR bstr QueryFilter szQueryFilter AllocSysString 127 ipQueryFilter put WhereClause bstr QueryFilter 128 VARIANT BOOL bCycle VARIANT FALSE 129 try 130 131 ipFeatureClassRoutes Search ipQueryFilter bCycle 132 133 catch CException e 134 135 CString szErrorMsg 136 e GetErrorMessage szErrorMsg GetBuffer MAX PATH MAX PATH 137 szErrorM

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论