2009-10-23 3 views
2

Je devine que les unités qu'il utilise est mètres (m), mais il ne semble pas clair de la documentation que j'ai trouvé. Est-ce correct?Quelles sont les unités utilisées par le module "earthdistance" de PostgreSQL?

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; 
} 

Répondre

6

La documentation semble sans ambiguïté. La plupart du module utilise des compteurs par défaut. Mais vous pouvez changer cela pour toutes les unités que vous aimez en modifiant une seule fonction, earth. Vraisemblablement, toutes les autres fonctions utilisent cette fonction pour que vos unités puissent être arbitraires si elles sont remplacées. Notez cependant que l'opérateur point <@> point fonctionne toujours en miles, et cela ne peut pas être ajusté.

Vos fonctions de conversion sont correctes, mais c'est facile de vérifier ainsi:

1

Le rayon de la Terre est obtenue à partir de la terre() fonction. Il est donné en mètres

Si le rayon de la Terre est en mètres, je vais deviner que vos calculs seront erronés à moins que vous n'utilisiez aussi des mètres.

1

La documentation est clair: le paragraphe 2 de la section F.8.1 dit: "Le rayon de la Terre est obtenu à partir de la fonction terre(). Il est donné en mètres. "

+0

Oui, mais cela parle de la fonction earth(), il fait ne mentionne pas quelles unités l'autre fonctionne. J'en ai déduit qu'ils utilisent tous des compteurs de cette ligne, mais ce n'est définitivement * pas * clair. –

+1

Il est apparemment exprimé en termes de ce que renvoie earth() (c'est ainsi que je comprends le commentaire disant que vous pouvez modifier earth() selon vos besoins). Vous êtes sur une sphère (c'est une approximation mais le manuel le mentionne), la seule distance pertinente est le rayon. Toutes les autres valeurs sont soit des angles, soit des distances où le rayon est un facteur (c'est-à-dire que si le rayon est multiplié par 2, toutes les distances que vous calculerez le seront également). –

-1

Si vous avez entrée en mètres, puis utilisez comme ceci:

radius_in_metres/1.609 
+0

c'est ce que Matt Huggins a dit, sauf qu'il ne se trompe pas d'un facteur d'environ 1000 – Jasen

Questions connexes