What units does the PostgreSQL "earthdistance" module use?
I'm guessing that the units it uses is meters (m), but it doesn't seem clear from the documentation I've found开发者_如何学C. Is this correct?
If so, just to verify, in order to convert between miles/meters, I presume these functions should do the trick:
public static function mi2m($mi) { // miles to meters
return $mi * 1609.344;
}
public static function m2mi($m) { // meters to miles
return $m * 0.000621371192;
}
The documentation seems unambiguous. Most of the module uses metres by default. But you can change that to any units you like by modifying a single function, earth
. Presumably all the other functions use this function so your units are able to be arbitrary if this is overriden.
Note though that the point <@> point
operator always works in miles, and this can't be adjusted.
Your conversion functions are correct, but that's easy to check as well:
- 1 mile in metres
- 1 metre in miles
The radius of the Earth is obtained from the earth() function. It is given in meters
If the radius of the Earth is in meters, I'm gonna guess that your math is going to be wrong unless you also use meters.
The documentation is clear: paragraph 2 of section F.8.1 says: “The radius of the Earth is obtained from the earth() function. It is given in meters.”
If you have input in metres, then use it like this:
radius_in_metres/1.609
精彩评论