名前

GetFaceByPoint — 与えられたポイントにインタセクトするフェイスの識別番号を探索します。

概要

integer GetFaceByPoint(varchar atopology, geometry apoint, float8 tol);

説明

与えられたポイントにインタセクトするフェイスの識別番号を探索します。

この関数は、与えられたトポロジ、ポイント、許容差を引数にして、整数(フェイスの識別番号)を返します。許容差が0の場合には、ポイントはフェイスとインタセクトしていなければなりません。

ポイントがノードの位置である場合には、例外が投げられます。 これを避けるには、GetNodeByPoint関数を実行してください。

ポイントがフェイスにインタセクトしない場合には.、0を返します。

許容差を0より大きくして、ポイント付近のフェイスが1つより多い場合には、例外が投げられます。

[注記]

許容差が0の場合には、ST_Intersectsを使い、それ以外では、ST_DWinthinを使います。

初出: 2.0.0 - GEOS 3.3.0以上が必要

本例ではAddFaceで作ったフェイスを使います。

SELECT topology.GetFaceByPoint('ma_topo',geom, 10) As with1mtol, topology.GetFaceByPoint('ma_topo',geom,0) As withnotol
        FROM ST_GeomFromEWKT('POINT(234604.6 899382.0)') As geom;
        
         with1mtol | withnotol
        -----------+-----------
                         1 |         0
SELECT topology.GetFaceByPoint('ma_topo',geom, 1) As nearnode
        FROM ST_GeomFromEWKT('POINT(227591.9 893900.4)') As geom;
        
-- エラー --
ERROR:  Two or more faces found

関連情報

AddFace, GetNodeByPoint, GetEdgeByPoint