zoukankan      html  css  js  c++  java
  • PostGIS拓扑:TOPOLOGY

    数据准备:建立架构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

    作者: GoodGF
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    Scrum立会报告+燃尽图(Final阶段第一次)
    事后诸葛亮会议
    互评Beta版本
    Beta阶段基于spec评论作品
    Beta阶段基于NABCD评论作品
    作业 20181009-9 每周例行报告
    作业 20180925-1 每周例行报告
    作业 20180925-4 单元测试
    作业 20180925-6 四则运算试题生成
    作业 20180925 -2 功能测试
  • 原文地址:https://www.cnblogs.com/gaofan/p/11459809.html
Copyright © 2011-2022 走看看