PostGIS 3.4 Topology Cheatsheet

このリリースの新機能 1このリリースで強化 2   GEOS (3.9,3.10,3.11,3.12) 以上 g3.9  
トポロジ型
getfaceedges_returntype    順序番号とエッジ番号で構成される複合型。
TopoGeometry    トポロジとして定義されたジオメトリを表現する型です。
validatetopology_returntype    エラーメッセージとエラーの場所を示すid1とid2からなる複合型です。これはValidateTopologyが返す型です。

トポロジドメイン
TopoElement    二つの整数の配列で、通常TopoGeometry要素を識別するために使われます。
TopoElementArray    TopoElementオブジェクトの配列。

トポロジ管理とTopoGeometry管理
AddTopoGeometryColumn    既存のテーブルにTopoGeometryカラムを追加し、topology.layer内に新しいレイヤとして新しいカラムを登録して、新しい layer_id を返します。
  1. topology_name, schema_name, table_name, column_name, feature_type
  2. topology_name, schema_name, table_name, column_name, feature_type, child_layer
RenameTopoGeometryColumn  1 (layer_table, feature_column, new_name)    TopoGeometryカラムの名前を変更します
DropTopology (topology_schema_name)    使用上の注意: この関数によって、トポロジスキーマが削除され、topology.topologyテーブルからの参照が削除され、geometry_columnsテーブルから削除対象スキーマ内のテーブルへの参照が削除されます。
RenameTopology  1 (old_name, new_name)    トポロジ名を変更します
DropTopoGeometryColumn (schema_name, table_name, column_name)    schema_nameで指定されたスキーマ内にあるtable_nameで指定されたテーブルからTopoGeometryカラムを削除し、topology.layerテーブルにある登録を解除します。
Populate_Topology_Layer ()    テーブルからメタデータを読み、topology.layerテーブルに不足しているものを追加します。
TopologySummary (topology_schema_name)    トポロジ名を取り、トポロジ内のオブジェクトの型に関する概要の全体を提供します。
ValidateTopology (toponame, bbox)    トポロジの問題についての詳細を示すvalidatetopology_returntypeの集合を返します。
ValidateTopologyRelation (toponame)    不正なトポロジ関係の行に関する情報を返します。
FindTopology    異なる方法でトポロジ行を返します。
  1. topogeom
  2. layerTable, layerColumn
  3. layerSchema, layerTable, layerColumn
  4. topoName
  5. id
FindLayer    様々な方法でtopology.layer行を返します。
  1. tg
  2. layer_table, feature_column
  3. schema_name, table_name, feature_column
  4. topology_id, layer_id

トポロジ統計管理

トポロジコンストラクタ
CreateTopology    新しいトポロジスキーマを生成し、topology.topologyテーブルに登録します。
  1. topology_schema_name
  2. topology_schema_name, srid
  3. topology_schema_name, srid, prec
  4. topology_schema_name, srid, prec, hasz
CopyTopology (existing_topology_name, new_name)    トポロジ (ノード、エッジ、フェイス、レイヤとTopoGeometry)の新しいスキーマに複写します。
ST_InitTopoGeo  mm (topology_schema_name)    新しいトポロジスキーマを生成し、topology.topologyテーブルに登録します。
ST_CreateTopoGeo  mm (atopology, acollection)    空のトポロジにジオメトリのコレクションを追加し、成否を示すメッセージを返します。
TopoGeo_AddPoint (atopology, apoint, tolerance)    許容差を使って既存のトポロジにポイントを追加し、可能ならエッジを分割します。
TopoGeo_AddLineString (atopology, aline, tolerance)    許容差を使って既存のトポロジにラインストリングを追加し、可能ならエッジ/フェイスを分割します。エッジ識別番号を返します。
TopoGeo_AddPolygon (atopology, apoly, tolerance)    許容差を使って既存のトポロジにラインストリングを追加し、可能ならエッジ/フェイスを分割します。エッジ識別番号を返します。

