Network 研究
有些专业词汇只能靠揣测,半知半解的算是看了个大概,不过还是受益颇深的。发现真正理解了Nerwork(网络)的概念,才算是理解了ArcGIS数据建库模型的精髓,先从一些简单的概念入手。
NETWORK--网络
网络分为2种类型:
Transportation network--运输网络
运输网络是不定向的,也就是只保证连通性。这种网络的模型代表就是network datasets。
Utility network--效用网络
效用网络是定向的,除了能实现连通性以为还能实现通过一定规则控制流向(例如污水管道的重力势流)、选择最短路径等。这种网络的模型代表就是geometric networks(几何网络)
网络是由网络元素组成的,主要有三种:edges(边即line),junctions(连接点即point),turns(转向,可选项)。
这两种网络的建立在 ArcCatalog中对应的工具为数据集(dataset)上右键菜单中Network Dataset...和Geometric Network...。其中Network Dataset还可用于SHP文件,Geometric Network只能用于Geodatabase。(主要针对矢量数据,栅格与否尚不知)。
在建立这2种网络的时候,Dataset下会自动产生2项,Network Dataset会产生test_ND、test_ND_Junctions,Geometric Network会产生test_Net、test_Net_Junctions。
test_ND和test_Net用于管理网络的规则、属性等,test_ND_Junctions和test_Net_Junctions都是点层,他们的作用是线层中的线互相连通时的连接点,所有的连接点都是自动生成的。
2008.3.21 Fri.
-----------------------------------
要利用Network Analyst的相关功能,必需先创建好 Network Dataset。Network Analyst的具体利用是与所建立的网络数据的连通性规则密切相关,甚至是一一对应的,连通性规则没有设置好会得到意想不到的效果(当然不是想要的结果)。所以了解并熟悉创建Network Dataset的连通性规则设置是非常有必要的。关于创建Network Dataset,也可以通过AE程序来实现,不过由于创建Network Dataset时,对Dataset是独占方式,所以有其它用户在使用时,创建会失败,建议最好是使用ArcCatalog来进行数据管理。
Network Dataset 数据创建
dataset的右键菜单Network Dataset选项不可用时,需要添加扩展。在Tools菜单的Extentions窗口中,选中Network Analyst项保存即可。
关于创建Network Dataset的例子,ArcGIS的Data安装目录下有7个例子。路径为:..\ArcTutor\Network_Analyst。结合C:\Program Files\ArcGIS\Documentation目录下的Network_Analyst_Tutorial.pdf文档一起练习一遍,对各种可能的连通情况就会很清楚了。例子列表如下:
Exercise 1: Creating a shapefile based network dataset
Exercise 2: Creating a geodatabase network dataset
Exercise 3: Creating a multimodal network dataset
Exercise 4: Finding the best route using a network dataset
Exercise 5: Finding the closest fire stations
Exercise 6: Calculation service area and creating a OD Cost Matrix
Exercise 7: Creating a model for route analysis
2008.12.8 Mon
-------------------------------------------
好久没更新这篇文章了,因为换工作以及其它一些事务的缘故,一直没时间深究,最近刚好有项目要实现最短路径的功能,又重新好好研究了一下。
1、网络拓扑创建
对于ArcGIS的数据格式主要是SHP和Geodatabase两种格式,这2中格式创建的网络拓扑是不一样的
SHP:只能创建Network Dataset,使用右键菜单的New Network Dataset命令创建
Geodatabase:可以创建Network Dataset和Geometric Network Dataset,使用右键菜单New下的New Network Dataset命令和Geometric Network Dataset命令创建
2、实现最短路径分析
对于2种不同的拓扑网络数据,做最短路径分析时使用的AE接口是有区别的。
SHP:通过INAContext对象的INASolver属性对象的Solve方法来最终实现。(针对RouteSolver路径分析类型)
实例代码见安装目录:...\ArcGIS\DeveloperKit\SamplesCOM\NetworkAnalyst\下的RouteSolverVisual_Basic压缩文件,最短路径使用这个类型即可。其它例子也可参考一下。
Geodatabase:实例代码在代码目录下的Network文件夹下,参考Path_FinderVisual_Basic例子即可,其它例子也可参考。
3、分析模型
虽然只有2个网络拓扑,但是每种网络拓扑考虑到是否有流向,是否有障碍,路径开销的设置(以长度或时间等都能做为开销的度量单位),使用时要根据个人需要选择合适的路径分析模型。
Network Dataset分析模型
1>Route
2>Service Area
3>Closest Facility
4>OD Cost Matrix
如果是实现简单的最短路径分析功能,创建Network Dataset网络拓扑,使用route分析模型即可实现。
实现的方法除了安装目录下的实例代码自己写命令外,还可以通过调用AE提供的ICommand命令来实现,大量简化代码,而且实现的效果与ArcMap类似(创建route图层->创建路径点->路径分析->显示线路结果面板)
方法与部分代码如下:
1、定义全局或局部全局变量
Private Cmd_NewRoute As ICommand
Private Cmd_CreateLocation As ICommand
Private Cmd_Solve As ICommand
2、实例化
Set Cmd_NewRoute = New ControlsNetworkAnalystRouteCommand
Set Cmd_CreateLocation = New ControlsNetworkAnalystCreateLocationTool
Set Cmd_Solve = New ControlsNetworkAnalystSolveCommand
3、通过相关的按钮触发创建路径点和路径分析
创建路径点按钮代码(点击按钮后,在图上点击创建路径点)
Cmd_CreateLocation.OnCreate (MapControl1.Object)
If Cmd_CreateLocation.Enabled Then Set MapControl1.CurrentTool = Cmd_CreateLocation
路径分析按钮代码
Cmd_Solve.OnCreate (MapControl1.Object)
If Cmd_Solve.Enabled Then Cmd_Solve.OnClick
Over。。。。。。