zoukankan      html  css  js  c++  java
  • ArcGIS网络分析之构建网络分析数据集(一)

    说明:

    1. 本文主要用于演示网络分析服务的搭建过程。所以在此不会深入讨论网络分析服务的每一个细节,本文的目的就是让初学者学会使用网络分析服务进行基本的分析(主要针对后续的WEB开发):路径分析,最近设施点分析,以及服务区分析。

    2.关于OD成本矩阵分析,多路径配送,位置分配分析不会在本文中讨论(注:REST GIS服务不支持OD成本矩阵分析,多路径配送,位置分配,只能在ArcMap中进行分析)。

    3.本文部分内容参考了ArcGIS帮助文档,想详细了解GIS网络分析可查阅官方帮助文档,并在此强烈推荐。

    4.为简化分析过程,本文使用的数据为作者零时制作,所以实际的表现效果会没有真实的数据美观,但是对于网络分析服务的内容没有任何影响,读者可以参阅官方给出的网络分析服务数据(注:需安装ArcGIS Toturial 10.0,这里基本提供了官方文档中用到的所有数据)。

    1.准备网络分析的数据

    首先我们制作表示道路的线要素,线要素之后将用于构建我们的网络数据集。

    a.第一步

    建立如下所示文件夹结构:

    解释:Scratch文件夹用来存储我们的零时数据,ToolData用于存储我们永久的服务数据。一般我们将地理要素及要素集存放在地里数据库中。

    这里我们新建了一个名叫NetworkFeatureDataSet的要素集,这是因为存放于地理数据库中的线要素如果用于构建网络数据集,则必须放在要素集中

    b.第二步

    新建各种要素(表示设施点的点要素,以及表示道路的线要素),并添加相关的属性

    (说明:Network_ND和Network_ND_Junctions是之前已构建好的网络数据集和结点。在此我们只需要新建三个点要素和一个线要素即可)

    分别配置一下属性:

    线要素:

    属性说明:

    Shape_Length:新建要素时默认生成的属性,表示线要素的长度,其值和单位和选择的坐标系有关,由于我们考虑到之后的Web开发,因此这里采用Web Mecator坐标系。

    Length:表示道路的长度,这里的值就等于Shape_Length。(其实这里我们直接用Shape_Length这个属性就可以,可以不添加该属性)

    Level:表示道路的等级,不同的等级所允许的行驶速度不同这里我们设置的等级和速度的对应关系如下:

         等级    

                       速度的最大值             

    1

    130 km/h

    2

    120 km/h

    3

    80 km/h

    4

    60 km/h

    这里还需要说明的一点是:在Web的开发过程中,默认情况下是启用了道路的等级属性(也就是说:无论你的网络数据集有没有设置等级,都会在Web开发中启用等级属性)。因此如果我们构建的网络数据集中不包含等级属性,那么采用默认的设置时,在Web开发中就会出错,当然在Web开发时,我们也可以将启用等级属性设置为False,这样也可以实现网络分析的功能,具体过程将在下一篇Web开发中到。在此有个基本概念即可。

    Speed:表示该公路运行行驶的最大速度,及按照如上所示的表格进行设置。

    Time:表示行驶时间,这里我们没有添加任何数据。

    Name:即表示公路的名称,注意线要素一定要有类型为文本类型的属性,这样才能够在构建网络数据集的时候添加方向设置,否则构建的网络数据集中将不包含方向指南。因此这里我们添加了道路的名称,目的用于之后生成方向指南。

    点要素(以表示学校的点要素为例,其他点要素雷同)

    c.第三步

    编辑要素,构建具体的地图,这里我们制作了一个简单的,如下示例的地图:

    需要注意的是:由于道路是联通的,所以我们需要将所有相交的线要素进行打断处理。在此可以用拓补工具进行批处理。

    以上过程完成之后,数据的准备阶段就已完成,下面开始网络数据集的构建工作。

    2.构建网络数据集

    再次强调,构建网络数据集的线要素必须位于要素集中,否则无法构建。

    右键要素集——新建——网络数据集

    点击将如下图所示

    设置网络数据集的名称,点击下一步。

    设置连通性,这里有节点和端点两种,默认情况下为端点,这里我们选择默认即可,然后点击下一步。

    设置高程字段,当涉及到高程时,在此设置,本文没有涉及,所以选择无。然后点击下一步。

    设置网络数据集的属性,我们指定了如上所示的属性。具体的添加过程:

    点击添加,然后设置名称,用法和单位,然后点击赋值器,可以指定该属性是字段,函数,常量以及VB脚本。

    这里我们设置Distance属性为字段,对应线要素的Length属性(也可以用表达式,将单位换成千米即:Length/1000,默认的长度单位是米)。

    Speed属性对于线要素的Speed属性。如下图所示:

    DriverTime属性,表示行驶时间。这里需要注意的是DriveTime属性我们采用的是表达式,而不是直接将线要素的Time属性赋给它。(因为之前在新建要素的时候,我们没有给Time属性赋值,这里我们想根据线要素的长度和最大行驶速度来设置通过该要素所需最小时间)

    因为速度是千米/时,默认长度单位是米,所以我们将要素长度除以一千。

    以上属性设置好以后,点击下一步,设置网络方向属性。

    这里我们设置长度属性为Distance,并设置单位及时间属性,如上图所示,在街道名称中设置名称为Name字段。

    然后点击完成。如果以上过程没有出错,那么恭喜你,我们自己构建的网络数据集已经生成了,这个时候,你的要素集中的内容应该如下:

    接下来我们验证生成的网络数据集。

    3.验证网络数据集

    点击自定义调出网络分析工具条:

    点击NetworkAnalyst,可以选择分析项。

    a.最短路径查询

    点击新建路径,然后点击网络分析工具条中带有+号的按钮。在地图中添加两个点或者更多,如下图所示添加了四个点:

    然后点击求解工具,则会生成相应的路径。

    下面是生成的方向指南:

    同理服务区的分析过程雷同,具体过程可参考官方的文档。在此不再叙述。下一篇将会讲述发布我们的网络数据集,从而提供Web客户端(Silveright)的GIS网络分析服务。

  • 相关阅读:
    轻量级分布式任务调度框架(二、LTS编译、打包、部署)
    轻量级分布式任务调度框架(一、LTS简介、特点、工作流程)
    MySQL数据库学习一
    Navicat 连接 SQL Server 数据库,报错 08001
    noVNC 遇到一个错误: Uncaught TypeError: Cannot read property 'forEach' of undefined
    加强自己VPS服务器安全的一次经历
    Python 编码错误的本质和解决方案
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'data' at line 1
    requests爬虫请求报错:UnicodeEncodeError: 'latin-1' codec can't encode character 'u2026' in position 30
    docker无法删除镜像,Error: No such container,附docker常用命令
  • 原文地址:https://www.cnblogs.com/jackbobo23/p/2777310.html
Copyright © 2011-2022 走看看