GetFaceByPoint — Recherche la face intersectant un point donné.
bigint GetFaceByPoint(varchar atopology, geometry apoint, float8 tol1);
Recherche une face référencée par un point, avec une tolérance donnée.
La fonction recherchera effectivement une face coupant un cercle dont le point est le centre et la tolérance le rayon.
Si aucune face n'intersecte l'emplacement de la requête, la valeur 0 est renvoyée (face universelle).
Si plus d'une face croise l'emplacement de la requête, une exception est levée.
Disponibilité : 2.0.0
Amélioration : 3.2.0 mise en œuvre plus efficace et contrat plus clair, arrêt du fonctionnement avec des topologies non valides.
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
This query errors because two or more faces are found.
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
GetFaceContainingPoint, AddFace, GetNodeByPoint, GetEdgeByPoint