2012-02-10 24 views
3

現在、lat/lngの値をデータベースに小数点以下6桁の精度で格納しています。ただし、このデータベースに格納する必要がある値には、小数点以下12桁の精度があります。私のデータベースは現在、緯度と長いASTにMySQLの緯度と経度が高精度である

FLOAT設定します(10、6)

は、LNG値/ LAT 6 10進数または12進のどちらかを扱うことができるように、ストレージタイプを設定することが可能ですか?

+0

小数点以下12桁で記述された緯度/経度位置は、マイクロメートル精度に相当します。私は、アプリケーションがマイクロメーターレベルの地球上の位置を記述するために必要なものについて興味がありますか? – TreyA

答えて

4

DOUBLEデータ型を使用します。

このように動作するように既存のテーブルを変更する必要はありません。例えば、

alter table `mytable` 
    change `LAT` `LAT` double NULL , 
    change `LONG` `LONG` double NULL 

しかし、あなたのデータの正確さを誇張しないように注意してください。一般的なfloatのεは32ビットの浮動小数点の緯度/経度(可能な限り正確な値)は地面で数センチメートルです。 doubleのイプシロンは、ごくわずかな距離です。あなたの緯度/経度情報が正確であることはほとんど想像もできません。そうであれば、高度な地図作成投影法を使用しない限り、実際には問題にはなりません。計算距離の典型的なhaversineの公式は、地球が完全な球であると仮定します。そうではありません。地球の赤道の膨らみは、球形の仮定を、数センチメートルよりも正確な距離に分解するのに十分な大きさです。

+1

注:Ollieはフロートの可能な精度が数センチであると述べていますが、それは緯度/経度0,0(緯度経線が赤道に一致する)の周りにのみ当てはまります。米国では、フロートでセンチメートルの精度で位置を記述することは不可能です。緯度/経度の2倍を使用するのが最善です。 – TreyA