PostGIS 爆管分析管网、阀门数据处理,并导出shp
背景
在做爆管分析时,需要制作一些模拟数据。
我先制作了一些管网以后,再将阀门数据放到管网上
操作
数据处理:
-
创建x1,y1字段
ALTER TABLE fm ADD COLUMN x1 double precision;
ALTER TABLE fm ADD COLUMN y1 double precision;
-
将管网表表x1、y1字段更新到阀门表,这里因为是模拟数据,所以思路是将gid相等的管网和阀门放一起
update fm a set x1 = b.x1,y1=b.y1 from zy b where a.gid = b.gid
-
检查数据更新对不对
select a.gid,a.x1,a.y1,b.gid,b.x1,b.y1 from fm a left join zy b on a.gid =b.gid
-
将x1、y1坐标更新到geom字段
update fm set geom = ST_Geometryfromtext('point('||x1||' '||y1||')',3857);
--POINT(12678475.5121968 2624441.96137548) -
查看阀门是否都在管网上
select a.gid from fm a,(select c.* from zy c ) b where ST_intersects(a.geom,b.geom)
导出
- 数据更新完了以后,我需要将postgis中的数据导出成shp,以便去arcmap中查看
故用到postgis插件的导出工具pgsql2shp
[root@localhost ~]# yum install postgis25_12-utils postgis25_12-client postgis25_12 -y - 检验是否安装成功
[root@localhost ~]# pgsql2shp --help - 导出
[root@localhost ~]# pgsql2shp -f /data/fm.shp -h 192.168.1.** -u postgres -P password gw_iocs "select * from fm";