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
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    WPF DelegateCommand 出现Specified cast is not valid
    WPF DelegateCommand 出现Specified cast is not valid
    WPF DelegateCommand 出现Specified cast is not valid
    win10 sdk 是否向下兼容
    win10 sdk 是否向下兼容
    win10 sdk 是否向下兼容
    PHP extract() 函数
    PHP end() 函数
    PHP each() 函数
    PHP current() 函数
  • 原文地址:https://www.cnblogs.com/gaofan/p/11459809.html
Copyright © 2011-2022 走看看