• Network 研究


    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。。。。。。

  • 相关阅读:
    面向对象的三个基本特征
    OGRE启动过程详解(OGRE HelloWorld程序原理解析)
    Bullet核心类介绍(Bullet 2.82 HelloWorld程序及其详解,附程序代码)
    windows下Bullet 2.82编译安装(Bullet Physics开发环境配置)
    1303: Decimal
    分组背包,每组最多选1个
    椒盐效果
    自我介绍
    题目1539:师弟
    upper_bound()
  • 原文地址:https://www.cnblogs.com/lauer0246/p/1115168.html
Copyright © 2020-2023  润新知