概要
ネットワークデータとしては不備があるけれども、
ノード(ポイント)とエッジ(ポリライン)からなる
GISデータを取り扱うことが最近多いです。
位置関係の可視化を目的に作られている場合が多いようで、
ノードとエッジが接していないことも少なくありません。
そんなわけで、エッジから離れたポイントを探す処理を、
python使ってやってみます。
環境
- ArcGIS Pro 2.1
- Jupyter Notebook(※)
- python 3.6.6(※)
(※)Pro 2.1 以降は、これらpythonの環境も自動的にインストールされます。
使用するデータ
国土数値情報から、以下のデータをダウンロードして使います。
全国は大変なので、大阪府のデータだけ使います。
- バスルート(ポリライン)
- バス停留所(ポイント)
国土数値情報 バスルートの詳細
国土数値情報 バス停留所データの詳細
1本のバスルート上に複数のバス停留所が置かれているので、
正確にいうとノードとエッジから成るグラフとは言えませんが、、
ポリラインから離れたポイントを探す分には気にしなくてよいでしょう!
ArcGISで表示するとこんな感じのデータになっています。
(大阪府の一部のみ表示しています)
ざっと見た感じ、どのバス停もバスルート上にありそうですが、、
まあ、やってみましょう!
処理手順
バスルートに接していないバス停を空間検索し、
追加した「孤立フラグ」フィールドに”1″を入力します。
gist3dee7dc070f362d2ca66b5224532eeca
結果の確認
ArcGIS Pro のプロジェクトファイルを開いてみると、
ちゃんと指定したGDBにフィーチャクラスが作られています。
「孤立フラグ」フィールドも作られていました。
やはりほとんどのバス停はバスルート上に乗っているようですが、
関空の近くに「孤立フラグ」= 1 のデータが1つだけありました。
国土数値情報のデータなので、
データ作成時の不備により孤立しているデータはなさそうです。
たまたま関空付近に特殊なデータがあったので、
ポリラインから孤立したポイントを探すことができました!
まとめ
まずはGISデータをArcMapとかでざっと確認してみて、
おおむねポリライン上にポイントが乗っていることがわかりました。
本記事のデータのように、おおむね載っているか確認できたら、
細かいチェックとしてpythonを利用した検索を試すと効率がよいと思います。