eyecatch

住所の場所をQGIS上にプロット!ジオコーディングの基本と実践方法

投稿日: 最終更新日:

この記事でわかること


  • ジオコーディング(アドレスマッチング) の概要
  • 住所情報を緯度経度に変換する方法

こんな人におすすめ


  • QGIS上で住所データを地図として表示したい方
  • ジオコーディングについて知りたい方

はじめに

「大阪府大阪市北区梅田3丁目1−1」という住所の位置をGIS上で表示するにはどうすれば良いでしょうか。住所情報も位置データの一種ですが、QGISでは住所情報のままでは地図上に表示することができません。GISで住所の位置を表示するためには、住所情報を緯度経度などの座標値に変換する必要があります。

この記事では、住所データを座標値に変換し、QGISにポイントデータとして追加する方法を紹介します。

住所から緯度経度へ変換

住所や郵便番号、施設名といった文字列情報からその場所の緯度経度などの座標値に変換する処理やツールを「アドレスマッチング」、もしくは「ジオコーディング」と言います。

住所情報だけではGIS上に直接ポイントを配置できませんが、座標値に変換することでQGISなどのGIS上で位置を表示できるようになります。

ジオコーディングのイメージ
ジオコーディングのイメージ

なお、緯度経度から住所情報に変換する処理を「逆ジオコーディング」と言います。

主要なジオコーディング(アドレスマッチング)サービス

現在、国内外のジオコーディングサービスは有料・無償のもの含めていくつか存在しています。

以下では主要なサービスを紹介します。

東京大学 CSVアドレスマッチングサービス

東京大学が提供しているアドレスマッチングサービスで、住所が記載されたCSVファイルをサイト上にアップロードすると、緯度経度が入力されたCSVファイルをダウンロードすることができます。

変換にはファイルをアップロードするだけなので直感的でわかりやすく、無料で使用することができるのも大きな特徴です。

jageocoder

PyGeoNLPに含まれる住所ジオコーダー連携機能を用いたジオコーディングソフトウェアで、オープンソースのPythonライブラリです。

文章からの地名解析も可能になっています。

Nominatim

OpenStreetMapの住所情報を活用したジオコーディングAPIです。

OpenStreetMap Foundationによって用意されている環境で無料で利用することはできますが、リクエスト数の制限(1秒に1リクエスト)などがあり、過度な利用をする場合は自身のサーバーで環境を構築することが望まれています。

各サービスのまとめ

1つ目の「東京大学 CSVアドレスマッチングサービス」は、変換したい住所のCSVファイルを選択して、実行するだけなので比較的初心者でも扱いやすいサービスになっています。「jageocoder」や「Nominatim」はwebページやアプリケーション等での利用を想定したAPIとなっています。

ここで紹介した「東京大学 CSVアドレスマッチングサービス」、「jageocoder」、「Nominatim」はいずれも無料で使用することができますが、他にも有償のジオコーデジオコーディングサービスも存在します。各サービスで変換の精度や料金も異なるので、利用用途に合わせて適したサービスを利用すると良いでしょう。

実際にジオコーディングしてみる

以下では初心者でも扱いやすい「東京大学 CSVアドレスマッチングサービス」を実際に使用してジオコーディングを行う操作を紹介します。

データの準備

まず、ジオコーディングする住所情報のリストのCSVファイルを用意します。

今回は「札幌市ICT活用プラットフォーム DATA-SMART CITY SAPPORO」より、指定避難所一覧(中央区)のデータを使用します。データをダウンロードしてCSVファイルの中身を確認しましょう。

変換するCSVの内容を確認
変換するCSVの内容を確認

このデータでは1列目に「種別」、2列目に「施設名」、3列目の「所在地」に住所情報が入力されていることがわかります。あらかじめ住所情報が何列目に入っているかを覚えておきましょう。

ジオコーディングの実行

東京大学 CSVアドレスマッチングサービスのページにアクセスします。

CSVアドレスマッチングサービスのシステム画面
CSVアドレスマッチングサービスのシステム画面

必要項目としては以下の内容を設定します。

