zoukankan      html  css  js  c++  java
  • ArcGIS 网络分析[1.2] 利用1.1的线shp创建网络数据集/并简单试验最佳路径

     

     

    上篇已经创建好了线数据(shp文件格式)链接:点我

    这篇将基于此shp线数据创建网络数据集。

    在此说明:shp数据的网络数据集仅支持单一线数据,也就是说基于shp文件的网络数据集,只能有一个shp线文件参与。

    如何解决这个弊端呢?见下篇,利用地理数据库即可。

    本篇目录:

    1. 创建网络数据集 2. 给网络数据集命名

    3. 转弯 4. 连通性 5. 高程

    6. 网络数据集的阻抗属性

    7. 出行模式 8. 导航设置 9. 创建并构建网络数据集

    10. 试验最短路径


     1. 创建网络数据集!

    如图。

    2. 给网络数据集命名

    因为线shp的名称是Route,所以会自动命名为Route_ND(ND就是Network Dataset)

    在这我没用别的,就默认。

    3. ★ 转弯

    这一步关键,但是现在是最简单的创建模式(就是尽量减少复杂的步骤),直接默认用通用转弯,下一步即可。

    4. ★ 连通性

    这一步也很关键,这直接与线要素的创建习惯有关,见上一篇的折点问题,这里还不会看到效果,等实战到简单的最短路径分析时就知道了。

    在这里,连通策略使用按任意节点连通(就是按折点连通的意思)。不要问那么多,下一步。

    5. ★ 高程

    道路不可能一直平坦,但是这里作为示范,就不考虑这么多了,直接假设高程为0,选无即可。(好像shp也不能用高程)

    6. ★★ 网络数据集的阻抗(属性)

    这里必须谈一谈了。

    道路网,要求解最短的路径,是什么最短?有的同学可能说时间,也有的同学说长度。

    没错,这些就是阻抗,阻碍最小的那条路线,就叫最短路径。

    ArcGIS的网络数据集可以拥有多个阻抗属性,就如同要素类可以拥有多个字段一样。

    我们这里阻抗就用道路的长度——大白话说就是,假定道路畅通无阻,唯一影响我解算最短路径的就是道路的长度了。

    见下图:

    父窗口上的“长度”,即为网络数据集的一个阻抗属性,它的值怎么来?

    由右边的参数给其   赋值   为Route线要素的Length字段。也可以双击属性给其赋值。

    知道为什么要计算几何长度了吗?

    这里大有门路,不仅仅是长度这个阻抗,还有很多类型的阻抗能影响网络数据集。

    在这里,仅仅使用道路的长度作为阻抗,因为简单嘛。

    确定下一步。

    7. 出行模式

    直接下一步。

     

    8. ★ 导航设置

    这一步会影响导航窗口的单位和道路名称的显示,如下图设置:

    长度单位设置为千米。

    名称使用Route这个shp线文件的Name字段(就创建线数据的时候填写的道路名)

    确定下一步。

    9. 创建并构建网络数据集

    无视软媒魔方的浮动窗口。

    刚才设置的所有信息都会列举出来。此时只需下一步,即可创建网络数据集。

    软件会提示是否构建,选是。

    在这里多说两句:创建是无中生有的过程,构建是利用给定的各种参数(连通性阻抗什么的)进行逻辑组合的过程。

    创建只需这里一次,构建可以以后更新规则后再次进行。

    这里选否。我们只需把Route_ND网络数据集添加到数据框即可。

    创建完成后是这样的:

    多了一个.nd文件和一个网络数据集连通结点的shp文件。

    无视教程文件夹,那是我为了写这篇博客存放截图的文件夹。

    我们简单试验一下最佳路径:

    10.  试验最佳路径

    打开网络分析工具条,选择当前的网络数据集,创建路径图层,使用添加位置工具点两个点,按求解按钮:

    成功了!留心一下这里的蓝色结点,如果我改变起点终点位置:

    它可能会绕的非常大,为什么不是按红箭头的方式走呢?那样才是最快的呀?

    甚至会报错:起点和终点间没有连通。

    这是为什么呢?这里先卖个关子,这和线数据的质量有关,详情见这篇博客:点我

    在下一篇博客中,就使用地理数据库来构建网络数据集了。

    上篇使用shp文件创建网络数据集,然而在ArcGIS 9中就支持地理数据库了,数据库的管理更为科学强大。

    本篇就使用个人地理数据库进行建立网络数据集,线数据仍然可以是1.1中的线数据,但是我做了一些修改,读者仍然可以用1.1中制作的数据。

    1. 数据库的建立与数据的导入

    为什么要创建要素数据集呢?

    是因为地理数据库中的网络数据集是基于要素数据集的。

    这里就随便填写了,投影与Route的线shp文件一致。

    导入Route数据:

    这回我用了中文命名。

    注意,导入的数据集会自动计算几何长度(面还会计算面积),下面会提到。

    2. 创建网络数据集

    与上篇(点我)几乎一致,这里可以进行线和点要素类的多选,也可以选择网络数据集的版本:

    上面提及的自动计算几何,会体现为Shape_Length字段。

    值和Length字段是一致的,所以创建阻抗的时候选哪个都可以:

    构建完成就不截图了。

    3. 简单试验一下最短路径分析

    注意三角形的折点,这一篇的网络数据集使用的是经过我修改过后的道路线数据,与上一篇的线折点明显多了很多,凡是交点的地方都会有三角标号,说明这个地方是连通的。

    为什么?

    下一篇会解释这个的。

    导航窗口:

    The End。

  • 相关阅读:
    Java实现 LeetCode 50 Pow(x,n)
    Java实现 LeetCode 50 Pow(x,n)
    Java实现 LeetCode 49 字母异位词分组
    Java实现 LeetCode 49 字母异位词分组
    Java实现 LeetCode 49 字母异位词分组
    Java实现 LeetCode 48 旋转图像
    Java实现 LeetCode 48 旋转图像
    Java实现 LeetCode 48 旋转图像
    Java实现 LeetCode 47 全排列 II(二)
    Java实现 LeetCode 47 全排列 II(二)
  • 原文地址:https://www.cnblogs.com/lihaijia/p/14543169.html
Copyright © 2011-2022 走看看