我正在使用ESRI堆栈,将图层存储在启用了sql-spatial的SDE地理数据库(几何类型,Web Mercator-3857)中。
我正在构建一个Web制图应用程序,因此默认情况下,图块也位于Web Merator 3857中。
通过存储的proc,我使用STDistance来查询从用户位置(Web Mercator中的坐标)到各个层的距离。
问题是,由于网络墨卡托变形,距离距离赤道越远,我的距离计算越来越少。
我曾想过将图层存储在sql-spatial-geography(而非几何)类型中,但是:
- 我想我的距离查询将花费更长的时间(球面上的距离计算)
- 我将需要重新导入很多数据
- arcgis服务不会像他们需要的那样快速地进行投影
如果我去Google地图并进行距离计算,即使在北/北地区,返回的距离也要精确得多,因此我认为Google必须纠正由网络墨卡托投影引起的失真。
那么我的问题是:是否有一个简单的因子值可以应用于网络墨卡托投影中进行的距离计算,以获得“正确的”距离?
cos((l1 + l2)/2)
这将为您提供菱形线/恒定航向距离,而不是大圆距。