Suite

Résultats différents de GeographyFromText et ST_SetSRID+ST_MakePoint ?


Pourquoi est-ce que j'obtiens des résultats différents ?

SELECT ST_DISTANCE( ST_GeographyFromText('SRID=4326;POINT(13.401111 52.383343)'), --berlin ST_GeographyFromText('SRID=4326;POINT(9.997559 53.533778)') --hamburg );

= 262077.401614256

SELECT ST_DISTANCE( ST_SetSRID(ST_MakePoint(13.401111, 52.383343), 4326), ST_SetSRID(ST_MakePoint(9.997559, 53.533778), 4326) );

= 3.592724162238034

Le premier résultat ressemble beaucoup plus à la réalité ;-)

Éditer: a dû convertir les points de la deuxième requête en géographie.

SELECT ST_DISTANCE( ST_SetSRID(ST_MakePoint(13.401111, 52.383343), 4326)::geography, ST_SetSRID(ST_MakePoint(9.997559, 53.533778), 4326)::geography );

Je ne comprends toujours pas pourquoi je dois faire ça. SRID=4326 n'est-il pas suffisant pour que ST_DISTANCE sache quel type de point je passe ?


ST_Distance (suivant la documentation) - Pour géométrie type Renvoie la distance minimale cartésienne en 2 dimensions (basée sur la référence spatiale) entre deux géométries en unités projetées. Pour la géographie tapez les valeurs par défaut pour renvoyer la distance minimale sphéroïdale entre deux zones géographiques en mètres.

Donc - si vous l'alimentez avec la géométrie, 4326 vous obtiendrez la distance en unités de 4326 qui est en degrés ; si vous le nourrissez de géographie, vous obtiendrez la distance en mètres…


Voir la vidéo: Geometry Creation and Manipulation Using PostGIS. PostGIS Baby Steps (Octobre 2021).