从纬度/经度和“半径”创建边界框

时间:2012-11-12 17:56:15

标签: php latitude-longitude

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

我似乎找不到任何能够用简单的术语解释它的作用以及考虑到地球'膨胀'曲率的东西。

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

我个人更喜欢MongoDB版本,因为它默认安装,您可以轻松搜索

  • Radius
  • Box
  • Polygon
  • 距离

请参阅

答案 2 :(得分:0)

为了方便起见,我已切换到MongoDB的系统,目前正在使用MongoHQ的REST API通过其地理API访问数据。