首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将两个地图位置组合成一个更精确的位置?

如何将两个地图位置组合成一个更精确的位置?
EN

Stack Overflow用户
提问于 2017-07-04 11:26:49
回答 1查看 1K关注 0票数 0

我正在创建一个应用程序,它对Android设备的位置有一个非常准确的估计。我还需要将这些数据发送到代理服务器。

我的当前实现获取设备本身上的GPS位置,并将其发送给代理。此外,它还向服务器发送谷歌的GeoLocation API所需的数据,例如wifi访问点,然后服务器调用该API并获取另一个位置。GPS定位和地理定位都在表格中。

代码语言:javascript
复制
{
  center: {
    lat: ...,
    lng: ...,
   },
   accuracy: ...
}

这意味着,对于一个位置,我最终得到了两个不同的估计器,每个估计器都有自己的中心和精度。我的问题如下:

有没有办法将这两个地点组合成一个单一的、更精确的位置?理想情况下,我希望使用一些API,它接受上面表单上的几个对象,并返回一个具有新中心的对象,其精度值低于所提供的位置。如果没有这样的API,那么如果有人可以帮助我开发一个具有预期效果的算法,那也很好。

由于这些位置估计的是相同的真实位置,将它们组合在一起应该能够产生更好的结果。我无法通过谷歌搜索或阅读带有google-geolocation标签的所有问题的几页来找到答案。

这是一个有点难分类的问题,结果可能更适合https://stats.stackexchange.com/的统计学家。如果是的话,让我知道,我会在那里回答我的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-04 17:08:36

基本上,您的问题分解为找到包含两个圆的交点的圆,这两个圆圈是由地理位置和GPS位置给出的。

为了简单起见,让我们将地理定位x1的纬度称为经度y1和精度r1,而我们表示的是GPS位置x2、经度y2和精度r2的纬度。请注意,我使用的是笛卡尔坐标。在做下面的计算之前,你必须转换你给定的极坐标。

这两个圆圈

  • 完全分开,没有共同点。通过假设所报告的位置是正确的,即设备不在计算的位置之外,我们放弃了这种情况。如果你不想做这个假设-选择更准确的位置。
  • 被控制在另一个。在这种情况下,您只需选择较小(即更精确)的圆圈作为优化位置。
  • 在一个点上相交(头奖!-你有准确的位置)
  • 相交在一个像这样的不对称透镜中

你需要计算的是不对称透镜的中点(x3,y3),在[(x1,y1)(x2,y2)]和生成圆半径r3之间的线上。

作为一个很好的资源,我向您推荐保罗·伯克的网页,它也提供了一些实现,例如在Python中,请不要混淆本文中的x3y3,因为我选择了更适合您的问题的替代命名。

然后由x3 = x1 + a*(x2-x1)/dy3 = y1 + a*(y2-y1)/dr3 = sqrt((r1)^2-a^2)给出优化的位置,其中a = ((r1)^2-(r2)^2+d^2)/2*dd = (sqrt((x2-x1)^2+(y2-y1)^2)

剩下的取决于你,因为我不知道你在用哪种语言。如果有什么不清楚的地方,可以随意评论这个答案。

编辑:如果您搜索圆圈相交,您会发现更多的例子,例如这个涉及Google的问题

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

https://stackoverflow.com/questions/44904731

复制
相关文章

相似问题

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