toTopoGeom — 単純なジオメトリからTopoGeometryを生成します。
topogeometry toTopoGeom(geometry geom, varchar toponame, integer layer_id, float8 tolerance);
layer_idで示されたレイヤのためのTopoGeometryオブジェクトを生成し、toponame内の関連テーブルに登録します。
入力ジオメトリを表現しなければならないトポロジのプリミティブが追加されます。既存のものを分割することもあります。既存のTopoGeometryオブジェクトは形状を保持します。
toleranceが与えられた場合は、入力ジオメトリは既存のプリミティブにスナップするために使われます。
初出: 2.0
This is a full self-contained workflow
-- セットアップしたトポロジが無い場合に実行します
-- 許容差を認めないトポロジの生成
SELECT topology.CreateTopology('topo_boston_test', 2249);
-- 新規テーブル作成
CREATE TABLE nei_topo(gid serial primary key, nei varchar(30));
-- TopoGeometryカラムの追加
SELECT topology.AddTopoGeometryColumn('topo_boston_test', 'public', 'nei_topo', 'topo', 'MULTIPOLYGON') As new_layer_id;
new_layer_id
-----------
1
-- 新しいTopoGeometryカラムの追加で新しいレイヤ識別番号を使用
-- 新しいレイヤに許容差0でTopoGeometryを追加
INSERT INTO nei_topo(nei, topo)
SELECT nei, topology.toTopoGeom(geom, 'topo_boston_test', 1)
FROM neighborhoods
WHERE gid BETWEEN 1 and 15;
-- 何が起こったかの確認に使用
SELECT * FROM
topology.TopologySummary('topo_boston_test');
-- 概要 --
Topology topo_boston_test (5), SRID 2249, precision 0
61 nodes, 87 edges, 35 faces, 15 topogeoms in 1 layers
Layer 1, type Polygonal (3), 15 topogeoms
Deploy: public.nei_topo.topo