zoukankan      html  css  js  c++  java
  • PostGIS 结合Openlayers以及Geoserver实现最短路径分析(一)

    环境:

    Win10

    ArcMap10.4(用于数据处理)

    postgresql9.4

    postgis2.2.3

    pgRouting2.3(postgresql插件)

    ##附上本文配套素材下载地址:https://download.csdn.net/download/guzicheng1990/11830419

    说明:

    在做网络分析中,最麻烦的莫过于数据的配合了。接口写对了,但是数据没做好还是查不出数据,让网络分析功能大打折扣。

    网络分析也是gis众多分析功能中对数据要求最高的了,其中要建立好拓扑关系,点在线上、点在线节点上、点在线外等等都会出不同的结果。

    这里先把功能写完,后续继续研究,继续填坑。

    步骤:

     1、在ArcMap中新建线图层,画如图网格

    2、新增id字段,给id字段进行赋值:id = FID+1

    #这里有个坑,后面shp文件用postgis自带的shapefile导入工具导入postgis时,主键FID会变成gid,并且gid会比FID大1

    #这样在查看网络分析得到的结果时,可以利用id在arcmap中搜索了

    3、用ArcMap中,打开Advanced Editing工具,用其Line Intersection功能,将线两两打断

     4、线最终打断结果(为了逻辑清晰,我在线上显示了id的标注)

     

    5、继续新增一个点图层,在每个断点处设置个点,并新增Id字段(暂时不赋值,留着后面用)

    ## Id字段在后面Postgis里建立完拓扑以后赋值(红色标识,与source和target有对应关系,表示线段的两个端点编号,最终成品如下

    6、打开Postgis Shapefile导入工具,设置完数据库连接,选择Add File找到处理完的线图层,设置坐标系,将Options最后一项选中,最后执行Import!

     

    7、如果导入时报错“Shapefile type: Arc PostGIS type: LINESTRING[2] We have a Multilinestring with 2 parts, can’t use -S switch!错误”,可以在ArcGIS中,把线打断。

    数据管理工具→要素→要素转线(Data Management Tools-->Features-->Feature To Line)

    8、导进Postgis后,这批第一步骤可以算告一段落,接下来的操作多数在Postgis中。

     后续:

    在后续项目中,遇到了一个情况:我有批ArcGIS数据已经完成,这批数据是ArcSDE导入的,但是SDE导入的数据,没有第六步检验是否有MULTI类型,导致后面pgRouting建拓扑时报错。

    而且ArcSDE里主键是objectid,图形字段是shape;postgis导入工具导入主键是gid,图形字段是geom。

  • 相关阅读:
    利用多线程对数组进行归并排序
    Java.nio-随机读写汉字
    用Java语言实现简单的词法分析器
    python全栈闯关--5-字典
    python全栈闯关--XX-细节总结汇总
    linux温故--1-daily_routine
    python全栈闯关--4-列表和元祖
    saltstack-6 pillar组件
    saltstack-5 grainx组件
    saltstack-4 常用模块api调用
  • 原文地址:https://www.cnblogs.com/giser-s/p/11599562.html
Copyright © 2011-2022 走看看