Name

ST_FrechetDistance — Renvoie la distance de Fréchet entre deux géométries.

Synopsis

float ST_FrechetDistance(geometry g1, geometry g2, float densifyFrac = -1);

Description

Implémente l'algorithme de calcul de la distance de Fréchet limitée aux points discrets pour les deux géométries, basé sur Computing Discrete Fréchet Distance. La distance de Fréchet est une mesure de similarité entre les courbes qui tient compte de l'emplacement et de l'ordre des points le long des courbes. Elle est donc souvent meilleure que la distance de Hausdorff.

Lorsque le paramètre optionnel densifyFrac est spécifié, cette fonction effectue une densification des segments avant de calculer la distance de Fréchet discrète. Le paramètre densifyFrac définit la fraction par laquelle chaque segment doit être densifié. Chaque segment sera divisé en un certain nombre de sous-segments de longueur égale, dont la fraction de la longueur totale est la plus proche de la fraction donnée.

Les unités sont celles du système de référence spatiale des géométries.

[Note]

L'implémentation actuelle ne prend en charge que les sommets en tant qu'emplacements discrets. Elle pourrait être étendue pour permettre l'utilisation d'une densité arbitraire de points.

[Note]

Plus la valeur de densifyFrac spécifiée est petite, plus la distance de Fréchet est précise. Mais le temps de calcul et l'utilisation de la mémoire augmentent avec le carré du nombre de sous-segments.

Effectué par le module GEOS.

Disponibilité : 2.4.0 - nécessite GEOS >= 3.7.0

Exemples

postgres=# SELECT st_frechetdistance('LINESTRING (0 0, 100 0)'::geometry, 'LINESTRING (0 0, 50 50, 100 0)'::geometry);
 st_frechetdistance
--------------------
   70.7106781186548
(1 row)
                        
SELECT st_frechetdistance('LINESTRING (0 0, 100 0)'::geometry, 'LINESTRING (0 0, 50 50, 100 0)'::geometry, 0.5);
 st_frechetdistance
--------------------
                 50
(1 row)
                        

Voir aussi

ST_HausdorffDistance