トポロジエディタ
ST_AddIsoNode  mm (atopology, aface, apoint)    フェイスに孤立ノードを追加し、新しいノードの識別番号を返します。フェイスがNULLの場合でもノードは生成されます。
ST_AddIsoEdge  mm (atopology, anode, anothernode, alinestring)    anodeとanothernodeで指定される二つの既存孤立ノードを接続するトポロジに、ジオメトリalinestringで定義される孤立エッジを追加し、新しいエッジの識別番号を返します。
ST_AddEdgeNewFaces  mm (atopology, anode, anothernode, acurve)    新しいエッジを追加します。新しいエッジがフェイスを分割する場合には、もとのフェイスを削除して、分割した二つのフェイスに置き換えます。
ST_AddEdgeModFace  mm (atopology, anode, anothernode, acurve)    新しいエッジを追加します。新しいエッジがフェイスを分割する場合には、もとのフェイスを編集し、一つのフェイスを追加します。
ST_RemEdgeNewFace  mm (atopology, anedge)    エッジを削除し、消去対象エッジでフェイスが二つに分割されているなら元の二つのフェイスを削除し、一つの新しいフェイスに置き換えます。
ST_RemEdgeModFace  mm (atopology, anedge)    エッジを削除します。削除されるエッジが二つのフェイスを分割していたなら、一方のフェイスを削除し、もう一方のフェイスを両方の空間を覆うように編集します。
ST_ChangeEdgeGeom  mm (atopology, anedge, acurve)    トポロジ構造に影響を与えることなくエッジの形状を変更します。
ST_ModEdgeSplit  mm (atopology, anedge, apoint)    既存のエッジに沿って新しいノードを生成してエッジを分割します。もとのエッジは変更され、新しいエッジが一つ追加されます。
ST_ModEdgeHeal  mm (atopology, anedge, anotheredge)    二つのエッジについて、接続しているノードを削除して修復します。1番目のエッジを編集して、2番目のエッジを削除します。削除されたノードの識別番号を返します。
ST_NewEdgeHeal  mm (atopology, anedge, anotheredge)    二つのエッジについて、接続しているノードを削除して修復します。両方のエッジを削除し、1番目のエッジと同じ方向のエッジに置き換えます。
ST_MoveIsoNode  mm (atopology, anode, apoint)    トポロジ内の孤立ノードを別の位置に移動させます。新しいapointジオメトリがノードとして存在しているなら、エラーが投げられます。移動に関する説明を返します。
ST_NewEdgesSplit  mm (atopology, anedge, apoint)    新しいノードを既存のエッジに沿って作成して、エッジを分割します。もとのエッジは削除され、二つのエッジに置き換えられます。二つの新しいエッジに接続する新しいノードの識別番号を返します。
ST_RemoveIsoNode  mm (atopology, anode)    孤立ノードを削除し、実行結果が返されます。ノードが孤立していない (エッジの始端または終端である)場合には、例外が投げられます。
ST_RemoveIsoEdge  mm (atopology, anedge)    孤立エッジを削除し、実行結果の記述を返します。エッジが孤立していない場合には、例外が投げられます。

トポロジアクセサ
GetEdgeByPoint (atopology, apoint, tol1)    与えられたポイントにインタセクトするエッジの識別番号を探索します。
GetFaceByPoint (atopology, apoint, tol1)    与えたポイントとインタセクトするフェイスを見つけます。
GetFaceContainingPoint (atopology, apoint)    ポイントを含むフェイスを見つけます。
GetNodeByPoint (atopology, apoint, tol1)    ポイント位置にあるノードの識別番号を探索します。
GetTopologyID (toponame)    トポロジ名からtopology.topologyテーブル内にあるトポロジの識別番号を返します。
GetTopologySRID (toponame)    トポロジ名からtopology.topologyテーブル内にあるトポロジのSRIDを返します。
GetTopologyName (topology_id)    識別番号からトポロジ (スキーマ)の名前を返します。
ST_GetFaceEdges  mm (atopology, aface)    順序番号を含む、afaceの境界となる、整列したエッジの集合を返します。
ST_GetFaceGeometry  mm (atopology, aface)    指定されたトポロジの中の、フェイス識別番号で指定されたポリゴンを返します。
GetRingEdges (atopology, aring, max_edges=null)    与えられた側を歩いて得られた、正負符号付きエッジ識別番号の集合を、順序通りに返します。
GetNodeEdges (atopology, anode)    与えられたノードに付随するエッジの集合を整列して返します。