対象範囲

  • CSVで用意した住所の大まかなエリアを指定します。CSVに記載の住所が日本全域にかかる場合は「全国街区レベル」を、各都道府県レベルの場合は「各都道府県 街区レベル」を指定してください。
  • 「(経緯度・世界測地系)」とついているものではジオコーディング後の座標値を緯度・経度で取得します。一方、「(公共測量座標系・世界測地系)」では平面直角座標系の座標値として取得することができます。
  • また、旧測地系の値で座標値を取得したい場合は、「旧測地系」とついているものを選択しましょう。

住所を含むカラム番号

  • CSVに記載している住所の列番号を指定します。今回は、上で確認した通り3列目に当たるので、半角で「3」と入力します。

変換したいファイル名

  • 「ファイルを選択」ボタンを押下して、住所が書かれたCSVファイルを選択します。

そのほか必要に応じて以下の項目も設定することができます。

入力ファイルの漢字コード

  • CSVファイルの文字コードを指定することができます。特に指定しない場合は「自動設定」とします。

出力ファイル漢字コード

  • 結果として帰ってくるファイルの文字コードを指定します。特に指定しない場合は「入力ファイルと同じ」とします。

そのほか、CSVアドレスマッチングサービスの詳細な説明は、サービスのページをご覧ください。

以上の設定が完了したら、「送信」ボタンをクリックすると、ジオコーディング結果のファイルがダウンロードされます。

ジオコーディング結果の確認

ダウンロードしたファイルをExcelなどで開いてみましょう。元のデータに加えて、LocNameなどの新しいカラムが追加されているのが確認できます。

ジオコーディング結果のCSVファイル。緯度と経度の値の列が増えている(指定避難所一覧(中央区)札幌市ICT活用プラットフォーム DATA-SMART CITY SAPPORO)を加工して作成)
ジオコーディング結果のCSVファイル。緯度と経度の値の列が増えている(指定避難所一覧(中央区)札幌市ICT活用プラットフォーム DATA-SMART CITY SAPPORO)を加工して作成)

それぞれのカラムの説明は以下の通りです。詳細についてはこちらのページををご覧ください。

項目

説明

LocName

元の住所の判別結果です。辞書データから元の住所に一致したと判断された住所が「/」ごとに区切られて示されます。

fXとfY

ジオコーディングした結果の緯度と経度の値が入力されています。

iConf

変換の信頼度を示し、3~5の値が入力されます。 「3」:住所階層で1段階(例:「東京都」「札幌市」「目黒区」)で一致する地名が1つだけ存在する場合となります。2段階以上の地名(県名+市名+町名など)を入力したのにiConfが3であれば、下位の地名部分が一致していないことになりますので、入力ミスなどがないか再確認してください。

「4」: 住所階層の2段階以上(県名+市名+町名など)で一致する地名が複数存在する場合です(例:「駒場4丁目」、東京都目黒区と茨城県取手市に存在)。同じ地名が複数存在する場合には基本的に北に位置するものが選ばれますので、誤った地名に変換されていないか確認してください。期待したものと違う地名に変換されていた場合には、上位地名を追加してください。

「5」:住所階層で2段階以上一致する地名が1つだけ存在する場合です。最も信頼度が高く、地名の曖昧さによる変換の誤りがほぼないことを示しています。

iLvl

入力された住所がどの階層までを特定することができたのかの変換精度を示しており、数値は以下の意味となります。

「1」:都道府県

「2」:郡・支庁・振興局

「3」:市町村・特別区(東京23区)

「4」:政令市の区

「5」:大字

「6」:丁目・小字

「7」:街区・地番

「8」:号・枝番

「0」:レベル不明

「-1」:座標不明

QGIS上にプロットしてみる

ジオコーディングによって無事に住所の緯度経度を取得することができたので、この緯度経度情報からQGISに地点をプロットしてみましょう。

なお、緯度経度の場所をQGIS上でプロットする方法は以下の記事で詳細に記載していますので、併せてご覧ください。

  1. メニューから「データソースマネージャ」を開き、[CSVテキスト]メニューを開きます
  2. ファイルにジオコーディングで変換したCSVファイルを指定します
  3. ジオメトリ定義の設定で、X値に経度の値が入っている列(fX)、Y値に緯度の値が入っている列(fY)を指定します
  4. ジオメトリのCRSでは緯度経度の座標系(EPSG: 4326 - WGS84)を指定します。
CSVテキストファイルの読み込み画面
CSVテキストファイルの読み込み画面

[追加]をクリックすると、緯度経度の位置にポイントがプロットされます。

