Que unidades faz o PostgreSQL “earthdistance” uso módulo?
-
06-07-2019 - |
Pergunta
Eu estou supondo que as unidades que ele usa é metros (m), mas não parece claro a partir do documentação eu encontrei. É este correto?
Se assim for, apenas para verificar, de forma a converter entre milhas / metros, presumo essas funções deve fazer o truque:
public static function mi2m($mi) { // miles to meters
return $mi * 1609.344;
}
public static function m2mi($m) { // meters to miles
return $m * 0.000621371192;
}
Solução
A documentação parece inequívoca. A maior parte do módulo usa metros por padrão. Mas você pode mudar isso a qualquer unidade que você gosta, modificando uma única função, earth
. Presumivelmente, todas as outras funções usar essa função para as suas unidades são capazes de ser arbitrário se este é anulado.
Note que embora o operador point <@> point
sempre trabalha em milhas, e isso pode não ser ajustado .
As suas funções de conversão estão corretas, mas isso é fácil de verificar, assim:
Outras dicas
O raio da Terra é obtido a partir da função de terra (). Ela é dada em metros
Se o raio da Terra é em metros, eu vou adivinhar que a sua matemática vai estar errado a menos que você também usar metros.
A documentação é clara: parágrafo 2 da seção F.8.1 diz: “O raio da Terra é obtido a partir da função terra (). Ela é dada em metros “.
Se você tem entrada em metros, em seguida, usá-lo como este:
radius_in_metres/1.609