Googleマップをデータベースに保存Lat
したり、データベースに保存したりするには、どのような種類のデータを使用する必要がありますか?Lng
mysqlの長さの小数点以下の桁数がわかりません。
だから私はDecimal
、Float
などを使うべきですか?そして、私はいくらのために置くべきLength
ですか?Lat
一方、 Mysqlのインデックスを作成するのは良いことLng
ですか?
Googleマップをデータベースに保存Lat
したり、データベースに保存したりするには、どのような種類のデータを使用する必要がありますか?Lng
mysqlの長さの小数点以下の桁数がわかりません。
だから私はDecimal
、Float
などを使うべきですか?そして、私はいくらのために置くべきLength
ですか?Lat
一方、 Mysqlのインデックスを作成するのは良いことLng
ですか?
これは、情報をどのように処理するか、および値をどの程度正確にする必要があるかによって異なります。
緯度または経度の程度は約69マイルです。(緯度の実際の距離はわずかに異なりますが、経度の距離は赤道から離れるほど小さくなります。
DECIMAL(9,6) allows for a resolution of about 4 inches
DECIMAL(8,5) allows for a resolution of about 3 1/2 feet
DECIMAL(7,4) allows for a resolution of about 36 feet
(緯度の場合、経度に必要な3桁ではなく、小数点以下2桁のみが必要です。)
latとlonの両方にdecimal(10,6)を使用しているため、1メートルよりも優れた解像度が得られます。(マイナス記号を考慮に入れることを忘れないでください)。
10進数タイプのマイナス記号に関するMySQLマニュアルからの引用:
標準SQLでは、DECIMAL(5,2)が5桁と小数点以下2桁の任意の値を格納できる必要があるため、給与列に格納できる値の範囲は-999.99から999.99です。MySQLは、MySQL5.0.3の時点でこの制限を適用しています。5.0.3より前では、範囲の正の端で、列は実際には9999.99までの数値を格納できました。(正の数の場合、MySQL 5.0.2以前では、符号用に予約されたバイトを使用して範囲の上限を拡張していました。)
ソース:
http://dev.mysql.com/doc/refman/5.0/en/fixed-point-types.html
Googleマップでこれを行っていて、ポリライン(場合によっては数千ポイント)をプロットしている場合は、これらのポイントを配列に格納し、配列をシリアル化して、BLOBまたはTEXTフィールドに格納できます。私はこれについてタイムトライアルを行ったことがありませんが、DECに変換するよりも速いと思います。または、これをJavaScriptに渡す場合は、JSON_ENCODEを使用してJSON文字列として保存し、プロットを使用するたびにその変換を保存することができます。