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。

posted @ 2019-09-27 18:07  苍龙de链  阅读(3038)  评论(0编辑  收藏  举报