2012-11-12 43 views
0

我一直在尋找一段代碼(最好用PHP),它可以獲取緯度,經度和加/減值(以Km爲單位)並返回最小和最大的緯度和經度。從經度/緯度和半徑創建邊界框

我似乎無法找到任何解釋它在簡單化方面所做的事情,也考慮到地球的「膨脹」曲率。

任何人都可以幫忙嗎?

+0

看到了這個問題:http://stackoverflow.com/questions/10398481/given-a-lat-lng-coordinate-calculate-the-min-and-max-lat-lng-values-for-a-10 -km/10413685#10413685 – TreyA

回答

0

不確定爲什麼你要在純PHP中執行此操作,但MySQLMongoDB支持地理空間索引,它比任何純PHP實現具有巨大的性能優勢。

我個人更喜歡MongoDB版本,因爲它在默認情況下安裝,您可以通過

  • 容易檢索算法近
  • 半徑
  • 多邊形
  • 距離

請參閱

+0

我正在使用CouchDB和Map/Reduce。有沒有類似的方式來實現它? –

+0

不是默認情況下,但您可以使用[GeoCouch](https://github.com/couchbase/geocouch/) – Baba

+0

也只是通過Google找到GeoCouch,這是事情變得複雜的地方!我正在使用爲我提供CouchDB的Cloudant。 –

1

這是棘手,因爲緯度/經度是角的數量,而你的半徑距離是一個不兼容的線性量。

下面是解決它的一些方法,以降低編碼準確性和簡化順序的順序。

  1. 使用投影庫首先在投影座標(x,y)中進行計算,然後重新投影回(lat,lon)。有一個備受推崇的proj4 library的php端口,我看到PEAR也有一個投影庫。
  2. 通過具有WGS84參數的橢球近似地球。 查看公認的答案this question
  3. 用球體近似地球並使用球面三角函數。 查看this question的接受答案。
  4. 對於您感興趣的區域使用簡單的近似轉換因子比例。 查看公認的答案this question

我建議沒有。 1.

0

爲了方便起見,我已改用MongoDB的系統和現在使用的MongoHQ的REST API來訪問他們的地理API的數據。