0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

位置情報(緯度・経度)から日本の市区町村を取得する

Posted at

やりたいこと

  • Excelの「緯度」「経度」(10進数)をもとに、市区町村(+必要なら政令市の区)を付与して、Excelに書き出す
  • APIの逆ジオコーディングに頼らず、QGISというソフトを使い、空間結合+国土数値情報 N03(行政区域ポリゴン)で一括処理する

ターゲット

  • PythonとかAPIとか使えない、使ったことない・・・という人
  • QGIS 初心者~中級者(筆者は初心者以下です。今日初めて触った)

準備

QGISのインストール

公式サイトからダウンロードし、インストールしてください。

image.png

必要に応じて日本語化してください。(パッチを当てなくても設定でできるはず)

市区町村の位置データを入手

市区町村の位置データを入手します。

全国にチェック
image.png

欲しい年度で絞り込み
image.png

一括ダウンロード
image.png

DLしたZIPを解凍すると、.shpデータがあります。これを使います。
image.png

手順

元になるExcelを準備する

こういうカラムになっているとします。
image.png
A列:連番(ユニークコード)
B列:都道府県
C列:市区町村(★これが欲しい)
D列:緯度(10進数)
E列:経度(10進数)

まずは元データをcsv形式で保存しておいてください。
image.png

QGISに市区町村の位置データを読み込む

QGISを起動します。(インストールするとなぜかDesktopにフォルダができますが、その中にショートカットがあります)
image.png

起動したら、レイヤ →レイヤを追加 →ベクタレイヤを追加 を選択
image.png

先ほど解凍したshpファイルを指定して「追加」
image.png

市区町村の位置データが取り込まれます。
image.png

手元のデータの位置情報(点)を取り込み

手元にあるデータの位置情報を取り込みます。

これをQGISで読み込みます。

レイヤ →データソースマネージャ
image.png

画面左のバーで「CSVテキスト」を選択し、下記のように設定

  • ファイル名→ファイルパスを指定(...から指定できる)
  • 文字コード→UTF-8
  • ファイル形式→CSV(コンマで区切られた値)
  • ポイント座標
    --  X軸→経度
    --  Y軸→緯度
    --  ※「度分秒を使う」のチェックは入れません
    設定したら「追加」
    image.png

元データの位置情報レイヤが追加されました。
image.png

空間インデックスの作成

処理の高速化のため、「空間インデックス」を作成します。
これをしないと、あとの手順で膨大な時間がかかることがあります。
ツールボックスを開きます。
image.png

「空間」「インデックス」などで検索し、「空間インデックスを作成」ツールをダブルクリックして開きます。
image.png

まずはN03のレイヤ(市区町村レイヤ)を選択して実行します。
image.png

一瞬で終わる場合がありますが、ログを見て終わったことを確認してください。
image.png

同じように、元データの点レイヤにも空間インデックスを付与しておいてください。

元データの点と市区町村の位置データ を結合

上部メニュー 「ベクタ」→「Data management tool」→「属性の空間結合」を起動します。
image.png

  • 地物を結合するレイヤ:元データ(点)
    -- 空間的関係:「交差する」
      ※必要に応じて他の関係を選んでも構いません

  • 比較対象:N03(市区町村データ)
    image.png

  • 「結合するフィールド」を選択する。今回は001/004/005にチェックを入れた
    -- N03_001:都道府県名
    -- N03_004:市区町村名(都の特別区を含む)
    -- N03_005:政令指定都市の行政区名(○○市○○区の「区」)
    -- N03_007:全国地方公共団体コード(5桁)


「実行」押下後しばらく待つ

新しいレイヤ「出力レイヤ」ができます。
image.png

出力結果の調整

これで準備はできましたが、政令指定都市(〇〇市●●区 のように区がある市)は区ごとに分けたいと思います。
出力結果を計算式で調整します。

出力レイヤを右クリックし、「属性テーブルを開く」
image.png

これをくっつけたい
image.png

フィールド計算機を開く のボタンを押します
image.png

新規フィールドを作成 にチェックを入れ、
フィールド型:可変長テキスト にします。

式に下記を入れます。

CASE
  WHEN "N03_005" IS NOT NULL AND "N03_005" <> ''
    THEN "N03_004" || "N03_005"
  ELSE "N03_004"
END

OK押下

image.png

区が合体したカラムができました。
image.png

出力

出力レイヤを右クリックし、エクスポート →新規ファイルに地物を保存 を選択
image.png

ファイル名 から保存先・保存名を設定し、
必要なカラムを選択し「OK」押下

image.png

出力したExcelを開くと、市区町村のカラムが追加されています。
札幌市は政令指定都市なので「●●市●●区」の形になっています。
image.png

政令指定都市以外は「●●市」までになっています。
image.png

もちろん出力するカラムを選べば、●●区を別カラムで出力することもできます。

さいごに

位置情報(経度・緯度)はあるけど住所がない・・・というケースは稀かもしれませんが
お役に立てれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?