OL3 - 计算EPSG 3857下的实际米数

3
我使用ol3作为地图服务。
我用坐标为[[0,0],[0,1000]]的两个点创建了一个linestring,并使用Vincenty公式计算了距离。结果是1000米,非常准确。
但是,当我创建另一个linestring,例如[[4052627,3971934],[4052627,3972934]]时,Vincenty距离约为850米。
我不知道我忘了什么。有没有办法纠正这个问题?我想计算给定实际距离的epgs:3857米(单位)。
3个回答

2
您可以使用ol.sphere.haversineDistance
  var c1 = [4052627, 3971934];
  var c2 = [4052627,3972934];

  var wgs84Sphere = new ol.Sphere(6378137);
  var length = wgs84Sphere.haversineDistance(
    ol.proj.transform(c1, 'EPSG:3857', 'EPSG:4326'),
    ol.proj.transform(c2, 'EPSG:3857', 'EPSG:4326'));
  // 833.12 m

1
经过大量的搜索,我找到了这份PDF文件:
Web Mercator:非共形,非墨卡托投影
有一种叫做“点比例因子”的东西 - 根据Web墨卡托投影的方式 - 它有两个值,而不像普通的墨卡托投影那样只有一个值,分别是“南北比例因子”和“东西比例因子”。
在我的程序中,我忽略了“东西比例因子”,因为它太小了。
一旦我计算出比例因子,实际距离几乎等于“比例因子 * epgs_3857_distance”。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接