こんにちは。
本記事では、OpenLR形式で記述された位置情報をQGIS上で可視化するプラグインを紹介します。
Pythonベースで構築されたOpenLRデコーダ(openlr-dereferencer
)をもとに、GUIで扱えるQGISプラグインとして実装しました。
🔧 目的
- PythonでOpenLRを扱っていたけど、(とりあえず)地図上で結果を見たくなった
- GUIでPostgreSQLに接続 → OpenLRを貼り付け → 地図に表示、を完結させたい
🧠 背景:もともとはPythonスクリプトで処理
これまで、以下のような構成でOpenLRをデコードするPythonスクリプトを実装していました。
- PostgreSQL + PostGIS 上に道路ネットワークを構築
-
openlr-dereferencer
を使用してOpenLRをデコード - 出力はLineStringとして
print()
で確認
この内容についてはWestTraffic さんの記事openlr-dereferencer-pythonを実装してみた を参考にさせていただきました。
🖥 今回の内容:QGISプラグイン化
このスクリプトベースの処理をQGISのGUIプラグインとして実装しました。
主な機能:
- PostgreSQLへの接続情報をGUIで入力
- OpenLR文字列を貼り付けてデコード
- 結果を
Decoded OpenLR Lines
レイヤとして地図に表示
✅ 動作確認済み環境
- QGIS LTR 3.34(Prizren)
- Pythonライブラリ:
openlr-dereferencer
psycopg2
pyproj
- PostgreSQL + PostGIS(道路テーブルあり)
🔗 プラグインのコード(GitHub)
GitHubにコードを公開しています(※ZIP形式での手動インストール推奨):
📦 インストール方法
- リポジトリをクローンまたはZIPでダウンロード
-
__init__.py
を含むディレクトリをZIP化 - QGIS > プラグイン > プラグインをZIPからインストール
- QGIS再起動後、プラグインを起動
⚠️ 注意:GitHubにはソースコードのみが含まれています。UIの変更やZIP形式への変換は各自の環境でお願いします。
✍ おわりに
OpenLRのような文字列ベースの位置情報を、QGIS上で地図として確認できるのは非常に便利です。
GUIでPostgreSQLと連携し、OpenLR文字列をその場で可視化できる今回のプラグインは、日常業務やプロトタイピングの中でも役立つはずです。
ご興味ある方はぜひお試しください。
🔧 補足:PostgreSQLテーブル構成(参考)
roads
テーブル(例):
カラム名 | 型 | 内容 |
---|---|---|
id | bigint | 主キー |
fow / frc | smallint | OpenLR対応の道路属性 |
flowdir | smallint | 方向(1=両方向, 2=終点→始点, 3=始点→終点) |
from_int / to_int | bigint | 接続交差点 |
len | double precision | 長さ(m) |
geom | LineString(4326) | 位置情報 |