karaGR's memo

FOSS4G R python さんぽ

"標準地域メッシュ表示プラグイン"つくりました。

ども。FOSS4Gアドべ初参加のkaraGRです。よろしくお願いします。

半年前、QGISHackFest2015Hokkaido会場の隅っこで開発を始めた"標準地域メッシュ表示プラグイン"、
とりあえず動くものが出来ました!ということでこの機会にお披露目します。

スクショはこんな感じ。
日本全図
1次メッシュ
2次メッシュ
3次メッシュ

プログラムはGitHubにあげてあります。(実行にはTileLayerPluginが必要です)
karaGR/JpnStdIndexMesh · GitHub

エラー処理とか実装してません&ドキュメントも未整備です・・
プルリク大歓迎!ダメ出しお待ちしております。

プラグイン開発の基本については、以下のページを参考にさせていただきました。
QGISでプラグインを作成する その1 - waigani's diary
QGIS Python コトハジメ : 真田情報技術工務店

泥縄ですが・・インストール方法を書きました。
補足:"標準地域メッシュ表示プラグイン"のインストール - karaGR's memo



おまけ:Pythonコンソールでのレシピ

実際のコーディングは、Pythonコンソールで動作確認しながら進めています。
(QGIS2.12スタンドアローン版のmatplotlibは未だ1.2.1だったりする..orz)

以下、このプラグインの動作確認用スクリプトと解説です。
Pythonコンソールにコピペで動くハズなので、試してみてくださいね。


まずはサブMapCanvasを作り、メインMapCanvasの表示範囲と同期させます。

真っ白のサブMapCanvasが表示されます
これに地理院タイルを載せます。

TileLayerPluginのREADME.mdに記載されている方法を使います。

このレイヤをMapCanvasLayerに変換し、リスト化してサブMapCanvasにセットします。

地理院タイルが表示されます。


ここから本題の標準地域メッシュの作成。
以下のページを参考にさせていただきました。
月の杜工房 - QGIS API メモリプロバイダ

まずはメモリプロバイダを用いてメッシュを描画するレイヤを作成します。

このレイヤにメッシュを描画するための関数を作成します。

緯度経度からそのポイントが入っているメッシュコードを返す関数

メインMapCanvasの表示範囲に含まれるメッシュの上下左右を返す関数

表示範囲のなかで1次、2次、3次メッシュを描画する関数

表示範囲のスケールに合わせてメッシュを描画する関数

メッシュポリゴンレイヤをmesh_canvasにセットし、メインMapCanvasのトリガーに描画関数を紐付けます。

メッシュが表示されます

しーたすたす(コンパイラ) ⇒ ぱいてょん(インタプリタ)
ハードルちょと下がった!!・・・かな?

今年もあと1ヶ月を切りましたぁぁぁ....あぁ⤵
がんばっていきましょ~

FOSS4G Advent Calendar 2015  12/4のエントリー記事でした。
FOSS4G Advent Calendar 2015 - Qiita
2個目もあるよ
FOSS4G 二個目だよ Advent Calendar 2015 - Qiita