GISの雑多メモ
友人から「○○から徒歩n分圏内ってどうやったら調べられる?」と訊かれ、自分も気になったのでやりかたをメモ程度にまとめる。
一応言っておくと、公共交通を使って特定の地点からの所要時間を検索するサイトはいくつか展開されているが、海岸線や河川みたいな「線状のもの」から調べるツールはあまり見かけない。
というわけでGISソフトを使ってコネコネしてみよう。
GISソフトの導入
前に少し触ったことあるのと手軽に使えることで評判のQGISを使う。
https://qgis.org/download/
「ドネートしてね!!」と言われるが無視すれば無料でダウンロード可。
Long Term Versionをダウンロードしインストーラーを起動。
QGISをインストールしたら
QGISのトップ画面からファイルを新規作成すると真っ白な画面が表示される。
まずはここに地図を描画させる
描画手順:https://gis-dictionary.com/how-to-display-googlemap-in-qgis/
国土地理院から地理データを手軽に持ってこれるGSI-VTDownloaderというプラグインをインストール
インストール/使用方法:
なおインストールしようとしても次のようなエラーが出る場合がある。
lassFactory()メソッドの呼び出し時にエラーが発生したためプラグイン 'GSI-VTDownloader-master'を読み込めませんでした
どうやらプラグインに使われてるpythonファイルのエラーみたいなので、下記手順でエラーを修正
QGISを閉じ、エクスプローラーで次のフォルダにアクセス
C:\Users/[UserName]/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\GSI-VTDownloader-master\
その中にある__init__.pyを編集
ファイルの一番最初に次の文章を追加
code:__init__.py
import sys, os
sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), 'exlib'))
保存してQGISを再起動
インストール出来たら国土地理院データを拾ってくる。
画面上部にある日本地図のマークを押すと新たなウィンドウが出てくるのでそこからデータを選択。
https://scrapbox.io/files/67936eaff0fc3a483711db3d.png
なおZoomLevelは下記値より大きな値を推奨。
海岸線は14以上
道路は15以上
ただし極端に値が大きいと細かなデータまで抽出されて重くなるので注意
読み込んだデータをコネコネする
ここから本題。
道路のデータを扱いやすくする
メニューバー(画面上部)>「ベクタ」>「空間演算ツール」>「融合」を選択
下記のような画面が出てくるので「入力レイヤ」に道路情報が入ってるレイヤーを選択>「実行」
https://scrapbox.io/files/67936fd8d78199cf8c9ee884.png
これで新たにレイヤー「融合ポリゴンの出力」レイヤーが生成される。
海岸線のデータを扱いやすくする
メニューバー(画面上部)>「ベクタ」>「ジオメトリツール」>「ジオメトリを簡素化」を選択
下記パラメータを設定して実行
入力レイヤー:海岸線の情報があるレイヤー
許容範囲:「10~15(m)」ぐらいの値
https://scrapbox.io/files/6793708eb5645e843e35967c.png
新たなレイヤーが生成される
続いて、メニューバー(画面上部)>「ベクタ」>「空間演算ツール」>「頂点を抽出」を選択
入力レイヤに、ジオメトリの簡素化を実行して生成されたレイヤーを選択
うまくいくと海岸線上にいくつか点が生成される
https://scrapbox.io/files/679371c3d78199cf8c9ef7ae.png
メニューバー(画面上部)>「プロセッシング」>「ツールボックス」を選択
画面左側にプロセシングツールボックスが表示されるので、「ネットワーク解析」>「サービスエリア(始点レイヤ)」を選択
https://scrapbox.io/files/67937414fb431b6344532513.png
下記パラメータを設定
「ネットワークを表すベクタレイヤ」:融合した道路のレイヤー
「計算するパスの種類」:『最速』
「始点のベクタレイヤ」:海岸線上の点をプロットしたレイヤー
「求めたい旅行コスト」:任意の値 (hour)
詳細パラメータ内の「デフォルトの速度(km/h)」:任意の値。徒歩なら2~4km/hぐらい?
これらを設定して画面右下にある「実行」を押す。
成功すると下のように当該道路の部分が新規レイヤーに出力される
https://scrapbox.io/files/6793756902644ba8ff6c04b9.png
※デフォルトのスタイルだと見えにくかったのでレイヤーオプションから線の色や太さを変更している
補足
当該範囲の描画はちょっと重いっぽい。処理の途中でソフトが落ちることもあるので、可能な限り範囲を絞った状態で実行させたほうが良いかもしれない。
思ったより簡単に実行できた。あと意外と地理データを自分の好きなようにいじれそうだし、QJIS自体pythonをベースに動いてるっぽいので頑張ればいろいろできそう。