La documentation PostGIS indique que ST_PointOnSurface
retourne "un POINT garanti à la surface". Il semble que cette fonction puisse être implémentée de manière triviale pour donner des résultats qui satisfont la documentation mais fournissent peu d'utilité dans le monde réel, bien que je suis certain que PostGIS fournit une implémentation non triviale.
Cette introduction à PostGIS fournit une comparaison et un contraste agréables ST_Centroid
avec ST_PointOnSurface
et dit que "[ST_PointOnSurface] est beaucoup plus cher en termes de calcul que l'opération centroïde".
Y a-t-il une explication plus approfondie de la façon dont ST_PointOnSurface
est calculé? J'ai utilisé ST_Centroid
, mais j'ai rencontré des cas de bord dans mes données où le centroïde est en dehors de la géométrie. Je crois que ST_PointOnSurface
c'est le substitut correct, mais le nom de la fonction et la documentation laissent place à l'incertitude.
De plus, les frais de calcul sont-ils ST_PointOnSurface
encourus même si le centroïde se trouve déjà dans la géométrie?
Réponses:
Sur la base de quelques expériences, je pense que cela
ST_PointOnSurface()
fonctionne à peu près comme ceci, si la géométrie est un polygone:Cela peut ne pas avoir de sens, alors voici un croquis d'un polygone avec un rayon le divisant en parties nord et sud:
Ainsi,
ST_PointOnSurface()
etST_Centroid()
sont généralement des points différents, même sur des polygones convexes.La seule raison de la "surface" dans le nom, je pense, est que si la géométrie a des lignes 3D, le résultat sera simplement l'un des sommets.
Je serais d'accord pour dire que plus d'explications (et une meilleure dénomination) auraient été utiles et j'espère qu'un programmeur GEOS pourrait faire la lumière sur la question.
la source