トポロジ処理
Polygonize (toponame)    トポロジエッジで定義される全てのフェイスを探索し、追加します。
AddNode (toponame, apoint, allowEdgeSplitting=false, computeContainingFace=false)    指定したトポロジスキーマのノードテーブルにポイントノードを追加し、新しいノードの識別番号を返します。指定したポイントに既にノードがある場合は既存のノード識別番号を返します。
AddEdge (toponame, aline)    指定したラインストリングジオメトリを使って、ラインストリングエッジをエッジテーブルに追加し、指定したトポロジスキーマの始点終点をポイントノードテーブルに追加し、新しい (または既存の)エッジの識別番号を返します。
AddFace (toponame, apolygon, force_new=false)    フェイスプリミティブをトポロジに登録し、その識別番号を得ます。
ST_Simplify (tg, tolerance)    与えたTopoGeometryを「シンプル化した」ジオメトリを返します。ダグラス-ポーカーのアルゴリズムを使います。
RemoveUnusedPrimitives (topology_name, bbox)    存在するTopoGeometryオブジェクトを定義するのに必要でないトポロジプリミティブを削除します。

TopoGeometryコンストラクタ
CreateTopoGeom    新しいTopoGeometryオブジェクトをtopoエレメント配列から生成します - tg_type: 1:[multi]point, 2:[multi]line, 3:[multi]poly, 4:collection
  1. toponame, tg_type, layer_id, tg_objs
  2. toponame, tg_type, layer_id
toTopoGeom    単純なジオメトリからTopoGeometryを生成します。
  1. geom, toponame, layer_id, tolerance
  2. geom, topogeom, tolerance
TopoElementArray_Agg (tefield)    element_idとタイプの配列 (topoelements)からなるtopoelementarrayを返します。
TopoElement  1 (topo)    TopoGeometryをTopoElementに変換します。

TopoGeometryエディタ
clearTopoGeom (topogeom)    TopoGeometryの中身を消去します。
TopoGeom_addElement (tg, el)    TopoGeometryの定義に要素を追加します。
TopoGeom_remElement (tg, el)    TopoGeometryの定義から要素を削除します。
TopoGeom_addTopoGeom (tgt, src)    TopoGeometryの要素を他のTopoGeometryの定義に追加します。
toTopoGeom    ジオメトリの形状を既存のTopoGeometryに追加します。

TopoGeometryアクセサ
GetTopoGeomElementArray    与えられたTopoGeometry (プリミティブ要素)のトポロジ要素とタイプを含むtopoelementarray (topoelementの配列)を返します。
  1. toponame, layer_id, tg_id
  2. tg
GetTopoGeomElements    与えられたTopoGeometry (プリミティブ要素)の、トポロジのelement_idとelement_typeを含むtopoelementオブジェクトの集合を返します。
  1. toponame, layer_id, tg_id
  2. tg
ST_SRID  mm (tg)    TopoGeometryの空間参照識別子を返します。

TopoGeometry出力
AsGML    TopoGeometryのGML表現を返します。
  1. tg
  2. tg, nsprefix_in
  3. tg, visitedTable
  4. tg, visitedTable, nsprefix
  5. tg, nsprefix_in, precision, options
  6. tg, nsprefix_in, precision, options, visitedTable
  7. tg, nsprefix_in, precision, options, visitedTable, idprefix
  8. tg, nsprefix_in, precision, options, visitedTable, idprefix, gmlversion
AsTopoJSON (tg, edgeMapTable)    opoGeometryのTopoJSON表現を返します。

トポロジ空間関係関数
Equals  3d (tg1, tg2)    二つのTopoGeometryが同じトポロジプリミティブで成っている場合にtrueを返します。
Intersects  3d (tg1, tg2)    二つのTopoGeometryからのプリミティブの組がインタセクトする場合にtrueを返します。

トポロジのインポートとエクスポート