Network 研究

2008.03.20  Thurs.
-------------------------------------
  在使用AE开发时,遇到了一些网络分析之类的问题(二维的数据分析称为网络分析,空间分析主要针对三维数据),例如:判断连通性、求最短路径等等。开始不知道如何下手,网络上关于这方面的资料比较少,后来打开ArcGIS Desktop帮助拼命的看,全是英文,看的眼都花了,看了2天,与别人交谈时甚至有想用英文的冲动。为了防止以后忘记,写个总结出来。

    有些专业词汇只能靠揣测,半知半解的算是看了个大概,不过还是受益颇深的。发现真正理解了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

4、补充说明     

     如果是实现简单的最短路径分析功能,创建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。。。。。。