智慧管网数据处理与发布流程
1.处理cad图
获取原始的管网CAD图,并进行如下处理:
(1) 将cad图不需要的部分删除,只留下管网图层,导出 管网.dxf文件
(2) 根据现场勘察以及经验等,在管网的相对位置创建站点图层,并导出 站点.dxf文件
2.ArcMap处理cad图
(1)将生成的管网图层和站点图层导入的ArcMap,因为导入到ArcMap中的CAD图层,会有很多多余的图层,我们只需要一个Polyline图层即可,进行如下编辑
(2) 选择需要的图层,一般为Polyline,然后右键选择->Data->Export Data,将数据导出为shp文件
3.加载天地图影像地图
因为校正的时候需要使用到实际坐标,所以需要添加天地图影像地图。
(1) 打开ArcCatalog->GIS Server->Add WMTS Server
(2) 地址栏中填入 http://t0.tianditu.com/cia_c/esri/wmts
(天地图影像注记),下方的额外参数,填入自己从国家天地图上申请到的tk,这个tk需要是服务端的。然后再添加一个地址 http://t0.tianditu.com/img_c/esri/wmts
(天地图影像),这两个都是基于无偏移的经纬度,CGCS2000坐标系。
(3) 然后打开将影像地图添加进来即可
4.进行空间校正
如果导入的cad图没有坐标系,首先就需要进行图层的空间校正,将无坐标的cad图,校准到适当的地理坐标上去。
(1) 打开空间校正工具,Customize->Toolbars->Spatial Adjustment
(2) 选择编辑工具栏,开始编辑,选择需要进行校正的图层进行编辑。
(3) 设置需要校正的图层Spatial Adjustment->Set Adjust Data
(4) 新建新的连接点,鼠标先点击要进行校正的图层中的某个坐标点,然后再次点击需要将这个点对准到地图上的那个位置,这样就构成了第一条连接线。通常这个操作,需要多次进行缩放和Zoom To Layer,可以新建一个图层,圈出大致需要校正的位置,然后作为一个隐藏的图层加载到图层树中,在需要找到校正的位置的时候,直接进行Zoom To Layer即可。
如此反复操作,直到最少定义四个校准线和校准点。
(5) 选择校正方法,Adjustment Methods->Transformation Affine
(6) 进行校正。创建了四个校正点以后,就可以进行图形的校正了,Spatial Adjustment->Adjust
5.定义投
将上一步处理好的shp文件,重新加载到ArcMap中,然后选择ArcToolbox->Data Management Tools->Projections and Transformations->Define Projection
打开投影定义对话框,选择当前的需要定义投影的地图,然后选择需要定义的投影,比如4490或者是4326。
1.这可能是最简单的GIS坐标系转换指南了 (这篇文章包括了有坐标系的CAD图层到ArcMap地图的转换,以及没有坐标系的CAD图的投影转换)
2.高德,百度,Google地图定位偏移以及坐标系转换
6.管线处理
使用Arcpy编写python代码,对管线进行按米分隔。这里有多种方法可以实现
1.第一种:使用ArcToolBox
(1) 增密,对线段按照一定的长度或者比例增加线的折点。Editing Tools->Densify
(2) 将线段的折点转换成点。Data Management Tools->Features->Feature Vertices To Points
(3) 从点处打断线段。Data Management Tools->Features->Split Line at Point。
第二步和第三步可以合为一步,将线段进行增密之后,直接使用从折点处打断线段工具,对线段进行分隔。Data Management Tools->Features->Split Line at Vertices。
2.第二种:使用Arcpy代码
其实这一种只是第一种的变种罢了,毕竟Arcpy调用的函数和方法,也都是在ArcToolBox中有相应的工具的。从点处打断线,这个步骤基本上差不多,有些区别就是在生成点的思路上。
1 | ## 使用Polyline的Polyline的positionAlongLine方法,先计算线段总长度,然后将第二个参数设为true,用1米去除线段总长度,用百分比的方式获取线段上的点 |
7.站点处理
编辑站点的属性及编号,对每一个站点编号进行定义,同时定义其他的必要属性。
(1) 打开Edition编辑框,选择开始编辑,选择需要编辑的图层,就可以进行编辑了。
(2) 右键相应的图层,选择打开属性面板。
(3) 在属性面板中,可以新增字段。
8.数据导入postgis中(可以省略)
将处理好的站点数据导入到postgis数据库中,这一步其实可以省略,就是直接使用geoserver发布地图,而不是需要将数据导入到postgis中。将数据导入到Postgis中进行地图发布的目的,其实就是为了避免某些shp文件的限制,比如对中文支持不好,字段的长度只能限制在255个字符等。
9.发布图层
通过geoserver将postgis中的站点图层和管线图层或者是站点图层的shp文件和管线图层的shp文件发布为地图服务,供系统调用。
(1) 安装geoserver
geoserver可以独立安装,也可以随着tomcat一起安装,具体的我就不写了,基本上就是安装java环境,安装tomcat,配置环境变量,然后将下载后的geoserver.war文件放置到tomcat的webapps目录下即可完成安装。
(2) 复制数据
如果选择的数据格式是shp文件,可能还需要将相关的文件,上传到服务器geoserver的相应目录下,比如我这里geoserver安装目录为:/home/gis/apache-tomcat-8.5.43/webapps/geoserver/data/data
,需要将shp文件(包括.sbx等文件,共五个文件组成了一个shp文件),如果是一个新的项目,需要创建新的文件夹,比如中山嘉明,创建zsjm文件夹,将shp文件放到里面。复制数据,需要使用ssh工具连接到服务器上,推荐使用MobaXterm或者是FinalShell。
(2) 打开geoserver
安装geoserver之后,打开http://localhost:8080/geoserver
地址,如果安装到了外网上,那就使用相应的方法进行。
(3) 新建命名空间
如果没有单独的命名空间,可以新建一个单独的命名空间,所有的都是图层都发布在这个命名空间下,如果已经新建过了,那就可以不用再次新建。
(4) 新建数据存储
选择新建数据存储,数据格式选择shp文件或者是Postgis数据库连接。
(5) 发布图层
新建数据存储之后,最后一步就是发布图层,点击数据存储的后面Publish按钮,就可以进行图层发布。发布时要指定坐标系,以及坐标的范围选择从数据计算。
中文乱码问题
添加数据库源的时候,在选择shp文件的时候,要选择DBF文件的为utf-8编码。
9.修改应用程序配置文件
修改应用程序的yml配置文件中的站点图层的地址和管线图层地址。这一部分,其实还是需要修改后台程序的。
编写配置文件,主要是在phemswebconfig表中添加一条新的记录,或者是修改原有的记录。