Quelles unités le module “Earthdistance” de PostgreSQL utilise-t-il?
-
06-07-2019 - |
Question
Je suppose que les unités qu’il utilise sont des mètres (m), mais cela ne semble pas clair à partir de documentation que j'ai trouvée. Est-ce correct?
Si oui, juste pour vérifier, afin de convertir entre miles / mètres, je suppose que ces fonctions devraient faire l'affaire:
public static function mi2m($mi) { // miles to meters
return $mi * 1609.344;
}
public static function m2mi($m) { // meters to miles
return $m * 0.000621371192;
}
La solution
La documentation semble sans ambiguïté. La plupart des modules utilisent des compteurs par défaut. Mais vous pouvez modifier cela en choisissant les unités de votre choix en modifiant une seule fonction, earth
. Vraisemblablement, toutes les autres fonctions utilisent cette fonction afin que vos unités puissent être arbitraires si elle est surchargée.
Notez bien que le point < @ > L'opérateur de point
fonctionne toujours en miles et cela ne peut pas être ajusté .
Vos fonctions de conversion sont correctes, mais vous pouvez également les vérifier facilement:
Autres conseils
Le rayon de la Terre est obtenu à partir de la fonction terre (). Il est donné en mètres
Si le rayon de la Terre est exprimé en mètres, je suppose que vos calculs seront faux, à moins que vous utilisiez également des mètres.
La documentation est claire: le paragraphe 2 de la section F.8.1 indique: «Le rayon de la Terre est obtenu à partir de la fonction de la Terre (). Il est donné en mètres. "
Si vous avez entré des mètres, utilisez-le comme ceci:
radius_in_metres/1.609