36959


私は、スマートフォンから計測した位置情報を外部のデータベースで管理するための設計をしています。  
緯度経度をDEG(10進数)形式で管理するべきか,項目を度、分、秒(小数点なし)で管理するべきか悩んでいます。  
例）  
DEG形式  
|id|緯度 |経度 |計測日時 |・・・・・・・・  
|1|30.3375|133.325|2017-08-01|・・・・・・・・

度、分、秒(小数点なし)  
|id|緯度_度|緯度_分|緯度_秒|・・・・・・・・  
|1 |30 |20 |15 |・・・・・・・・  
34°20′15″

緯度経度を使って高速に検索をしたい場合、どちらを採用した方がいいでしょうか？  
もし、別の方法があれば、教えてください。

よろしくお願いいたします。


CC BY-SA 3.0
2017-08-05T05:36:06.363
36958
2017-08-05T11:35:43.733
24740
question
mysql
位置情報を管理するデータベースの設計方法について


度・分・秒を分離するのは以下のようなデメリットがあります。

  * 以上・以下などの比較をする場合、象限を限定しても`度 < d OR (度 = d AND 分 < m) OR (度 = d AND 分 = m AND 秒 <= s)`のように非常に煩雑になる。三項目を加算してから比較した場合はインデックスが効きづらい。
  * 本質的には経度・緯度は符号付の値であるので、度の正負によって分と秒を加算するか判断しなければならない

ですので全くお勧めしません。  
経度と緯度を各1個の有理数として保存するか、あるいは利用できるのであれば`POINT`型でスパーシャルインデックスを使用するのがよいでしょう。


CC BY-SA 3.0
2017-08-05T07:12:56.973
36959
2017-08-05T07:12:56.973
5750
36958
answer


mysqlであれば空間データ型で管理する方法もあると思います。  
(地図データと組み合わせて利用するのであれば、より適切かと思います)


CC BY-SA 3.0
2017-08-05T11:35:43.733
36964
2017-08-05T11:35:43.733
20098
36958
answer