緯度と経度は、地球上のすべての地点を定義する2つの数値です。緯度は南北方向の位置を、経度は東西方向の位置を示します。2つを組み合わせた座標ペアは、地図、GPSデバイス、ジオコーディングAPI、AIアシスタントがいずれも扱うことができます。
多くの開発者は座標を意識せずに使っていますが、バグが発生した瞬間にその重要性を痛感します。このガイドでは、それぞれが実際に何を測定するか、本番環境で出会うフォーマット規則、そして最も多いマップバグの原因となる「入れ替え」について解説します。
緯度が測るもの
緯度は、地球の表面上の点と赤道面の間の角度を度数で表したものです。赤道は0度、北極は+90度、南極は-90度です。緯度線(平行線とも呼ばれる)は地球の周りを水平に走り、どこでも同じ間隔を保っています。
緯度1度は、場所に関係なく常に約111キロメートルに相当します。この安定性が、フライトプランニングから気候科学まであらゆる分野で緯度が活用される理由です。
経度が測るもの
経度は、ある地点と本初子午線(ロンドンのグリニッジを通る経度0度の線)の間の角度です。経度は西の-180度から東の+180度まで走ります。この2つの値は地球の反対側、日付変更線の大部分を形成する反子午線で出会います。
緯度と異なり、経度1度がカバーする実際の距離は場所によって異なります。赤道では経度1度が約111kmと緯度と同じです。ヘルシンキでは約56km、極では全ての経度線が収束するためゼロになります。
この収束が、フラットな地図上での距離計算が長距離ルートや極付近の地点で壊れる理由です。適切な距離関数は地球の曲率を考慮したハバーサイン公式やビンセンティ公式を使用します。
有名な入れ替えとその回避策
本番の地理空間コードで最も多いミスは、緯度と経度を入れ替えることです。フォーマットによって規則が異なるのが原因です。
- 人間用表示、住所、GPSアプリ: 緯度が先。
48.8584, 2.2945は緯度48.8584、経度2.2945を意味します。 - GeoJSON、WKT、多くの地理空間標準: 経度が先。
[2.2945, 48.8584]は同じ地点です。 - MapAtlas Geocoding APIとほとんどの「v1」REST API: JSONキーでは緯度が先(
lat、lng)ですが、規則はエンドポイントによって異なるためドキュメントを確認してください。
GeoJSONからフィーチャーを取り出して[lat, lng]を期待するマップライブラリに渡す場合は、入れ替えが必要です。忘れてしまうと、ポイントが誤った半球に表示され、「パリがアフリカ沖に出てくる」という混乱が2日間続くことになります。
防御的なルール:座標を受け取る関数では、パラメータに明示的な名前をつけましょう。function distance(latA, lngA, latB, lngB)はfunction distance(a, b)(aとbが曖昧な配列)より間違えにくいです。
十進法度(DD)とDMS
コードで最もよく見られるフォーマットは十進法度(DD)です。例:48.8584, 2.2945。すべての現代的なAPIとライブラリはこれを期待します。
度・分・秒(DMS)もたまに見かけます。例:48度51分30秒N、2度17分40秒E。DMSは古い海事・航空の伝統から来ており、公式の紙の地図や一部のハードウェアGPSユニットで今でも使われています。DMSからDDへの変換は簡単です。DD = 度数 + (分 / 60) + (秒 / 3600)で、南または西の場合は符号を反転します。
保存には、小数点以下5〜6桁の十進法度がすべての現実的なユースケースをカバーします。6桁以上は「精度のパフォーマンス」に過ぎず、実際のGPSユニットがセンチメートル精度を超えることはほとんどありません。
必要な精度の桁数は?
緯度と経度の各小数点以下の桁は、位置を約10倍精細にします。
- 小数点なし(
48):約111km、国レベル - 1桁(
48.8):約11km、都市レベル - 2桁(
48.86):約1.1km、近隣レベル - 3桁(
48.858):約110メートル、ストリートレベル - 4桁(
48.8584):約11メートル、建物レベル - 5桁(
48.85844):約1メートル、玄関レベル - 6桁(
48.858445):約11センチメートル、GPS限界 - 7桁以上:偽の精度、実際のGPS精度を超えている
用途に合った精度を選びましょう。「この近所に配達する」というユースケースで小数点以下8桁を保存するのは無駄であり、ユーザーに誤った精度の印象を与えます。
座標と地図投影
数値自体は地球の表面上の角度測定値ですが、スクリーンはフラットです。すべての地図投影は、緯度・経度を表示用のピクセルx,y座標に変換する数学的関数です。
Web Mercator(EPSG:3857)は、Google Maps、OpenStreetMap、ほぼすべてのインタラクティブなウェブ地図で使われる投影法です。形状と方向を保持しますが、面積を歪めます。グリーンランドはアフリカと同じ大きさに見えますが、実際は14倍も小さいです。本番の地図では、ユーザーが場所を認識できる限りこの歪みは問題になりません。しかし、面積を比較するテーマ地図(人口、選挙結果、気候)では等積投影を使用してください。
保存する座標値は常にWGS84の緯度・経度です。投影はレンダリング時に適用されます。データベースで投影座標とWGS84座標を混在させることは、バグの典型的な原因です。
座標の保存とインデックス
ほとんどのデータベースでは、緯度と経度を2つの数値カラム(またはPostGISを使う場合はgeometry(point, 4326))として保存します。バウンディングボックス内のポイント検索には、各カラムへのB-treeインデックスで十分です。「最近傍」クエリには空間インデックスが必要です。PostGISのGIST、MySQLのSPATIAL、またはgeohashバケットを使いましょう。
文字列として保存("48.8584,2.2945")すると、フィルタリング、ソート、距離計算が必要になった瞬間に後悔します。やめましょう。
AIアシスタントが座標をどう使うか
現代のAIアシスタント(ChatGPT、Perplexity、Gemini)は、人間用アプリケーションと同じ方法で座標を通じて場所を処理します。ユーザーが「近くのカフェを探して」と言うと、アシスタントはユーザーの位置を座標に変換し、プレイスAPIにクエリし、ハバーサイン距離で結果をランク付けします。構造化データ(JSON-LDのgeoプロパティ、GeoCoordinatesスキーマ)に適切にタグ付けされた座標は、AIアシスタントが曖昧な位置データのライバルよりあなたのリスティングを選ぶのに役立ちます。
複数の都市にまたがるリスティングや複数都市で競合するリスティングでは、座標が曖昧さを解消します。「パリ」はフランスにもテキサスにもあります。座標は違いません。
MapAtlasについて
MapAtlasは、AI検索時代に向けて構築されたヨーロッパのマッピングプラットフォームです。ジオコーディング、逆引き検索、等時間圏、ルーティングのすべてのAPIが、一貫した順序、GDPR準拠、EUホスティングを備えたクリーンなWGS84座標を返します。座標検索ツールで任意の住所を緯度・経度に即座に変換するか、ジオコードとは何かのガイドでジオコーディングAPIが本番環境でどう機能するかを詳しく読んでみてください。
よくある質問
緯度と経度の違いは何ですか?
緯度は地球上の南北方向の位置を表す角度で、南極が-90度、北極が+90度です。経度は東西方向の位置を表す角度で、-180度から+180度の範囲を持ち、0度はグリニッジ本初子午線です。緯度線(平行線)は水平方向に走り、互いに平行です。経度線は垂直に走り、両極で収束します。2つの数値の組み合わせで地球上のあらゆる場所を一意に特定できます。
経度と緯度はどちらが先ですか?
フォーマットによって異なります。人が読む形式(Google Maps、GPSアプリ、住所)では緯度が先です。例えば48.8584, 2.2945は緯度48.8584、経度2.2945を意味します。GeoJSONや多くの地理空間標準など機械が読む形式では経度が先です。[2.2945, 48.8584]は同じ地点を表します。この入れ替えは本番環境のマップバグで最も多い原因です。使用するフォーマットの規則を必ず確認してください。
GPS座標の精度はどのくらいですか?
小数点以下6桁の精度(例:48.858444)は赤道付近で約11センチの精度に相当します。5桁(48.85844)で約1メートル、4桁(48.8584)で約11メートルとなり、ストリートレベルのマッピングには十分です。ほとんどの本番ユースケースでは6桁は過剰で、5桁あれば十分です。必要以上の精度で保存するとバイトを無駄にするだけでなく、データの精度について誤解を招く恐れがあります。
経度線はなぜ極で収束するのですか?
緯度線は地球の自転軸を基準としているため平行です。一方、経度線は南北両極を通る大円です。極に近づくにつれて、同じ経度差でも東西の実際の距離は縮まります。赤道では経度1度が約111kmですが、極ではゼロになります。これが、フラットな座標を使った単純な距離計算が高緯度では壊れる理由であり、正確な距離計算にはハバーサイン公式やビンセンティ公式が必要な理由です。

