我有一个基于 OpenLayers 的 GIS API。我一直在尝试在 JavaScript 中实现方位角计算,我需要一些方法来计算方位角以执行测试。
我开始使用 PostGIS,但似乎有很多方法可以计算两点之间的方位角。我向您展示了其中的三个,其中一些返回了不同的结果。
-- Example 1 - Result 90
SELECT ST_Azimuth(
ST_Transform(st_geomfromtext('POINT(-81328.998084106 7474929.8690234)', 900913), 4326),
ST_Transform(st_geomfromtext('POINT(4125765.0381464 7474929.8690234)', 900913), 4326)
)/pi()*180
-- Example 2 - Result 155.692090425822
SELECT degrees(
ST_Azimuth(
ST_MakePoint(-81328.998084106, 7474929.8690234)::geography,
ST_MakePoint(4125765.0381464, 7474929.8690234)::geography)
)
-- Example 3 - Result 90
SELECT degrees(
ST_Azimuth(
ST_MakePoint(-81328.998084106, 7474929.8690234),
ST_MakePoint(4125765.0381464, 7474929.8690234))
)
在 PostGIS 中计算方位角的正确方法是什么?当然,我想考虑测地坐标。
有没有办法知道 PostGIS 如何实现计算?我的意思是,是否可以看到“ST_Azimuth”功能的实现方式?