首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ol3 -在epgs 3857中计算实测表

ol3 -在epgs 3857中计算实测表
EN

Stack Overflow用户
提问于 2015-04-16 09:19:16
回答 3查看 5.9K关注 0票数 2

我使用ol3作为地图服务。

我用坐标:linestring做了两个点:[[0,0],[0,1000]],用vincenty公式计算了距离。这导致1000米,什么是准确的。

但是当我再做一次linestring时,例如[[4052627,3971934],[4052627,3972934]],vincenty的距离大约是850米。

我不知道我在这里忘了什么。有办法纠正吗?我想计算出在给定的实际距离下,epgs:3857米(单位)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-05-31 13:10:43

经过大量的搜索,我找到了这个PDF文档:

网络墨卡托:非共形,非墨卡托

有一种叫做Point Scale Factor的东西--根据网络墨卡托的投影方式--它有两个值,一个不像普通的墨卡托、North/South Scale FactorEast/West Scale Factor

在我的程序中,我忽略了East/West Scale Factors,因为它太小了。

一旦我计算出标度因子,实际距离几乎等于scale_factor * epgs_3857_distence

票数 0
EN

Stack Overflow用户

发布于 2015-04-16 15:59:07

您可以使用ol.sphere.haversineDistance

代码语言:javascript
复制
  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
票数 2
EN

Stack Overflow用户

发布于 2015-04-16 10:48:25

距离是很棘手的。坐标系统的地图单位以米为单位(如epsg:3857)这一事实并不意味着你可以直接测量米的距离。请参阅预测,并查看其中有多少具有“等距”属性。

我建议您使用turf.js来计算精确的大地距离:distance.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29670384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档