2009-07-28 30 views
60

我應該將經度和緯度存儲爲字符串還是浮點數(或其他)?爲經度和緯度修正數據類型? (in activerecord)

(我在rails上使用activerecord/ruby​​,如果有的話)。

+0

您使用了哪個數據庫? – 2009-07-28 19:18:26

+0

開發中的Mysql和生產中的postgresql(爲什麼這很重要?) – 2009-07-28 19:19:03

回答

16

如果您需要進行更復雜的地理計算,您可以調查0123g的Postgresql或MySQL Spatial Extensions的MySQL。否則,float(雙精度可能是個好主意)應該可以工作。

編輯:看起來像GeoRuby庫包含一個Rails擴展,用於處理上述兩個數據庫的空間/ GIS擴展。

2

我會建議使用浮動,雖然它並沒有真正做出很大的區別。如果你將來願意的話,花車更容易做計算。

1

一般而言,您希望緯度/長度存儲在您擁有的最大浮點類型中。在一些緯度(例如:赤道附近),經度的微小變化可能等同於表面距離方面的巨大差異。

我想如果它是一個你永遠不想做任何數學的領域,你可以使用一個字符串。雖然我會避免這一點。

16

如果您沒有使用空間啓用的數據庫,Google地圖recommends使用大小爲(10,6)的浮點數。這給你6位數字後小數 - 如果你想要更多的精度,你可以相應地進行調整。

112

這是我用:

add_column :table_name, :lat, :decimal, {:precision=>10, :scale=>6} 
add_column :table_name, :lng, :decimal, {:precision=>10, :scale=>6}