Suite

La distance du point PostGIS par rapport au polygone n'est pas 0 lorsqu'il est sur le bord

La distance du point PostGIS par rapport au polygone n'est pas 0 lorsqu'il est sur le bord


J'ai un problème assez simple :

SELECT * FROM ST_Distance(ST_GeographyFromText('POLYGON((70 -40,70 -39,71 -39,71 -40,70 -40))'), ST_GeographyFromText('POINT(70.48 -39)'), False)

renvoie 118.45656881 Ne devrait-il pas être 0 ? Le point n'est-il pas sur le bord du polygone ? Pourquoi

SELECT * FROM ST_Distance(ST_GeographyFromText('POLYGONE((70 -40,70 -39,71 -39,71 -40,70 -40))'), ST_GeographyFromText('POINT(70.48 -40)'), False)

retourner 0 ?

SELECT * FROM ST_Distance(ST_GeographyFromText('POINT(70 -39,5)'), ST_GeographyFromText('POINT(70 -39)')); SELECT * FROM ST_Distance(ST_GeographyFromText('POINT(70 -39,5)'), ST_GeographyFromText('POINT(70 -40)'));

Pourquoi cela renvoie-t-il deux nombres différents (bien que légèrement) ?


La vidéo l'explique très bien. Si vous prenez le bord en question et le segmentez

SELECT st_asewkt( st_segmentize(geog,10000)) FROM ST_GeographyFromText('LINESTRING (70 -39,71 -39)') geog

tu vas avoir ce qui suit :

le point est le point sur lequel vous posez la question. La ligne représente le bord. Le nord est en haut.

(mesure de distance faite à la main, pas d'accrochage)

Quant à la 2ème requête qui renvoie 0 ? C'est le cas parce que le point est en fait à l'intérieur de votre polygone.

Pour être plus clair, l'intersection entre les deux géométries est vide car elles ne se chevauchent tout simplement pas.

select st_asewkt(st_intersection(ST_GeographyFromText('POLYGON((70 -40,70 -39,71 -39,71 -40,70 -40))'), ST_GeographyFromText('POINT(70.48 -39)'))) st_asewkt - ------------- SRID=4326;GEOMETRIECOLLECTION VIDE