はじめに
自分の住んでいる地域で、最も最寄の何かの距離を調べられたら便利だろうなと考えたため、備忘録的にやり方を残す。
環境
QGISバージョン: 3.34.13-Prizren
データ
e-stat、国土数値情報のHPから、以下のページで地域(番地等)のポリゴンデータ、公園のデータを取得する。
ポリゴン: 統計地理情報システム データダウンロードページ
公園: 国土数値情報ダウンロードサイト 都市公園データ
(ポリゴンデータは国土数値情報にないと思えないが、今回はe-statで見つかったので良しとする。データ元が揃っているほうがより正確ではあると思うが...)
QGISへのインポート
両データとも、ダウンロードすると.shpファイルというものが入っている。それをQGISにドラッグアンドドロップすると、以下のように何丁目などのポリゴンと、公園の位置が記載されたポイントが出現する。
※ 公園データが、インポートした際に文字化けしていたので、それの解消法も記載
QGIS画面左下「レイヤ」から、公園データのレイヤを右クリック→「プロパティ」を押下→「ソース」から文字コードを「Shift_JIS」に変更。
座標系の修正
座標系(CRS)を修正する(ダウンロードしてきたデータ同士で座標系が違うと、距離が正確に出せないため)
- まずは、各ファイルのCRSを確認する。ダウンロードしたHPに、JGD2011や、JGD2000、WGS84などと書かれているはず(以下図例)。今回はお試しなので精度は出なくて良いかと、緯度経度座標のWGS84を選択する。
- 各データのCRSを確認し、元の内容と合っているかを確認する。(「プロパティ」「ソース」「設定されたCRS」を確認)
※公園のポイントデータはインポートした際に自動でCRSを設定できていなかったため、CRSの設定を行う。ポイントデータのレイヤを右クリック→「プロパティ」「ソース」→設定されたCRSのオプションボタン→JGD2000と検索し、それを選択→「OK」
-
QGIS上部のバー(「プロジェクト」、「編集」などと書かれているところ)から「プロセシング」「ツールボックス」を押す。
すると右側にボックスがでるので、そこで「再投影」と検索をかけ「ベクタレイヤを再投影」をクリック。 -
指定したいレイヤと座標系を選んで実行
ポリゴンの中心点作成
公園との距離を出すのに、ポリゴンデータの中心点がある方がやりやすい。
上部バーの「ベクタ」→「ジオメトリツール」→「重心」を選択。ポリゴンデータのレイヤを選び、実行すると重心点が出力される
中心点と公園との距離測定
公園とポリゴン中心点との距離を測定し、距離が近いtop5を選ぶ機能がQGISには存在する。
プロセシングツールボックスから、「属性の最近傍結合」を選択し、入力レイヤにポリゴンデータの中心点、第2の入力レイヤに公園のレイヤを選択する。「近接地物の個数」に何個の公園データと距離を求めるかを記載(今回は5点)。
実行を押すと、以下のように同一の丁目に対し、それぞれ別の公園名が入っていることが分かる。
ちなみに、距離の列もあり、以下のように公園が距離順に並べられている。(今回は緯度経度の座標系のため、距離が緯度経度単位となっている。m単位で欲しければ、座標系をJDG2011などのm単位のものに変えると良い)
以上で作成完了となる。
おわりに
初学者にも分かるよう説明したつもりではいるが、分かりにくいところあれば修正します