PostGIS拓扑:TOPOLOGY

摘要:
SELECTtopology.ST_CreateTopoGeo;3)建立TopoGeometry列可在原空间数据表上加入,也可以单独新建表加入。AddTopoGeometryColumn;单独建新表示例://创建表空间CREATESCHEMAwatertopo_feature;//创建要素表CREATETABLEwatertopo_feature.fitting;在原空间数据管线表添加示例:SELECTtopology.AddTopoGeometryColumn;4)给空间数据表中的TopoGeometry列填充数据填充数据会自动建立起几何对象和topo对象的关系。示例:更新管线表中的TopoGeometry列toTopoGeomUPDATEwaterdataset.pipesectionmainSETtopo_geom=topology.toTopoGeom;TopoGeometry存储方式,topology_id:建立的拓扑的id,存储在topology表中layer_id:建立的拓扑图层的id,存储在layer表中id:对应空间数据表的gidtype:空间数据类型,我们管网中常用的简单点为1,简单线为2。

数据准备:建立架构waterdataset,导入样例供水管网数据shp文件,pipesectionmain管线表,fitting节点表。

1)创建与删除拓扑

创建拓扑,CreateTopology(topo名称,坐标系srid,容差值)

示例:通过现有空间数据表(读取现有空间数据的坐标系)创建拓扑

SELECT topology.CreateTopology('topo', find_srid('waterdataset','fitting','geom'),0.001);

删除拓扑,DropTopology(topo名称)

示例:删除建立的topo

SELECT topology.DropTopology('ma_topo');

示例:删除建立的TopoGeometry字段

语法,DropTopoGeometryColumn(架构名,表名,字段名);

SELECT topology.DropTopoGeometryColumn('waterdataset', 'pipesectionmain', 'topo_geom');

2)往空拓扑中加载数据

ST_CreateTopoGeo(已创建的topo名称,几何集合)

例:通过现有的空间表数据填充拓扑,该方法只在空topo的时候可以使用,导入过一次后该方法不可再用。

注:需导入线数据,导入数据后会填充edge_data表,并用线的端点填充node表。

SELECT topology.ST_CreateTopoGeo('topo',(SELECT ST_Collect(geom) FROM waterdataset.pipesectionmain) );

3)建立TopoGeometry列

可在原空间数据表上加入,也可以单独新建表加入。AddTopoGeometryColumn(topo名称,表空间名,表名,字段名,几何类型);

单独建新表示例:

//创建表空间

CREATE SCHEMA watertopo_feature;

//创建要素表

CREATE TABLE watertopo_feature.fitting(gid serial, fid integer PRIMARY KEY);

在原空间数据管线表添加示例:

SELECT topology.AddTopoGeometryColumn('hkgwater_topo', 'waterdataset', 'pipesectionmain ', 'topo_geom', 'LINESTRING');

4)给空间数据表中的TopoGeometry列填充数据

填充数据会自动建立起几何对象和topo对象的关系(会关联更新relation表)。

示例:更新管线表中的TopoGeometry列

toTopoGeom(空间数据表几何字段geom,自己建立的topo表空间,更新的layer_id,容差)

UPDATE waterdataset.pipesectionmain SET topo_geom = topology.toTopoGeom(geom, 'hkgwater_topo', 4, 0.001);

TopoGeometry存储方式,(topology_id,layer_id ,id, type)

topology_id:建立的拓扑的id,存储在topology表中

layer_id:建立的拓扑图层的id,存储在layer表中

id:对应空间数据表的gid

type:空间数据类型(1:[multi]point, 2:[multi]line, 3:[multi]poly, 4:collection),我们管网中常用的简单点为1,简单线为2。

5)重复3~4步骤,给fitting节点表建立TopoGeometry列并填充数据,fitting表会建立起与node表的对应关系。

参考资料

官方文档:http://postgis.net/docs/manual-dev/Topology.html#Topology_Processing

WIKI:http://trac.osgeo.org/postgis/wiki/UsersWikiPostgisTopology

示例:http://blog.mathieu-leplatre.info/use-postgis-topologies-to-clean-up-road-networks.html

免责声明:文章转载自《PostGIS拓扑:TOPOLOGY》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇springboot图片/文件上传lwip TCP client & FreeRTOS 打开TCP 的 保活机制 LWIP_TCP_KEEPALIVE==1下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

CentOS 7 安装、配置、使用 PostgreSQL 9.5及PostGIS2.2

学习CentOS下安装使用PostgreSQL 【安装过程】 1.添加RPM    yum install https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-2.noarch.rpm2.安装PostgreSQL 9.5     y...

流式实时分布式计算的设计

https://blog.csdn.net/anzhsoft/article/details/38168025 1. 流式计算的背景和特点 现在很多公司每天都会产生数以TB级的大数据,如何对这些数据进行挖掘,分析成了很重要的课题。比如: 电子商务:需要处理并且挖掘用户行为产生的数据,产生推荐,从而带来更多的流量和收益。最理想的推荐就是根据兴趣推荐给用户本来...

OpenSUSE 安装 PostGIS 3 (Postgresql 13)

目录 1、获取 PostGIS 软件源 2、安装 PostGIS 软件 3、配置 PostGIS 软件 4、启动 PostGIS 服务 1、获取 PostGIS 软件源 直接到 https://software.opensuse.org/explor 网站,选择对应的发行版后,搜索 postgis,然后在搜索到的结果里面找到要安装的版本,查看相...

【ArcGIS 10.2新特性】ArcGIS 10.2将PostgreSQL原生数据发布为要素服务

1、ArcGIS 10.2支持原生数据发布为要素服    有没有将自己已有的空间数据发布为要素服务的需求?有没有将非Esri空间数据类型的数据作为服务在Web端展示的需求?    ArcGIS 10.2 for Server增加了这方面的能力,ArcGIS 10.2 for Server 可以将原生数据库中的空间数据发布为要素服务。    想必都知道现在的...

PostGIS数据库导入SHP数据

1 - 通过QGIS数据库管理工具将shp导入到postgis数据库 选择数据源中postgis对应的数据库schema(架构),然后选择导入图层或文件,弹出导入矢量图层面板。 关于选项的说明: 1) 源空间参考与目标空间参考无特殊需要,应当与数据源保持一致 2) 编码默认即可,不进行选择,如选择编码UTF-8,会导致中文乱码。 3) 需要注意源shp...

【转载】Apache Storm 官方文档 —— 基础概念

【转载自https://yq.aliyun.com/articles/87510?t=t1】 Storm 系统中包含以下几个基本概念: 拓扑(Topologies) 流(Streams) 数据源(Spouts) 数据流处理组件(Bolts) 数据流分组(Stream groupings) 可靠性(Reliability) 任务(Tasks) 工作进程(W...