web-dev-qa-db-ja.com

緯度と経度のデータ型は正しいですか? (アクティブレコード内)

緯度と経度を文字列または浮動小数点数(またはその他)として保存する必要がありますか?

(私はactiverecordを使用しています/ Ruby on Rails、それが重要な場合)。

72
Tom Lehman

より複雑な地理計算を行う必要がある場合は、Postgresqlの場合は PostGIS を、MySQLの場合は MySQL Spatial Extensions を調査できます。そうでなければ、フロート(倍精度が良い考えかもしれません)が動作するはずです。

編集:GeoRuby ライブラリには、Rails前述の両方のデータベースの空間/ GIS拡張。

21
Greg Campbell

これは私が使用するものです:

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

空間対応データベースを使用していない場合、Googleマップ 推奨 サイズ(10,6)のfloatを使用します。これにより、小数点以下6桁が得られます。さらに精度が必要な場合は、それに応じて調整できます。

20
Chris B

フロートを使用することをお勧めしますが、実際にはそれほど大きな違いはありません。将来的にフロートを希望する場合は、フロートの計算が簡単になります。

3
Mike Trpcic

一般に、Lat/Longは、所有する最大のfloat型に格納する必要があります。一部の緯度(赤道付近など)では、経度の非常に小さな変化が、表面距離の点での大きな違いと同等になる場合があります。

もしそれがあなたが計算をしたくないフィールドだとしたら、文字列を使うことができると思います。私はそれを避けたいです。

2
T.E.D.