PostGIS 3.7 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, child_layer
  2. topology_name, tab, column_name, layer_id, feature_type, child_layer
RenameTopoGeometryColumn (layer_table, feature_column, new_name)    TopoGeometry カラムの名前を変更します
DropTopology (topology_schema_name)    使用上の注意: この関数によって、トポロジスキーマが削除され、topology.topologyテーブルからの参照が削除され、geometry_columns テーブルから削除対象スキーマ内のテーブルへの参照が削除されます。
RenameTopology (old_name, new_name)    トポロジ名を変更します
DropTopoGeometryColumn (schema_name, table_name, column_name)    schema_nameで指定されたスキーマ内にあるtable_nameで指定されたテーブルから TopoGeometry カラムを削除し、topology.layer テーブルにある登録を解除します。
FixCorruptTopoGeometryColumn (layerSchema, layerTable, layerColumn )    postgis_topology を 3.6.0以上にアップグレードする際に発生するポジオメトリーの間違いを訂正します。
Populate_Topology_Layer ()    テーブルからメタデータを読み、topology.layer テーブルに不足しているものを追加します。
TopologySummary (topology_schema_name)    トポロジ名を取り、トポロジ内のオブジェクトの型に関する概要の全体を提供します。
ValidateTopology (toponame, bbox)    トポロジの問題についての詳細を示す validatetopology_returntype の集合を返します。
ValidateTopologyRelation (toponame)    不正なトポロジ関係の行に関する情報を返します。
ValidateTopologyPrecision (toponame, bbox, gridSize)    トポロジ内の低精度の頂点を返します。
MakeTopologyPrecise (toponame, bbox, gridSize)    トポロジの頂点を精度グリッドにスナップします。
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
TotalTopologySize (toponame)    指定したトポロジが使用するディスク容量の総量を得ます。インデックスや TOAST データも含みます。
UpgradeTopology (toponame)    指定したトポロジーに対して、トポロジー ID とプリミティブ ID が大きな数 (int8) に対応するようアップグレードします。

トポロジ統計管理

トポロジコンストラクタ
CreateTopology (topology_schema_name, srid, prec=0, hasz=false, topoid=0, useslargeids=false)    新しいトポロジスキーマを生成し、topology.topology テーブルに登録します。
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  2 (atopology, aline, tolerance, max_edges)    許容差を使って既存のトポロジにラインストリングを追加し、可能ならエッジ/フェイスを分割します。
TopoGeo_AddPolygon (atopology, apoly, tolerance)    許容差を使って既存のトポロジにラインストリングを追加し、可能ならエッジ/フェイスを分割します。エッジ識別番号を返します。
TopoGeo_LoadGeometry (atopology, ageom, 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)    与えられたノードに付随するエッジの集合を整列して返します。
FindVertexSegmentPairsBelowDistance  1 (atopology, tolerance)    許容距離内にあるトポロジーの頂点/線分の組を検索します。

トポロジ処理
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, tg_id
  2. toponame, tg_type, layer_id
toTopoGeom    単純なジオメトリーから TopoGeometry を生成します。
  1. geom, toponame, layer_id, tolerance=-1
  2. geom, topogeom, tolerance=-1
TopoElementArray_Agg (tefield)    element_id とタイプの配列 (topoelements) からなるtopoelementarrayを返します。
TopoElement (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 (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 を返します。

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