背景:
接触了某城市的地下管网数据,原始的普查数据都是以mdb数据库格式的形式提供的,本以为arcgis可以直接打开里面的管线矢量,没成想里面只有管点 管线的信息表,没有矢量数据,但是地图服务等得需要shp,因此需要找到一个方法转化一下。
思路:
首先看到数据里面的数据属性结构–将管点信息可以直接用arcgis转为xy展点就可以–管线需要写程序匹配一下管线两端的管点坐标形成geojson文件–将geojson转为shp–搞定
具体操作
- 查看mdb,两种方式,如果大家对管线标准不太熟悉可以看看该网站https://wenku.baidu.com/view/3888661c4873f242336c1eb91a37f111f0850d78.html?wkts=1683343191245
excel导入打开
arcgis打开,选择相应的表拖进去就行
- 管点信息展点
设置好相应坐标系 xy坐标字段就行了,然后导出shp。 - 管线需要写程序匹配
对于程序编写可以采用入数据库或者直接读取mdb的形式,这里只讲思路
污水表示例
管点:
管线
最后输出geojson数据格式
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [
[502847.384761, 4142225.568719]
[502834.497419,4142213.881936]
]
},
"properties": {
"startPointNum":"WH13EN001C",
"endPointNum":"WH13EN001B",
…其他管线表里的属性,改成英文字段名称
}
}
……其他管线数据
]
}
注意在转换过程中管线可能匹配不到相关点,注意排查
- 将geojson转为shp
使用https://mapshaper.org/转为shp,为了防止属性值中文乱码,可以将geojson用notepad++设置一下ansi或者utf8格式,然后导出的时候设置一下encoding=gbk。 - 完美解决一个小问题,哈哈
大家如果对程序转换这块不太知道怎么弄,可以私信我。