座標値の場所にポイントデータがプロットされる(指定避難所一覧(中央区)札幌市ICT活用プラットフォーム DATA-SMART CITY SAPPORO)を加工して作成)
座標値の場所にポイントデータがプロットされる(指定避難所一覧(中央区)札幌市ICT活用プラットフォーム DATA-SMART CITY SAPPORO)を加工して作成)

よくあるトラブル

ジオコーディング結果の座標値が緯度経度ではない場合

「東京大学 CSVアドレスマッチングサービス」でジオコーディングした結果を確認した際に、本来緯度と経度の値が入力されている「fX」と「fY」の列に、緯度経度とは別の数値が入力されている場合、座標値が公共測量座標系で出力されている可能性があります。

緯度経度の数値に注意(指定避難所一覧(中央区)札幌市ICT活用プラットフォーム DATA-SMART CITY SAPPORO)を加工して作成)
緯度経度の数値に注意(指定避難所一覧(中央区)札幌市ICT活用プラットフォーム DATA-SMART CITY SAPPORO)を加工して作成)

ジオコーディング処理を実行する際、パラメータ設定の対象範囲で「公共測量座標系」を選択した場合、このように緯度経度ではない数値が出力されます。

CSVアドレスマッチングサービスのパラメータ設定で対象範囲が「公共測量座標系」のものになっている
CSVアドレスマッチングサービスのパラメータ設定で対象範囲が「公共測量座標系」のものになっている

これは、投影座標系の平面直角座標系の値ということになります。平面直角座標系については、以下の記事で紹介しているので併せてご覧ください。

上記のように、「公共測量座標系」でジオコーディングした場合、QGISの「データソースマネージャ」メニューで読み込む際は、「ジオメトリのCRS」の設定で適切な座標系を選択しましょう。

思いもよらない地点にポイントが落ちてしまう

ジオコーディングの結果次第では、正確に住所の位置を判定することができなかったり、間違った地点の住所と判断されてしまい、想定した地点から大きく離れた場所にポイントが発生してしまうこともあります。

例えば、今回ジオコーディングをしたのは札幌市中央区にある避難所の住所ですが、次の図では札幌市以外の場所にもポイントが落ちていることがわかります。

札幌市以外の場所にもポイントが落ちている(地理院タイルを背景に、指定避難所一覧(中央区)札幌市ICT活用プラットフォーム DATA-SMART CITY SAPPORO)を加工して作成)
札幌市以外の場所にもポイントが落ちている(地理院タイルを背景に、指定避難所一覧(中央区)札幌市ICT活用プラットフォーム DATA-SMART CITY SAPPORO)を加工して作成)

今回の場合、ジオコーディングを行った「所在地」の列に入力されていた「南2条」や「北1条」といった住所は北海道では札幌市以外にも存在します。そのためこの情報だけでは札幌市と判断しきれずに別の地域の住所として扱われてしまったと思われます。

このように住所の表記に曖昧性などが含まれると、思っていもいない地域の緯度経度に変換されてしまうことがあるので、ジオコーディングする住所情報は都道府県や市町村名も含んで入力したりするなどして、変換の精度を高める工夫をすると良いでしょう。

また、実際に地図上にプロットしてみて適切な場所にポイントが落ちているかも確認すると良いでしょう。間違った地点にポイントが落ちてしまった際には、地物の移動などで手動で正しい地点にポイントに修正させることも有効な手段です。地物の移動方法は以下の記事を参照してください。

なお、CSVの緯度経度から追加したポイントデータを編集する際には、一度レイヤをエクスポートする必要がありますので注意しましょう。

おわりに

この記事では、住所から緯度経度などの座標値に変換する「ジオコーディング」について解説しました。住所情報を持つデータをGIS上で活用したい場合は、まずジオコーディングを行って座標値に変換することで、位置情報データとして扱うことが可能になります。

この変換作業は、地図上でのデータ分析や可視化の第一歩となるため、GISを使用する上で基本的かつ重要なスキルといえるでしょう。

この記事を書いた人
QGIS LAB編集部
QGIS LAB編集部

QGIS LABは、オープンソースのGISソフトウェア「QGIS」に関する総合情報メディアです。「位置と情報で世界を変える」をコンセプトに、位置情報で世界を拓くための知識と技術をお届けします。

関連する記事