【问题标题】:how to calculate all points(longitude,latitude) within a given radius from given point (longitude,latitude)?如何从给定点(经度,纬度)计算给定半径内的所有点(经度,纬度)?
【发布时间】:2012-06-03 06:59:50
【问题描述】:

我有一个给定点(经度、纬度),我想获取所有点范围,比如说给定点半径为 5 英里?

【问题讨论】:

  • 我认为你应该更具体...这是一个 Java 问题,对吧?
  • What have you tried? 我的意思是除了请互联网上的随机陌生人为你做这件事。
  • 这与Java无关,它是一个基本的球面几何问题,对于SO来说是题外话。顺便说一句,“所有点”将消耗比整个宇宙中当前可用的内存更多的内存。

标签: java geolocation latitude-longitude


【解决方案1】:

我只是在这里猜测,但我认为您需要找到不同的方法。如果您尝试使用 Foursquare、Google 地图等来查找您当前位置 5 英里半径内的地点,我想您会发现这些服务计算该半径内的所有点,然后将它们与这些点的位置匹配。

代码背后可能会有一些聪明的人做这样的事情......

  1. 获取用户当前位置
  2. 找到当前位置所在的郊区(或者找不到,找到城市)。同时找到与此相邻的所有周边郊区。
  3. 查找这些郊区内的所有地点,并计算它们与当前用户位置的距离

这种过程是这些服务可以采用的一种潜在方法。这处理位置比较的一小部分,执行起来相对较快。此外,地图上的地点通常都有与之关联的郊区/城市,因此数据库查找地点会相当快,因为​​会有一个涉及郊区的索引。

如果您的目标是做这样的事情,我会尝试找出一种不同的方法来比较点,而不是简单地尝试计算半径内的所有内容。

当然,还有很多特定的算法可以更好地计算这个,但这不是我的专业领域,更适合另一个论坛。我并不是说这是最好的方法,但是还有很多其他方法可以依赖已知的位置数据,这些数据比您建议的要求更快、更智能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-05
    • 1970-01-01
    • 2021-10-10
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 2018-10-26
    • 2011-02-12
    相关资源
    最近更新 更多