選挙も終わって長らく気絶していた官公庁がもぞもぞと動き出すころですね。
各政党の公約は今後どのように実行されていくのでしょうか。
公約違反だ!…というセリフを聞くたびに
そういえば私も頼まれものをまだやっていないよなー、と思ってしまいます。
そこで、自分のところで滞留している頼まれ物リストのうち
FOSS4G(というかQGIS)関連で3つを選んで挙げて、自分のダメっぷりを晒していこうとおもいます。
++++++++++++++++++++++++++++++++++++++++
1) XXXXをQGISで見られるようにYYYYで配信する
のっけから伏せ字で申し訳ありません。
これ、ちまちまと作り出していたのですが
先週、あるかたがすでに同じテーマに取り組んでいることが判明し
しかも目指すクオリティがはるかに高い…
…これは素直にお任せすることにしました。
近々素敵なものが公開されるはずです。
楽しみにしてます!(他力本願)
2) QGIS上でポイントフィーチャを最近隣のポリゴン/ポリラインのエッジにフィットさせる(くっつける)
これをQGISでやりたいんだけど…という問い合わせを複数のかたから頂きました。
河川関係の仕事をやっているからでしょうかね。
たぶんこれとこれを組み合わせればできそうです。
NNjoin Plugin
最近隣エッジ上のlocationとそこまでの距離を返す
後者のほうを実行すると以下のような答えがかえってきます。
1 |
Closest point found at: POINT (0.5 1), with a distance of 0.50 units. |
この結果に、フィットさせた先の
ポリゴンまたはポリラインのフィーチャIDを付与できるような処理が行えればOKです。
3) QGIS上でNETWORK解析の到達圏解析をする
魚類の仕事をしているかたから
QGIS上で、一定の条件を与えて(ex.距離,標高 etc..)
遡河回遊を行う魚類の遡上可能範囲(河川内)を抽出したい
とのご相談を受けました。
GRASSかpgRoutingつかって到達圏解析をしたらどうですか?と依頼主に提案したら
“GRASSとか面倒くさくてイヤ!”
と若干かぶせぎみにいわれたので
GRASSのヘビーユーザとしてすこし(かなり)傷つきました。
1)といい2)といい私の周りの人々のQGIS好きは異常です
まあ最短経路解析(Shortest Path)ができるんだから
到達圏解析もできるんだろうな、と思い調べてみたら、
Network Analysis:Areas of the availability
…できそうですね。
サンプルコードを試しに実行してみた結果は以下のとおりです。
(なお下図の河川は適当にえらんだ場所であり、ここで解析を行うというわけではありません)
Input と Output をQGISのレイヤに変更してやればよさそうで
たとえば input のあたりは以下のように変えて
複数の地点を一気に処理できればよいかな
と思っています。
1 2 3 4 5 6 7 |
vlayer = QgsVectorLayer("river_mouth.shp", "river_mouth", "ogr") iter = vlayer.getFeatures() for feature in iter: geom = feature.geometry() x1 = geom.asPoint().x() y1 = geom.asPoint().y() pStart = QgsPoint( x1, y1 ) |
++++++++++++++++++++++++++++++++++++++++
結局 “QGISで” というしばりのために放っておいたものばかりですね。
1)は来週には公開されるとして
2) 3) はクリスマスまでに使えるようにしたいです。
….が、もしかしたらお年玉の時期になるかもしれません。
ぼちぼちとPyQGISをお勉強しながら取り組みたいと思います。
なお、解決してくれる素敵なツールやプラグインがあればぜひご一報ください。
(ものぐさなので大変助かります)
ではでは皆様よいお年を。