緯度と経度を文字列または浮動小数点(または何か)として保存する必要がありますか?緯度と経度の正しいデータ型ですか? (アクティブレコードで)
(私はレール上でactiverecord/rubyを使用しています。
緯度と経度を文字列または浮動小数点(または何か)として保存する必要がありますか?緯度と経度の正しいデータ型ですか? (アクティブレコードで)
(私はレール上でactiverecord/rubyを使用しています。
さらに複雑な地理的計算が必要な場合は、Postgresqlの場合はPostGIS、MySQLの場合はMySQL Spatial Extensionsを調べることができます。さもなければ、浮動小数点数(倍精度は良いアイデアかもしれません)が動作するはずです。
編集:GeoRubyライブラリは、前述のデータベースの両方のための空間/ GISの拡張を操作するためのRailsの拡張子を含むように見えます。
私はフロートを使用することをお勧めしますが、実際にはそれほど大きな違いはありません。浮動小数点数は、あなたが将来それを望む場合に計算を行う方が簡単です。
通常、Lat/Longをあなたが持っている最大のフロートタイプに保存します。いくつかの緯度(例えば、赤道の近く)では、経度のごくわずかな変化は、表面の距離の大きな違いと同等になります。
私はこれまでに数学をしたくないフィールドであれば、文字列を使うことができます。私はそれを避けるだろう。
スペースが有効なデータベースを使用していない場合は、Googleマップrecommendsはサイズ(10,6)の浮動小数点数を使用します。小数点の後に6桁の数字が表示されます。精度を上げたい場合は、それに応じて調整することができます。
これは私が使用するものです。
add_column :table_name, :lat, :decimal, {:precision=>10, :scale=>6}
add_column :table_name, :lng, :decimal, {:precision=>10, :scale=>6}
値は間隔(-180,180)以内でなければなりません。なぜあなたのスケールは7ではないのですか? – taro
Googleマップのドキュメントから:「テーブルに必要な記憶領域を最小限に抑えるには、lat属性とlng属性が浮動小数点数(10,6)であることを指定できます」 –
彼らは固定精度ですので、あなたが変換し、大幅な性能向上のための整数として保存する必要があります。
(SEE http://www.postgresql.org/docs/9.1/static/datatype-numeric.html#DATATYPE-NUMERIC-DECIMAL)
どのデータベースをお使いですか? –
MySQLデータベースに緯度/経度を格納する際に使用する理想的なデータ型は何ですか? –
可能性があります(http://stackoverflow.com/questions/)。 159255/what-is-the-the-the-ideal-data-type-to-use-latitude-in-a-mysql) – Gajus