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 を返します。

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