0

我一直在寻找一段代码(最好在 PHP 中),它可以采用纬度、经度和加/减值(以公里为单位)并返回最小和最大纬度和经度。

我似乎找不到任何东西既能用简单的术语解释它的作用,又能考虑到地球的“臃肿”曲率。

任何人都可以帮忙吗?

4

3 回答 3

1

这很棘手,因为纬度/经度是一个角量,而您的半径距离是一个不相容的线性量。

以下是一些解决它的方法,按照准确度递减顺序和编码简单性递增顺序。

  1. 使用投影库首先在投影坐标 (x,y) 中进行计算,然后重新投影回 (lat,lon)。有一个备受推崇的proj4 库的 php 端口,我看到PEAR也有一个投影库。
  2. 通过具有 WGS84 参数的椭球近似地球。请参阅此问题的已接受答案。
  3. 用球体近似地球并使用球面三角法。请参阅此问题的已接受答案。
  4. 为您感兴趣的区域使用简单比例的近似转换因子。请参阅此问题的已接受答案。

我建议不要。1.

于 2012-11-13T07:58:50.303 回答
0

为了让事情变得更容易,我已经切换到 MongoDB 的系统,目前正在使用 MongoHQ 的 REST API 来通过他们的地理 API 访问数据。

于 2012-11-13T14:24:21.553 回答
0

不知道为什么要在纯 PHP 中执行此操作,但要MySQL支持MongoDB地理空间索引,它比任何纯 PHP 实现都具有巨大的性能优势。

我个人更喜欢这个MongoDB版本,因为它默认安装,你可以很容易地搜索

  • 靠近
  • 半径
  • 盒子
  • 多边形
  • 距离

请参见

于 2012-11-12T18:03:54.683 回答