PostGIS Topology

Z GeoWikiCZ

PostGIS Topology je rozšíření pro PostGIS umožňující topologickou správu vektorových dat v prostředí PostGIS/PostgreSQL.

Více přednášky Úvod do zpracování prostorových dat.

Příklad

CREATE SCHEMA my_schema;
SET search_path TO my_schema,public;

Feature table 'kraje'

CREATE TABLE kraje AS SELECT nuts3, st_multi(st_union(geom)) as geom FROM gis1.obce GROUP BY nuts3;
SELECT nuts3,st_geometrytype(geom) AS type, ROUND(st_area(geom)/1e6) AS area from kraje;
 nuts3 |      type       | area  
-------+-----------------+-------
 CZ042 | ST_MultiPolygon |  5341
 CZ081 | ST_MultiPolygon |  5566
 CZ053 | ST_MultiPolygon |  4523
 CZ032 | ST_MultiPolygon |  7566
 CZ041 | ST_MultiPolygon |  3317
 CZ071 | ST_MultiPolygon |  5141
 CZ061 | ST_MultiPolygon |  6924
 CZ051 | ST_MultiPolygon |  3163
 CZ062 | ST_MultiPolygon |  7065
 CZ021 | ST_MultiPolygon | 11013
 CZ072 | ST_MultiPolygon |  3961
 CZ031 | ST_MultiPolygon | 10071
 CZ052 | ST_MultiPolygon |  4767
 CZ011 | ST_MultiPolygon |   496
(14 rows)

Vytvoření topologického schématu 'kraje'

SELECT topology.createtopology('kraje', 2065, 1);

Argumenty:

  • 2065 (EPSG)
  • 1 (přesnost v mapových jednotkách, tj. v tomto případě v metrech)
SELECT * from topology.topology;
 id |   name    | srid | precision | hasz 
----+-----------+------+-----------+------
  1 | kraje     | 2065 |         1 | f
\dt kraje.
          List of relations
 Schema |   Name    | Type  |  Owner  
--------+-----------+-------+---------
 kraje  | edge_data | table | postgis
 kraje  | face      | table | postgis
 kraje  | node      | table | postgis
 kraje  | relation  | table | postgis

Přidání atributu topologie do feature table

select topology.AddTopoGeometryColumn('kraje', 'my_schema', 'kraje', 'topo', 'MULTIPOLYGON');
SELECT * FROM topology.layer;
 topology_id | layer_id | schema_name | table_name | feature_column | feature_type | level | child_id 
-------------+----------+-------------+------------+----------------+--------------+-------+----------
           1 |        1 | my_schema   | kraje      | topo           |            3 |     0 |         

Poznámka: feature_type '3' odpovídá 'face' (1 - node, 2 - edge).

Sestavení topologie (Geometry → TopoGeometry)

CREATE TABLE kraje_topo (ogc_fid SERIAL PRIMARY KEY, nuts3 VARCHAR(80));
SELECT topology.AddTopoGeometryColumn('kraje', 'my_schema', 'kraje_topo', 'topo', 'MULTIPOLYGON');
INSERT INTO kraje_topo(nuts3, topo) SELECT nuts3, topology.toTopoGeom(geom, 'kraje', 1) FROM kraje;

Externí odkazy