
座標が 0, 0 になってしまうのはなぜ? — Null Island に落ちるデータの原因と、CSV・GISでの見分け方
地図に落としたら、点の一部がアフリカ西方の大西洋に飛んでいた——原因はほぼ例外なく、緯度経度が 0, 0 になっているデータです。0, 0 は「座標が無い」ではなく「赤道と本初子午線の交点」という実在する正しい座標なので、多くのソフトはエラーを出さずにそこへ描画します。この記事では、0, 0 が生まれる典型的な原因を並べ、CSV とGISの両方での見つけ方・直し方をまとめます。
そこに島は無い——「Null Island」という呼び名
北緯0度・東経0度は、アフリカ大陸の西、ギニア湾の沖合にあたる大西洋上です。陸地はありません。それでも GIS の世界でここが有名なのは、壊れたデータが集まる場所だからです。
公開GISデータセットの Natural Earth が、ここに1辺1kmほどの架空の島を “Null Island” として収録したことで呼び名が広まりました。目的は観光ではなく品質管理で、地図上にこの島の周りに点が集まっていれば「変換や取り込みのどこかで座標が落ちた」とひと目で分かる、という仕掛けです。
余談として、この地点には実在する構造物が1つあります。米・仏・ブラジルが共同で運用する熱帯大西洋の係留ブイ網 PIRATA の観測ブイ(通称 Soul、識別番号 13010)が、赤道と本初子午線の交点にちょうど係留されています。「Null Island に唯一ある建造物」と呼ばれるのはこのブイです。
なぜエラーにならないのか
ここが 0, 0 の厄介なところです。
- 緯度0度・経度0度は値域の内側(緯度は−90〜90、経度は−180〜180)。範囲チェックを通過します
- 多くの言語・DBで、数値型の初期値・欠測の埋め草が
0です。文字列""を数値に変換すると0になる処理系も多い - 日本の地図しか表示していない画面では、
0, 0の点は画面外に出るだけで、消えたようにしか見えません
つまり 0, 0 は「エラーとして落ちない欠測値」です。件数が合わないのに原因が見えない、というときはまずここを疑ってください。
0, 0 が生まれる典型パターン
| # | 原因 | 起きやすい場面 | 見分け方 |
|---|---|---|---|
| 1 | 空欄・NULL が 0 に変換された | CSV取り込み、DBの NOT NULL DEFAULT 0 |
緯度も経度もちょうど 0 |
| 2 | ジオコーディングが住所を解決できなかった | 住所→緯度経度の一括変換 | 失敗した住所に偏る。表記ゆれ・旧住所が多い |
| 3 | 数値に変換できない文字列が 0 になった | 35°39'30" のような度分秒、全角数字、カンマ区切り |
特定の入力形式の行だけが 0 |
| 4 | 列の対応がずれた | 見出し行のずれ、列数の違うCSVの結合 | 緯度に別の値、経度が 0 など片方だけ 0 |
| 5 | 初期化されたまま書き出された | アプリ側で座標を取得する前に保存 | 作成時刻が近い行にまとまって出る |
| 6 | 測位できていない値をそのまま保存した | GPSロガー、EXIF、車載機器 | 前後の行は正常で、0 の行だけ衛星数・精度が空 |
| 7 | 座標系の取り違えで原点に落ちた | 平面直角座標の値を緯度経度として読んだ | 完全な 0 ではなく 0 に近い小さな値(後述) |
7番だけは「ちょうど 0」にならない
平面直角座標系の値を、そのまま緯度経度として読んでしまうケースでは、値は 0 になりません。たとえば X = -12345.678, Y = 5432.1 を「緯度 −12345.678度・経度 5432.1度」と読むと、多くのライブラリは範囲外として弾きます。逆に原点近くの小さな値(X・Y が数十m以内)だと、緯度経度としても値域に収まってしまい、やはり Null Island のすぐそばに描画されます。
「0 ちょうど」ではなく「0.0003 のような値が並んでいる」ときは、単位や座標系の取り違えを疑ってください。何の座標系なのか分からないデータの見分け方はこの座標、測地系はどれ? — ズレ量で見分けるでも扱っています。
CSV から見つける
まず、緯度・経度がともに 0(0・0.0・0.000000 のいずれも)である行を抜き出します。
# 2列目=緯度、3列目=経度のCSVから、両方が0の行を行番号付きで出す
awk -F, 'NR>1 && $2+0==0 && $3+0==0 {print NR": "$0}' points.csv
awk を使わず、テキスト検索だけで当たりを付けたい場合は正規表現で拾えます。
grep -nE '(^|,)0(\.0+)?,0(\.0+)?(,|$)' points.csv
巨大なCSV(数GB以上)で同じことをするなら、uvp ならこう書きます。
uvp points.csv '(^|,)0(\.0+)?,0(\.0+)?(,|$)' -E
0, 0 がどの入力元に偏っているかを知りたいときは、件数を数えるところまで1コマンドでまとめられます。
uvp points.csv '(^|,)0(\.0+)?,0(\.0+)?(,|$)' -E -uniq '^([^,]+),'
(先頭列をキーにして、0, 0 になった行が事業所コードや取込元ごとに何件あるかを並べる形です。)
「片方だけ 0」も忘れずに
上のパターン4は、緯度か経度の一方だけが 0 になります。これは両方 0 の検索では引っかからないので、別に探す必要があります。日本国内のデータであれば、経度が 0 のものは確実に異常です。
# 日本国内のはずなのに、緯度が20未満 or 経度が120未満の行
awk -F, 'NR>1 && ($2+0 < 20 || $3+0 < 120) {print NR": "$0}' points.csv
日本の領域はおおよそ北緯20〜46度・東経122〜154度に収まります(南鳥島まで含めた範囲)。この矩形から外れた行を「要確認」として機械的に弾くだけで、0, 0 も緯度経度の入れ替わりも同時に捕まえられます。緯度と経度が入れ替わる事故そのものは緯度と経度、どっちが先?で詳しく扱っています。
GIS から見つける
QGIS など属性テーブルを持つソフトなら、式フィルタで一発です。
"lat" = 0 AND "lon" = 0
地図表示側で気づく方法もあります。全レイヤに「全体表示」をかけると、日本のデータなのに表示範囲がアフリカまで広がっていれば、その時点で 0, 0 の混入が確定します。日本国内のデータで全体表示が横に大きく伸びたら、まず属性テーブルを疑ってください。
直し方——0 を消すのではなく、欠測として区別する
見つけた後の扱いで大事なのは、「0 を消す」のではなく「欠測だと分かる形にする」ことです。
0, 0は空欄(NULL)に戻す。 0 のまま残すと、次の工程でまた地図に描かれます- 元の値が何だったのかを残す。 住所が解決できなかったのか、そもそも座標が無いのかで、後の対応が変わります
- 再取得するなら原因ごとに分ける。 ジオコーディング失敗なら住所表記の正規化、機器由来なら再測。混ぜて一括再処理しても直りません
- 0 が入らない形で取り込み直す。 CSV取り込み時に「空欄を0で埋める」設定が入っていないかを確認します

GeoConverter Pro で緯度経度を変換するときも、0, 0 はそのまま正しい入力として扱われます(実際、赤道・本初子午線上の点は変換できてしまいます)。変換にかける前の段階で、上記の矩形チェックで弾いておくのが確実です。CSVをまとめて変換する手順はCSVの一括変換ガイドにまとめています。
まとめ
0, 0は「座標が無い」ではなく赤道と本初子午線の交点。値域の内側なのでエラーにならない- 呼び名の Null Island は Natural Earth が品質管理用に置いた架空の島に由来する。実在する構造物は観測ブイが1基のみ
- 原因は7通りあるが、空欄が0に化けたのとジオコーディング失敗がほとんど
- 「ちょうど 0」だけでなく「0 に近い小さな値」「片方だけ 0」も同じ事故。日本の矩形(北緯20〜46度・東経122〜154度)から外れた行を弾くのが最も取りこぼしが少ない
- 直すときは 0 を消さず、欠測と分かる形(空欄)に戻して原因ごとに再取得する
出典
- Null Island — Wikipedia: https://en.wikipedia.org/wiki/Null_Island
- Natural Earth(公有のGISデータセット。Null Island を収録): https://www.naturalearthdata.com/
- PIRATA(Prediction and Research Moored Array in the Tropical Atlantic)— NOAA PMEL: https://www.pmel.noaa.gov/gtmba/pmel-theme/atlantic-ocean-pirata
- 世界測地系 — 国土地理院: https://www.gsi.go.jp/sokuchikijun/datum-main.html
- uvp コマンドの構文 — UwView Pro: https://uvp.y42u.net/blog/uvp-cli-release-vs-ripgrep/
次に確認する
- この座標、測地系はどれ? — ズレ量で見分ける — 0 ではないが明らかに変、というときに「どの測地系として読めば合うか」を逆算する手順です
- 緯度と経度、どっちが先? — 軸順の落とし穴 — 片方だけ 0 になる事故と同じ根っこ、列の対応ずれの話です
- 平面直角座標の X と Y、どちらが東西? — 平面直角座標を緯度経度として読んでしまう事故の、もう一方の入口です
- CSVの緯度経度をまとめて変換する手順 — 弾いた後の正常データを一括で変換する流れです
- 経度0度はなぜグリニッジなのか(GeoPrism JP) —
0, 0の「0度」側が、そもそも何を基準に決まっているのかを図で確かめられます - 書籍でまとめて学ぶ: 『日本の測地系Q&A』第13章「座標データの落とし穴」(Kindle Unlimited対応)
開発者より: アプリ・Kindle本・オープンソースの一覧は GitHub: amru195704 にまとめています。
お願い
本記事の情報は参考目的で掲載しており、正確性・完全性を保証するものではありません。誤記・不正確な情報がございましたら、コメント欄よりご指摘いただければ、確認のうえ修正いたします。
コメントを残す