Open xINT CTF 2023に参加しました

2023年11月11日に開催されたOpen xINT CTF 2023にユーザーGinとして参戦したのでWrite-upをうpします。

スコア

1650ptで2位でした。前回は20位だったので成長している気もします。

今回は割りと誤答なく正解にたどり着けた問題が多かったです。

以下、解けた問題だけ回答順にWright-Upとして記述します。問題自体はコンテストのページが開いている間はコンテストページを(一応、フラグの判定は生きているようです)、閉鎖後は他のwrite-upのブログ記事を参照してください。

Amusement

観覧車とリフトが映っている写真の施設名を回答する問題

回答手順 最初に思ったのは、観覧車があるスキー場って北海道にあったよな、でした。とりあえず"観覧車 スキー場"でググったところ、確かにそのような事例は複数あったのですが、観覧車の脚やリフトの形状が異なったため方針を転換しました。
次に、素直にGoogle画像検索に画像を入れたところ、Flagになりそうな施設がヒットしました。施設名でググったところ、問題と同じ施設と判断できる画像が複数出たため、回答しました。

Esta rico!

飲食店の店内の画像から店舗の電話番号を回答する問題

回答手順 初手で気になるのは手前にあるメニュー表です。具体的な料理名があるのでググると、レシピサイトしか出てきませんでした。
次に奥にあるホットショーケースに見慣れない料理名があるのでググりましたが、文字を正しく読み取れていなかったのか、特に意味のある検索結果を得られませんでした。
最後に、雰囲気として特定の文化圏の料理店であるため、その民芸のようなものを含む範囲に絞って画像検索し、文化圏を特定しました。最後に、"○○料理 "(手前のメニューにある料理名)""で検索したところ、某県某市の料理店が一番上に出ました。Google Mapsの口コミに投稿されている画像から、店内の意匠が一致していたため電話番号を回答しました。

Aircraft

背景が空のみの航空機の映像を見て回答する問題

回答手順 映像を見るとエンジンが4発ある、輸送機っぽい航空機とわかります。翼の形状に注目すると、翼端が直線的です。また塗装の雰囲気として、米軍のようにも見えます。この時点で、C-130系列の輸送機である可能性を考えました。
ここで、Flagの形式が正規表現で指定されており、仮にC-130とすると、最後にアルファベット1字が来ることになります。ウィキペディアから同型機の型番一覧をみると、そこまで数がないですからそれなりに試行すればたどり着けます。私は製造機数も多く現在の米軍主力である型を回答したところ正解でした。

pet

画像→場所→人物→人物周辺の情報と段階を踏む必要がある画像問題

回答手順 このあたりから少し手順が多い問題にとりかかりました。この問題では、まず画像の公園が何かを探す必要があります。画像検索すると、バンクーバーにある公園がわかります。「開園式」と言われているので"opening ceremony"を公園名、地名とともに検索すると、バンクーバー市の公式サイトに不明な人物が演説する写真に行き当たり、その画像を撮影した人物名がでました。
人物名で検索すると、確かに写真を生業としていることがわかるので、人名で出てくるfacebookを見ます。趣味や仕事、年齢がおおよそあっているので、facebookの投稿を遡り、溺愛してそうなペットの名前(初見ではとてもペットの名前とは思えませんでしたが)を回答。

Bitcoin

実はOSINTって検索するとサクッと解けたらしい、ネットを彷徨う問題

回答手順 人名、結婚、Bitcoinで検索すると無数に記事が引っかかりました。米連邦捜査局により大量のビットコインが押収される事件を起こしていたようで、その際に利用されたアドレスを探し出すことができればよさそうです。最初は司法省の捜査資料を読んだりしていたのですが、あまりにもほしいデータにたどり着けなかったため、別のネット記事を探しました。ビットコインの仕組みをよくわかっていなかったのですが、高額取引は特に界隈で注目されており、記事中で額面や取引情報を掲載しているページがあったため、そこから回答を行いました。
翌日の振り返りで、X(Twitter)上のOSINT垢が当該取引に関する情報を掲載していたことを知り、ググるだけでは非効率な場合があることを改めて実感しました。

BUS

道路上のバスが映った画像から場所を特定する問題

回答手順 オーソドックス?な問題だと思いました。まずはバスを特定するところから、画像検索で日光足尾のあたりを走るポンチョということがわかりました。この情報と周辺の環境が山がちであるように見えることから、ルート上の山っぽい場所にあたりを付けます。また、画面内にあるカーナビの国道マークから、おおよその位置と方位が特定できます。あとはカーブの形を見ながらストリートビューで何か所か試し、山の切り方から一致する場所を特定して回答しました。
ある程度のGeoguessr力があるとサクッと解ける問題であったように思います。
当初はポンチョだなぁと思って画像検索をしていなかったのですが、画像検索一発でどこで走っている車体かわかり驚きました。今回は全体的に画像検索を有効活用することが求められていたように思います。

mural

壁画がある場所を特定する問題

回答手順 ぱっとみて思ったのは昨年の戦車を特定する問題です。結局解けなくて様々なwrite upをみたところ背景情報から路地を特定する手法が紹介されており感心しきりだったことを思い出しました。
それはさておき、まずはどこにあるのかわからないことには始まらないのですが、絵を見ればイランの政治指導者が力強く描かれており、一発でイランを感じます。画像検索をすると、テヘランの街中にあるらしいということがわかりました。類似する画像をいくつか見ると、壁画に向かって右奥にテヘラン大学があるらしいこと、手前には路面電車かBRTか何か、専用の立派な駅施設があることがわかります。この情報から、テヘラン大学周辺の公共交通網を調べ、駅を何か所かめぐったところ正解の壁画らしきものにたどり着きました。建物のプラスコードを答える問題でしたので、建物を正確に見積もって回答しました。
翌日の振り返りで、壁画がある広場名ズバリ掲載されているサイトがあったときき、もう少しちゃんと類似画像を調べてからやればよかった、と後悔しました。

neko

whois問題

回答手順 とりあえず愚直にwhoisコマンドをたたいて出てきたものを回答しましたが、ハズレでした。ヒントとして、別のサイトをみよ、とあったので、安直にTLD名とwhoisで調べてでてきたサイトで検索したところ、別の答えが得られたのでそれを回答しました。TLDの管理者のサイトでwhoisがきちんと掲載されているのだなぁ、とわかり面白かったです。

REVERSE AI

生成AIで作られた名作文学の冒頭シーンから作品名を当てる問題

回答手順 最初に問題を見たときに、「イギリス紳士?銃?犬3匹?」なんかわかるようなわからないような……?となり放置していましたが、nekoを回答した次の瞬間に閃いて回答しました。
単純に、カギカッコ内の情報をググれば作品に行き当たったようなので、日本語・英語で絵にある特徴ある物を検索する、ということが大事そうです。

COMPANY

nekoの続きの問題

回答手順 まず、nekoのURLにアクセスすると、とある会社のサイトにリダイレクトされます。ベトナム語を読めないのですが、会社情報はどうせ一番下に書いてあるので見てみました。会社名らしきものはゲットできました。
ここでわからないのがMSTです。素直に、"ベトナム MST"で検索すると、日本語の情報サイトで、ベトナムの税関係の番号であること、検索できるサイトがあることがわかります。このサイトで、会社名を入れて検索しようとしたのですが、CAPTCHAを突破できず、あきらめて会社名とMSTの略さない形で検索したところ、それらしき文字列が掲載されたサイトに行き当たり回答できました。

cosplayer

画像→人物→人物のSNS→別の人物のSNS→別の人物の別のSNSを探しに行く問題

回答手順 この問題を解くのに、途中でご飯を食べたり休憩したり研究を進めたりしたものの3時間程度かかりました。何に詰まったのか、何が突破口だったのかを紹介します。
まず、与えられたTwitterの投稿から、画像につけられたキャプション、イベント名で検索すると、イベントの公式HPにそのコスプレをしている人物が誰か、本名?で記載されていました。この名前をググったところ、facebookのアカウントが見つかります。このアカウントは、そのイベントのfacebookの投稿のコメント欄にもいたので、まず間違いなさそうでした。
このfacebookの人物の別のコスプレイヤーとのツーショットを探すべく、画像欄を捜索したのですが、探し方が悪かったのか最初の検索では10年以上遡っても見つけられませんでした。そこで、人名やfacebookのアカウントID、参加イベントでググってヒントを得ようとしましたが何も見つけられず、結果として投稿をじっくり見返すことにしました。
すると、問題のTwitter投稿の数年前に、同キャラで合わせをしている画像が見つかりました(第三者の投稿だったので、最初に見逃したのかもしれません)。丁寧に人物がタグ付けされていたので、その人物のfacebookアカウントにたどり着けました。
ここから、その人物の交友関係、参加イベント、人生イベント、個人情報で検索しましたが、全くXのアカウントは引っかかりませんでした。人物が間違っていることを疑い、再度元の人物のfacebookアカウントを見ましたが、やはりこの人物しかないとわかり、半分匙を投げていました。
最後の最後で、アイコンの画像検索をしていないことに気付き、検索したところ、類似画像でその方のXアカウントのアイコンがヒットしました。
今回の反省は、画像は非常に重要な情報であり、まず画像検索してみるのも重要だということです。視野狭窄に陥り文字情報にこだわっても解決しないことがあることがよくわかりました。

その他の問題に関して

Fireworks

花火の映った数秒の映像から場所を特定する問題

回答の試みと感想 花火大会であり、その時期も示されていることから、花火大会の情報まとめサイトを見たところ数が多すぎてうげぇとなりました。次に、映像に映りこむ地形に注目すると、手前に松があり、水面、対面の市街地という状況でした。ここで、水面の様相や周囲の雰囲気から湖沼か内湾を想定しました。まず8月にあるそのような場所での花火大会を何件か調べてストリートビューで見に行きましたが、あまりわかりませんでした。この問題に時間をかけても仕方がないと思い、半分あきらめで各地を巡りましたが、答えは得られませんでした。
翌日の振り返りでpinjaチームから月齢の情報が重要である旨指摘され、なるほど、と思いました。確かに、月の情報で時期を絞って候補を絞ることはできたはずなので大変勉強になりました。
なお、松が生えているので海岸であるという絞り込みは極めて難しいと思います。枝ぶりを見ても風の影響がそこまで強く出ていないですし、日本の松分布をみる限りは水面があれば基本的にどこでも松はありうるので絞り込みに使う情報という判断はできませんでした。
むしろ節水ポスターに小さく書いてある主催団体又は行政の名前をエスパーしようとしましたが、こちらは全然ダメでした。
やはり、月齢と対岸に市街がある地形で絞り込んであたるのがスマートですし納得しました。
何かのアニメの聖地でもあるらしいです。

RIDE A BUS

与えられた文章からトンネルの座標を回答する問題

回答の試みと感想 今回の問題セットの中で一番何を言っているのか訳が分からなかった問題です。何をすればよいのか皆目見当がつかず、とりあえず東京に近い海外向け観光で有名なトンネルを検索しましたが、問題に添付されている道路下の歩道かせいぜい片道1車線の現代的な隧道っぽいものには当然全くたどり着きませんでした。時間をかけても仕方がないと思い諦めました。
Chat GPTを利用しておすすめ観光地を聞き出し、そこから回答できる、と後から知り、そんなことできるんだ~~~!!!と衝撃を受けました。全く思いもよらない手法で、脱帽です。しかもその解法を知ってもChat GPTと仲良くなれずうまく回答に至る観光地情報を引き出すのに苦労しました。今後もAIの利用問題が増えていくとするならばちゃんと対策をしなければなりません。頑張ります。

Otokichi

歴史的人物に関係する場所を特定する問題

回答の試みと感想 昨年のYokohamaと類似する問題です。とりあえずどのような人物でどこのあたりに関係がありそうか、まではわかったのですが、詳細な座標にたどり着くことはできませんでした。500点だしまず解けない想定だろうということで捨てていたというのはあります。
翌日の振り返りの際に、YouTubeにOtokichi関連の研究成果がアップロードされていたということで、もう少し視野を広げる必要があったのだなと理解しました。今回も難題で面白かったです。

ONSITE問題たち

現地でHUMINTしたり、SIGINTする問題たち

回答の試みと感想 これは最初からあきらめていたので、なるほどこういう問題があるのかと勉強になりました。SIGINT問は使うべきツールをわかっていなかったので、他の方の探し方、pinjaチームの想定を知り、やり方を分かった気になれました。

感想

今年は全体的に画像検索の力と生成AIの台頭を感じました。これまで以上にツールの使い方を勉強する必要がありそうです。

かといって、今まで通りの検索の腕前の重要性は変わりません。別のOSINT CTFなどにも参加して鍛えたいと思っています。

最後に、今年も魅力的な問題と安定した運営をしてくださったpinjaのみなさま、ありがとうございました。

Open xINT CTF 2022に参加しました


2022年10月29日に開催されたOpen xINT CTF 2022にチームtestとして参戦したのでWrite-upをうpします。

スコア

1500ptで20位でした。

http://openxintctf.pinja.xyz:2022/ より。

http://openxintctf.pinja.xyz:2022/ より。

たくさん回答して沢山間違っています。
以下、解けた問題だけ回答順にWright-Upとして記述します。問題自体はコンテストのページを参照して下さい。

ho ho ho

画像から関連する人物を特定する問題です。

回答手順
画像から薪ストーブということがわかります。問題タイトル「ho ho ho」や問題文中大使館の情報からフィンランドかな?というアタリをつけて、ググると会社が出てきます。会社HP内を見ているとチーズ関連情報やギルド情報もあります。再度ググると人名が掲載された新聞記事がヒットしますので人名を回答しました。

saitaku

画像から関連する人物を特定する問題です。

回答手順
画像から会社名っぽいものをググるとページが出てきます。このページ内に出てくる人名は社長ではないようです(とりあえず回答して間違っていたのを確認したうえでLinkedInで裏を取りました)。Legal情報を閲覧すると会社名が判明します。会社名をググればよいのですが、「GmbH」をつけないとうまく検索できない罠があります。スイスの商業登記サイトが出てくるので、その中からえらそうな人名を探して回答しました。

VIDEO

映像から場所を特定する問題です。

回答手順
映像の最後の方に、PAとICの文字がありETC専用であることもわかります。また、開いている時間も決まっているようですので、漢字2文字SICという情報とあわせてかなり数が絞られます。植生や道路の雰囲気から本州あたりかなという直感に従って周辺の民家の様子など含めてしらみつぶしにGoogle Mapsで調べて回答しました(幸いにもストリートビューで旅行する羽目にはなりませんでした)。

BRIDGE

VIDEOの関連問題です。

回答手順
場所はわかっているので橋名を調べます。ストリートビューでは不鮮明でわかりません。道路の雰囲気として市道っぽいこと、「取得価格」がわかるというヒントから、市のHPで市道認定路線を調べます。市道路線網図に橋名が掲載されているので、橋名にダブルクォーテーションをつけて検索して引っかかる市の固定資産一覧のExcelファイルを検索して回答しました。

3month

画像から場所を特定する問題です。

回答手順
画像中キリル文字を読むと現在ロシア占領下にあるマリウポリにあるロシア軍による施設らしいことがわかります。マリウポリ全域を見てもわからなかったので、画像にある文字列を全部入れて検索するとロシア側メディアの記事がヒットします。周辺含めてわかる映像もあるので、教会等のランドマークが付近にあることがわかります。しかし、マリウポリの特徴ある教会の場所を調査することができなかったので、Sentinel Hubで最新の衛星画像を利用して縦に潰したコの字みたいな建物を市中心部付近でしらみつぶしに探して回答しました。教会や周辺の建物の雰囲気から中心部に絞りましたが、あまり確実な方法ではないと思います。

happy birthday, yall

問題文から人物と関連する事物を特定する問題です。

回答手順
素直に"54th birthday Las Vegas chef"でググるとあるYouTubeチャンネルが出てきます。チャンネル名と25 th birthdayで検索すると、YouTubeコミュニティの投稿に行き当たり、ケーキを持っている青年の名がわかります。青年の名とチャンネル名で再度検索すると、ケーキではない別の料理の動画に行き当たりました。

BUS2

画像から場所を特定する問題です。

回答手順
画像内バス会社の所在と道路標識から、岩手県道25号線に行き当たります。雰囲気的に観光地のようですので、25号線に沿ってGoogle Mapsで探しました。1車線になっている区間であること、やや樹高が低く直線的な部分であること、地形から、おおよその範囲にあたりをつけ、右手前に砂利の広場がありそうなことから待避地点や分岐点を探しました。結果的に、登山口付近が砂利っぽいことが衛星画像からわかったので、回答できました。結局最後はしらみつぶし的になりました。

感想

ネット系0問しか解けていないあたり弱さがありますが、初めてにしてはそこそこの出来でした。spaciousが解けなかったのはかなり恥ずかしいので今後もそれなりに精進したいです。
BUSとかtankもあと一歩だったのになァ。もったいないなぁと思っています。
また機会があれば参加します。

この記事は90日以上更新されていないと表示される広告に対抗して書かれました。

90日以上ブログを書いていないらしいので、ブログ記事を作成しました。

近況としてはぼちぼちやってます。

最近(ここ90日)でつくったもの:leafletというJSプラグインを使って、地図を表示するサイト

ginnannman.github.io

 

面白いと思う機能:WikiData(Wikipedia財団が運営する、LOD形式のデータが集積されたサイト)のクエリを使って、表示されている地図の範囲のWikidataを取得して表示するもの。これを使うとウィキペディアを地図ベースでみるのに非常に近いことができるので、楽しい。

 

ではまた。

『終活読本 ソナエ 2021年秋号』を読んで

こんにちは!

皆さんは終活してますか!?

私はいきなり『終活読本 ソナエ 2021年秋号』が送られてきました!

よくわかりませんね!

 

感想

総評

人なら誰しも一度は考えるであろう人生の終焉に関するムック。人が死ぬ確率は結婚する確率よりもはるかに高いのでゼクシィなどよりもよっぽ万人受けするに違いないが、この手の雑誌類は残念ながら希少である。本屋の店頭に平積みされているところを一度も見たことがないのはよく考えるとおかしいのではないだろうか。

葬式・お墓トレンドがコロコロ変わるとも思えないので年4回発行は無理してるのでは?という先入観に反し、著名人のインタビュー、最近のお墓関連事情、連載記事などで誌面が埋められており記事広告以外の広告類は少ない。

気になる読者想定層だが、どうも50~80代付近のようだ。生前整理特集記事は50代以降について場合分けがあるし、読者からの投稿も50代が大半を占める(20~30代女性も複数みられるのでその層も熱心な読者がいる様子)。

全体として、質の高い終活関連本ではないかと思われる。毎号買おうとは思わないが、興味のある特集があったら読むとよさそうだ。

表紙~巻頭インタビュー

舞の海秀平さんが表紙を飾っている。舞の海さんは世田谷自然食品NHK大相撲解説のイメージなのでやはりそのあたりの年齢層に訴求したいのかもしれない。産経っぽさがにじむインタビュー内容で味わいがある。相撲への敬意の高さはうかがわれるがその割にはインタビュー内土俵での写真の様相がカジュアルですね、といったところか。

「終活の最前線」

個人的には一番面白かった。どの記事もタイトル通りの内容だが、前後の経緯や深堀りをする価値がありそうなのはこのあたり。デイサービスでの気さくな会話のためにネタを仕入れるときはここを読むべし。

特集「定年後の生前整理」

今号の特集その1でかなりの充実。インタビュー2本に年代別のTo Do、遺品整理に関する読者投稿&レスポンスがあり、それぞれに内容があった。詳しくはぜひ読んで確かめてほしい。惜しむらくは、40代以下はどのような生前整理をすればいいのかわからない点である。次号以降「定年前の生前整理」特集を期待したい。

多くの人がぼんやりとしか考えていないであろう生前整理の考え方や具体的な方法、気を付けることがバランスよく配置されている。注意すべき点としては、すべてジャパニーズトラディショナル家族像が前提されていることが挙げられる。例えば一人暮らしで子孫などいないタイプの人にはできないことがかなり書いてあるので、このブログを読むような人はあまり参考にできない。

特集「上手なストレス発散法 高齢者につらいコロナ生活」

勿論若者もつらいのでストレスを発散しよう。この記事だけいきなり高齢者がターゲットと名指しされるので迫力がある。内容は普通にストレスを解消する方法であるが、禅宗日蓮宗の僧侶がそれぞれ寄稿している点が特色といえるかもしれない。御多分に漏れず全部やってたら日が暮れそうな内容ばかりである(高齢者で暇な方の場合、すべてをこなして完全メンタルを維持している可能性もあるな……)。

「「障害ある子」を持つ親の終活」

いい記事。関係ある方もない方も機会があれば読むべし。障害ある子(原文ママ)をもつ親の相談に応じる相談窓口の紹介記事で、全国にその活動が広がりつつあるとのこと。

イスラム教の葬儀と死生観」

イスラム史の講義の第1回くらいで教わりそうなイスラム教の概説と、西アジア都市史を墓地の観点から研究する先生の講義で言ってそうなイスラム教の葬儀の話。つまりそれぐらいに充実して内容がある。土葬用の墓地の問題は大手新聞でも取り上げられたことがある話題ではあるが、少し詳しい話が記されているので知ってるよと思ってる人も読むことをお勧めしたい。

「『あの世』『この世』通信」

読者からのお便りコーナーのタイトルである。読者と編集部、どっちがあの世なのか謎。内容自体は特筆すべきものはない。皆さんそれぞれ考えること、経験があるのですねという気持ちになる。

その他広告の感想

広告記事を除くいわゆる普通の広告は墓地、石材業界団体、葬祭業界団体、遺骨ペンダント、線香で、かなり偏りがある。終活のメインはやはり墓や葬式なのだろうか……個人的には、それこそ生前整理・遺品整理の業者やサプリ・健康食品業者、高齢者施設の宣伝があってもいい気がする。とりわけ面白い広告はなく、フツー。こういうところがアピール上手になると結婚式業界のようにイケイケな感じで終活を推していけるのではないかと睨んでいる。誰か葬祭・墓関連の広告に革命を起こしてほしい。

書誌情報

産経新聞出版『NIKKO MOOK 終活読本 ソナエ vol.34 2021年秋号』2021年10月13日(仏滅)発行

奥付に「仏滅」とわざわざ書いてあった。終活であって仏事ではないのだから六曜は関係なさそうだが……結婚情報誌は「大安」とわざわざ書いたりするのだろうか。

経緯

2021年11月8日にTwitter上でゼクシィが送り付けられた人の話題に関連してツイート。

これに対して、実際に存在するとの指摘をいただいた。

www.fujisan.co.jp

翌9日、Amazonから「ギフト」が配送されてきた。当然心当たりがないので訝しみつつ開封すると、ギフト包装の中からこのムックだった、というわけ。

蓼科らんさん、ありがとうございます!!

 

GISの諸々資料リンク集(随時追加)

 

GIS関連で参照するサイトをまとめたもの。追加希望はコメントにて募集中。

※内容は玉石混淆です。御自身の責任で利用してください。

 GISソフト・WebGIS

筆者はArcGIS ProとQGISをメインで利用しているため偏りがあります。

ArcGIS関連

GISといったらコレという製品。研究機関・大学などはArcGISが多そうというイメージがある。

本体

高額。大学などでライセンス契約している場合があるので所属先にそれぞれ確認するとよい。

個人向けは無償で利用可能(要登録)。オンライン版。ウェブシーンの作成・公開や共同作業などができる。プロセシングなどはProのほうがよい。利用者はリンク先からログイン可能。

現在はProの利用が推奨されている。そのうち更新されなくなるらしい。基本的に使わない。

更新情報

新機能の紹介や事例紹介がある。読みやすいので時々眺めている。ESRI 日本法人のTwitterアカウントでもツイートされるがラグがある。

製品情報やプレスリリースはここ。利用上面白いことが書いてあることは少ない。

開発

アドインなどを作成したり、他の人が作ったアドインをインストールして機能を増すことが可能。

Pythonで書き書きすると割と自由なことができるらしい。もっと自由にアドインなどを制作する場合はProfessionalプラン以上の契約で利用できるArcGIS Pro SDKがよさげ。

ESRI 日本法人のリポジトリには、ArcGISの拡張ツール(例えば内向きバッファの作成などの機能があるEJPyConv ツールや、PLATEAUのCityGMLをファイルジオデータベースに変換するツールなど)が公開されている。

さっきもみた気がするが再登場。コンテンツを共有する機能で、ツールやアドイン、マップを公開することができるため、ここから有用なツールを手元に落とすことが可能である。玉石混淆の極み。

教材・マニュアル

各機能の紹介がある。英語版記事を読んだ方がわかりやすいことも多いが、日本語版に強制的にリダイレクトされる(私だけですか?)。

やりたいことから操作方法を逆引きできる。PDFで割と大きいファイルなので注意(直リンクにはしていません)。

なんかモダンな公式機能紹介。ストーリーがある教材が多い。

慶應義塾大学の河端瑞貴先生のArcGIS Pro使い方紹介ページ。先生のテキストの補助教材として、YouTube上に公開されている動画リンクがまとめられている。あくまで補助教材であることに注意。

最大手ということだけあって、YouTube上で様々な利用シーンの動画が見られる。探す価値はある。

QGIS関連

無償で利用可能なものとしては最大手。近年とても使いやすくなったイメージがある。日本語にも対応。ウィンドウズ以外でも動作し、Macでも利用可能らしいが動作は怪しい場合もあるらしい。

本体

基本的には最新のバージョンのインストールでいいと思われる。最新版の動作不安定が不安な場合はLTR(long term release)を利用のこと。

更新情報

更新情報はブログに掲載されるほか、既にインストールしている場合にはQGISソフト立ち上げ時にお知らせされる。

開発

 QGISはFOSS(Free and Open Source Software)であり、世界中の開発者らによってつくられている。つまり、QGIS本体の保守・改良に参加することも可能。

QGIS本体のバグ報告、コミュニティ参加はここから。

既知の不具合を知りたい場合はこちら。ソースもあるのでドキュメントと見比べながら手元の不具合特定をするときにも使える。

プロセシングがArcGISに比べて物足りない?ならばプラグインで機能を追加しよう、というわけ。公式のプラグインの案内がある。なお、プラグインのインストールはQGISのソフトを立ち上げてプラグインメニューから行うほうが安全で推奨されている。

教材・マニュアル

まずはこれ。バージョン選択や言語選択は左下にある「ⓘQGIS Documentation v:3.xx」をクリックすると出てくる。

実際に動かす方法について説明がある。利用シーンごとのモジュールもあるので、便利かも。上記ユーザーガイドと同様、左下から言語・バージョン選択可能。

この教材はGIS全体の説明があるほか、基本的にQGISでの操作方法・利用方法を記述している。画像などもあり、内容が充実。

ArcGISの場合もそうだが、いろいろな人・組織がQGISの操作方法や様々な利用シーンを動画で公開している。玉石混淆ではあるが、有益。

英語で記述されているが、実践的な内容が多い。

その他GISソフト

世の中には無数のGISソフトがあるのでそのうち有名だったり使ったことがあるものを紹介する。

無償またはフリーソフト

埼玉大学の谷謙二教授によるフリーGISソフト。使い方については上記ページ内での説明のほか、古今書院から出ている本などがある。

空間的自己相関なども解析できるらしい。ほとんど使ったことがない。分析メイン。

PostgreSQLの拡張で空間情報を扱えるようにしたもの。これ単体ではなくQGISと組み合わせたりすると強い(バックエンドでテーブルをSQLで処理できる)。らしい。インストール・使い方は公式サイトのマニュアル(英語版:最も更新頻度が高い。本家本元。日本語版:更新が遅いが日本語で読める。)を参照のこと。

OSGeo財団によるGIS。全く触ったことがないので何が強いのかわからん。紹介はとらりもん - GRASS GISとは?がある。マニュアルはGRASSビギナーズマニュアル · GIS実習オープン教材がある。

地球科学向けツールが充実しているという触れ込みだが、よくわからない。wikiや開発状況などはダウンロードサイトに充実している。

DAN杉本さんが開発されているGIS。とくに地形に強い印象でGPSのデータビューワなどがあり山に行く場合などに有用そう。スマホアプリの「スーパー地形」はお世話になっている人が多いと思われる。

有償ソフト

割愛。 個人的に利用経験がなくわからない。有償ソフトならば基本的にヘルプが受けられると思われる。

有名どころではMapInfoSISZENRIN GISがある。

その他ウェブGIS

インターネットを通じてオンラインで利用できるGISも世の中にはたくさんある。なお、ここではウェブGISのほかに地図サービスの類も混ざっているので注意。

いきなりグレーゾーンっぽいので恐縮だが、地理院地図の使い方を参照すればわかるように、GISっぽいことができる。地理院地図Vector(仮称)ではベクトルタイルの閲覧と取得も可能(これは国土地理院GitHubリポジトリ地理院地図Vector(仮称)提供実験」で公開されているのでQGISなどにタイルサーバとして接続して利用することなどもできる。ありがたい限り。)で使いこなせばそれなりのことができそう。とはいえきちんと作業したいときはXYZタイルをQGISに接続して利用したりすることが多い。

宮崎県職員の方が作成されたシステム。地方公共団体のウェブGISというとその地方公共団体の範囲のデータしか利用・描画できないものが多いが、これは日本全国利用可能で、e-statなどからデータを引いてきて表示させることも可能。操作もわかりやすい。

これはGISなのか?と言われそうだが、KMLを読み込ませてジオコーディングできたり、マイマップ機能でポイント・ライン・ポリゴンを生成できるので便利。旅先にもっていきやすいのでおすすめ。

まだ試作版ではあるが、MANDARAのウェブ版ということで期待が高まっている(私の中で)。MANDARAらしさがあるのでMANDARA慣れした人におすすめ。

e-statに登録されている統計のうち、国勢調査や経済センサスなど一部について利用することができる。国勢調査の小地域の境界データをダウンロードしてやるほどのこともないときなどには簡便である。

国土数値情報ダウンロードサービスの土地利用細分メッシュと土地分類基本調査の内容についてウェブ上で閲覧できるようにしたもの。地理院地図っぽい感じのを使っているので、地理院地図慣れしている人には操作が簡単。

ため池マップなど、特徴あるレイヤーが追加された拡張地理院地図。今昔マップなどとも接続可能。

地質図といえばの産業技術総合研究所産総研)が作成しているウェブGIS。地質図以外にも地球科学的な図をウェブ上で閲覧できるのが魅力。

男女比特化型ウェブGIS。操作・動作ともにわかりやすい。

地方創生で生えてきたウェブGISのようなもの。政府の作ってるサイトなのにベースマップがOpenStreetMapで、そのうえズームレベルがあってなさそうでおかしいし、統計データの元データにリンクを張ったりしてくれない、操作性が微妙などいろいろある。個人的にはあまり使わない。(市区町村女性参画状況見える化マップみたいに使いやすくならんかね)

日本都市計画学会や都市構造可視化推進機構による都市構造可視化計画のウェブGIS。少し見にくい感じもあるが凝ってるので面白い。

埼玉大学の谷謙二先生によるウェブGIS。明治期から現代にいたるまでの地図を各時点で比較しながら見られる。便利。

関東地方の迅速測図と現在の土地利用・条件を見比べることができる。機能は限られるが希少。

奈良文化財研究所が2021年7月に公開した文化財、遺跡、木簡などを検索できるウェブGIS。まだまだ知名度が低そうだがこれから結構流行りそう。

立命館大学のデジタルヒューマニティーズ的研究成果。おもしろい。

日本沿海・水面特化のGIS海上保安庁整備。

最近話題のハザードマップのサイト。2つのシステムからなっており、そのうち「重ねるハザードマップ」は様々なリスク情報を地図上に表示可能。もう一つは全国自治体のハザードマップサイトへ地図から飛べるので便利。

少し不親切で、ここから市区町村をクリックすると別ページに遷移して変遷が表示され、そこから昔の自治体がわかるという寸法。慣れてくるとこれが便利なのでおすすめ。より直観的なものはこちら

農水省のウェブGIS。ここで農業集落を選択するとその農業集落の「わがマチ・わがムラ」ページに飛べるようになっていて実は便利。

帝国書院と都市構造可視化推進機構によるもの。学習用の感アリ。

「○○市/区/町/村 GIS」とググれば出てくる。用途地域などがみられることが多い。

  • 教科書会社による高等学校地理学習のためのWeb GIS

高等学校地理が盛り上がっているので帝国書院など地理教科書大手がウェブGISをはじめようとしているらしい。ArcGIS Onlineのストーリーマップが多そう。

周辺ソフト・サービス

ここでは、GISの周辺(入出力・データ加工など)の道具として使われているソフト・サービスのリンクを紹介。

ウェブ系

インターネットで地図を公開するときに使いそうなものその1。地理院地図と組み合わせたもののサンプル例が地理院地図のGitHubリポジトリに公開されているほか、埼玉大学の谷謙二先生が教材を公開されている。

インターネットで地図を公開するときに使いそうなものその2。よく知らない。

データ加工系

東大CSISのアドレスマッチングサービス。便利。アドレスマッチングはGoogleマップでもできるが制限があるらしい。有料サービスならいろいろ選択肢は増える。

基盤地図情報JPGIS形式なのでそれを表示したりshapeなどに加工するためのソフト。取捨選択もここで行える。しかし重い。

基盤地図情報の標高データをGeoTIFFに変換できるツール。

教材・マニュアル

各ソフト・サービスの説明は別記の通り。ここではGIS全体の教材やマニュアル類、概念説明のリンクを集めた。

GIS全般の教材

esriが作成したGISとはなにかから説明のある記事集。

GISの老舗、PASCOが作成した用語集・使い方(事例)集。古い項目も多いが、参考程度に利用可能。

QGISの教材とした挙げたGIS実習オープン教材だが、GIS全般についての記述もある。簡単な概念整理である。

その他

Tipsっぽい内容もあるのでそのうち整理するかも。

座標系・投影法

GISを始めると一番最初に詰まるのが測地系と投影座標系と思われる。ひとまずこれをみると何をすべきかはわかる。

UTMや平面直角の詳しい話が分かる。

ESRI社による、表象したい項目による投影法の選び方PDF。

地理空間情報(DB等含む)

それぞれ利用規約・条件があるので守って利用すること。

日本(無償)

行政地域などなど基本的なデータはそろっている。国土交通省のサービスなので、国交省の政策ジャンルは充実。

一番簡単に手に入る市区町村界(シェープファイル)。

小地域、3~5次メッシュの境界をダウンロード可能。国勢調査以外の統計調査のもあるため、これらを扱う場合は要確認。

基盤地図情報基本項目やDEM(標高)データが入手できる。加工には上述したビューアが必要であることに注意。

最近話題のPLATEAUのデータもここにある。有料・無料混じっているので注意。個人的にはちょっと探しにくさを感じている。

PLATEAUのデータをArcGISで利用しやすい形式に変換して配布している。

自然環境系のGISデータはここから。

予報区のGISデータが公開されている。

国内大学の位置などは特色あるデータと思われる。

登録が必要だが、頻繁に更新されていて種類も多い。

防災科研のデータ。1次メッシュ順に並んでいるので注意。

産総研による衛星写真閲覧・ダウンロードサイト。LandsatやSentinelのデータを選んでダウンロードできる。

1970年から2019年までの任意の時点の市区町村域ポリゴンを生成できるサービス。

過去の地名の緯度経度情報csvなどを配布している。データの探しにくさはある。

これをダウンロードして加工すれば住居表示の範囲に限ってかなり正確なジオコーディングができるんじゃないかと思ってやってみたが情報量多くて挫折した。

一部バス会社・地域等が参加している、バス情報のフォーマット。バス路線情報やリアルタイムのデータ(一部)が公開されている。

日本国の中央省庁・施設等機関のデータの一部がGISデータとして公開されている。気象庁のデータなどもある。

大きいところでは、東京都オープンデータカタログサイトなどがある。

地図タイル配信等

国土地理院のXYZタイルの一覧。QGISなどでベースマップに入れるときなどに利用可能。

産総研地質図のXYZタイル。

上記地質図含めた産総研の総合的な配信状況まとめ。

農研機構が配信している。国土数値情報や基盤地図情報も含んでいるので便利。

エコリスが提供する地図タイル。自然環境に関するデータに特化している。

日本(有償)

各種データ。

経済センサスの調査区データのような本来なら無償公開されるようなデータを販売している。

数値地図2500などのデータは日本地図センターが販売している。

世界

世界各地のGISデータの入手先をまとめている。一部リンクは切れているので注意。

最も有名ではないかと思われる。国境のデータなど、基本的なものはそろう。

NASAの空間統計系統のデータをまとめたもの。完成された地図のほか、WMS等の配信情報、ツールの配布ある。

OSMのデータはダウンロードして利用できる。地図そのものを取り込んでいじれるというのはすごいが、実はよくわかってない。

環境に関する全球・日本のデータがある。衛星の観測データ等も公開されている。

東京大学CSIS関本先生の記事。土地利用、建物、交通から人間までかなり多くのデータセットが紹介されている。

各種データセットにたどり着くには?とか、このデータセットおすすめ!みたいな感じのサイト。

色々な人が色んなデータをアップロードしているが玉石混淆っぽい。もしかしたらピンポイントでほしいデータが見つかるかも程度に思っておいた方がよさそう。

Sentinelの衛星画像をダウンロードできる。登録が必要。

アメリカ地質研究所の衛星画像配信サイト。登録が必要。

ウェブGIS的な感じで利用できる。土地利用の変化に関するデータをダウンロード可能。少し重いページ。

諸外国の官製地図作成機関のサイトへのリンクが紹介されている。各国の国土地理院みたいなものなのでそれなりに情報がありそう(確かめてはいません)。

地図タイル配信等

OpenStreetMapの配信するタイル。

その他、既に一つ上の項目で挙げた各機関のサイト内に配信サービスについて記載されていることが多いので要確認。

統計情報

日本

基本的にはこれ。ここにない統計もあるので、各省庁HPの統計コーナーも調べるとよい。

e-statにない統計情報(というより、加工情報)がある。

都市雇用圏などのデータがある。共同研究者となると様々なデータが利用できるらしい。

日本(有償)

統計情報を売ってる。官庁系なんだからもうちょっと手心と言いますか……

 

その他割愛。様々なデータが世の中では販売されていることだなぁ。GIS関連会社のHPを見るとこういうデータが企業向けに売れるのかと参考になる。

世界

再掲。各種データ揃ってます。

このページを見ると、国際機関の統計入手先がわかる。

こちらのページでは、各国統計の探し方がわかる。

その他・Tips

上記分類から漏れたものの資料として使ったことがあるもの、訳に立ちそうなものをとりあえず列挙するコーナー。そのうち整理するかも。

便利な地図サービス

場所を選ぶと地図・空中写真が得られる。解像度は微妙。使い勝手が異常に悪い今昔マップみたいな感じ。

スタンフォード大学が収蔵する5万分の1地形図を地図上で選んでアクセスできる。

戦前の外邦図アーカイブ。地図から選んで閲覧できるため至便。

関東平野を中心に、土地利用変化がわかる。

ESRI日本法人による標準地域メッシュ検索サイト。クリックした位置のメッシュコードを4次メッシュまでまとめて出してくれる。

上記サイトが出るまで、一番簡便なページはこれだった。緯度経度から調べるならこっち。自動的に生成しているので、海外についても(仮想的に)標準地域メッシュのコードが振られているのも楽しい。

国土基本図の図郭(PLATEAUのデータはこれ)を見てTwitterでおかしくなるなどと騒いでいたところ、Tsukada Tomokiさんが作成して下さった。こういうのをスッと作れる人になりたいですね。その参考となる記事がこれ

起震断層・活動セグメントの検索ができる地図サービス。

防災科研の地震ハザード情報地図。

都市の3次元データでイケイケなPLATEAUのビューア。ただ3次元ということでかなり重い。

地図サービス。車乗らないけど面白い。

チェーン店の店舗検索ツール。鋲が降ってくるアニメーションがかわいいですね。

全国宿マップ兼温泉マップ兼バスマップ。ゆる~とバスルートという別名のものも実はデフォルトの表示が違うだけで中身は一緒。ゆる~とは最近(2021年8月)にバズった。

地図投影法をいろいろ変えてみることで地図がどのように歪んでいるかわかるサイト。モードを「大学(地図学)」にすると今まで知らなかった投影法をたくさん知ることができる。

市民がスマホで写真撮って位置情報をつけてこのサイトで報告すると行政が拾って解決します、ということをやっているサービス。導入自治体はまだ少ないけれど今後も増えていきそうなアプローチ。

アメリカ合衆国議会図書館の検索結果。戦前の地図が入っているので便利。

MITの収蔵する地図がみられる。日本に関係するのもあるので一見の価値アリ。

テキサス大学の日本地図コレクション。米軍が占領時に作成した地図もある。

光害の地図。ビジュアル的に整っている。

アメリカ合衆国の人種地図。1dot=1personという恐ろしい代物。

各国・地域の地図の閲覧・入手方法がまとめられている個人ページ。とても便利なので広く知られるべき。

技術系

GIS関連ブログ。投影法に詳しい。

MIERUNEはQGISを中心に強い会社で、各種ツールを公開されている。QiitaなどにもGIS技術記事をよく書かれるので接触機会が多いかも?

動画付きで実践的なQGIS利用の記述がある。

色々なことが書かれているので日本語記事はここを探すとよい。

PostGISQGISを接続する方法の説明。

他の方が作成したリンク集

慶應義塾大学の河端瑞貴先生のゼミページにあるリンク集。必要十分にまとまっている日本でほぼ唯一のページだと思う。

その他

地名の読み方が書いてあり優れている。

電話帳って便利なんですわぁ。

更新履歴

2021/8/30 公開

2021/8/31 誤植修正

2021/9/8 情報の追加

QGISで最近傍探索のプラグインをつくった

この記事では前回記事に引き続き、QGISプラグインをつくっていこうと思います。
ginnannman.hateblo.jp前回の予告通り、ポイントからの最近傍点を計算して出力するプロセシングをつくります。

はじめに

今回はプロセシングプラグインを作成します。理由はGUIをQt Designerで作ることが面倒だからです。2つのレイヤーを入力し、それぞれのレイヤーの入力点のフィールドを取得することさえできれば問題ないはずですし、GUIで複雑なことを仕込む必要はありません。
ということでQGISを立ち上げて、Plugin Builderを開き、適当に設定していきます。今回はClass nameをNearestPointDistanceなどとして適宜埋めていきます。Class nameだけはCamel Caseにするのがお作法と思われます。

内容

Plugin Builderで作成したプラグインディレクトリを開き、

{任意の作成したプラグイン名}_algorithm.py

の編集を行います。詳細はGithubにあげたプラグインのフォルダの通りなのでぜひそちらをごらんください。


今回は初めてのプラグインということもあり非常に冗長かつ処理の重い(割に精度の保証があまりない)実装になっています。
キモは、QgsSpatialIndexのnearestNeighborというメソッドが行っている処理が実は近似最近傍検索で高速だが精度が低い方法を採用しており、そのために最近傍が漏れてしまうことがあるという問題をいかに回避するかにありました。
近似最近傍を採用しない限り、10000程度のオーダーでも計算量が爆発してしまうことは目に見えているので、正解といえば正解なのですが、10m単位で結果がずれることがあるのでどうにかしたいという問題意識があります。
そこで、今回は簡易的にnearestNeighborで10個の最近傍候補を取り出してそこから線形探索を行い、最近傍らしいものを取り出すことにしました。今までの経験から、10個も候補を出せばだいたいの場合で正しい答えにたどり着けることがわかっていたのでこの方法を採用しました(本当はこれを定式化するなりアルゴリズムを読み解いて実用的な精度であることを示すなりしなければならないのですが割愛します)。精度が気になる方は近似最近傍検索の個数を増やすように書き換えるか、そもそものメソッドを書き直すなどして新たにプラグインを作成してみてください。
注意点としては、元ネタのQGISのコアプロセシング、距離行列(distance matrix)とは異なり、入力レイヤーと出力レイヤーは異なるものである必要がある、複数個同じ距離の点があった場合に対応していないなどの甘い点があります。
このような場合も精度の高い処理をしたい場合はご自身でプラグインを作成されることをお勧めします。

ということで完成したプラグインがこちらです。ZIPでダウンロードして追加するのが一番簡単かと思われます。ただし、私は信頼できる人間かわかりませんし、私が仕込んでいなくても何かある場合もありますから、責任は負いかねることをご承知おきください。バグ報告などはGithubにお願いします。

github.com

ということで簡単なご報告でしたが、これからもぼちぼちプラグインをつくっていけたらと思います。

QGISでプラグインをつくりたい!

この記事は冗長な記述がみられます。この記事自体も冗長です。目次を見て必要な情報に飛ぶかブラウザバックしてください。このタイトルは大言壮語的です。この記事内でプラグインを実際に作ることはありません。

また、筆者の環境はWindows10、QGIS 3.10.14 & 3.16.3です。

 

はじめに

この記事の位置づけや新規性について説明します。

世の中には無数のQGISQGISプラグインに関するサイト・ページがあります。多くの記事はよくできており、筆者のような初心者がその劣化コピーを書いても仕方がありません。よってこの記事は参考になる記事へのリンクを集成する、「QGISプラグイン展望」としたいと思います。とはいえ全部の記事を網羅することは不可能で見落としも多々あると思います。そのような場合はぜひ筆者におしらせください。随時更新したいと思います。

展望記事なので新規性はあまりありません。残念!

QGISとは?

QGISオープンソースで開発されているGIS(Geographic Information System:地理情報システム)です。WindowsMacOSLinuxAndroidに対応しているフリーのGISソフトとしては最高峰のものといえるでしょう。

GISとは……?とか、GISまわりの事情についてはインターネットにたくさん情報があるので割愛します。

qgis.org

QGISプラグインとは?

QGISプラグインは大きくわけて2種類存在します。1つ目はGISソフトとして必要不可欠なデータ管理や空間解析などの機能を担う”コアプラグイン”、2つ目は利用者が追加して利用する”外部プラグイン”です。

コアプラグインは何もしなくてもQGISをインストールすれば勝手に入っていますが、外部プラグインQGISのメニューバーにある[プラグイン]タブから導入することになります。

外部プラグインの導入方法は、2つあります。

1つ目はプラグインのおかれたリポジトリに接続してインストールする方法です。QGISとしてはこの方法を推奨しており、デフォルトの状態でQGISのオフィシャルプラグインリポジトリに接続しています。

オフィシャルプラグインリポジトリにあるプラグインで有名なものはQgis2threejsがあります。このプラグインを利用することでDEM(Digital Elavation Model:数値標高モデル、国内のデータは国土地理院基盤地図情報で公開されている)を3次元化してブラウザ用に出力できます。(実は現在のQGISのコアプラグインでDEMの3次元表現はできるのですが、このプラグインのほうが利便性が高い(といわれています))。

github.com外部のプラグインリポジトリの例としては朝日航洋株式会社が提供している「陰陽図メーカー」プラグインがあります。DEMの高低差情報を陰影で表現する機能はQGISのコアプラグイン内に実装されていますが、陰陽での表現は実装されていません。このプラグインをインストールすることで、QGIS上でできる図形表現の幅が広がることになります。

www.aeroasahi.co.jp

 

2つ目は、プラグインのZIPパッケージを読み込ませてインストールする方法です。これは、QGISが推奨する方法ではありません。インターネットの海から信頼できるものをインストールして利用することが求められています(筆者は利用したことがないため具体的なものは紹介しません)。

外部プラグインのインストール方法の手順は以下の通りです。QGISを立ち上げて、メニューバーから[プラグイン]-[プラグインの管理とインストール]をクリックするとダイアログが開かれます。QGISのオフィシャルプラグインリポジトリからインストールする場合は、[全てのプラグイン]を開き、検索窓などを利用して目的のプラグインを探しクリック、[インストール]ボタンを押してインストールします。ダイアログを閉じて、再度[プラグイン]をクリックすると、[Pythonコンソール]の下にインストールしたプラグインが表示されます。

 

余談ですが、QGISが2.xから3.xにバージョンアップした際、コアプラグインは強化されたものの、Pythonが2.7→3.6、Qtが4→5になり、後方互換性がなくなったため人々が作っていた既存プラグインの多くが使えなくなったらしいです。とはいえ、QGIS3.xは現在開発が続いており、GUIesri社の製品ほどではないにしろ直感的にわかりやすくなってきていますから、よほどのこだわりがない限り3.xをインストールするほうがよさそうです。

QGISプラグインをつくりたい!

さてここからが本題です。もしあなたが既存のプロセシングやツールに不具合を見つけたり、使い勝手の悪さを感じたり、全く新しい機能を導入したいと思ったらどうしますか?

不具合の場合は、GitHubでissueを作成して問題を指摘したり、書き直したりできるかもしれません。しかし、この方法は長い目でみてソフトを改善することには役立ちますが、手元で起こっている問題の楽な解決ではありません。また、使い勝手が悪い(例えば複数の処理を続けてやりたいとき*1)とか、今はない機能を追加したいときはとりあえずプラグインとして機能を作ってしまえばよいのです。バグ迂回するプロセシングや複雑な処理をまとめて行うものを一回書いてしまえば以後困ることはあまりありません。面倒なことはプラグインにやらせましょう。

面倒なことをやらせるといえばPythonですが、実はQGISプラグインPythonで記述できます(しかし、QGIS自体はC++で作られており、C++でもプラグインは書けます)。

PythonでPlugin開発をするメリットは

  • 日本語・英語ともにQGISプラグイン開発の資料が豊富
  • QGIS公式的にもおすすめっぽい
  • (個人的には)Pythonの話は身近で聞くので困ったときに質問しやすい
  • ArcGISで自動化したいときはArcPyというPythonのパッケージを使うらしい(のでPythonに慣れているとGISまわりでは潰しが効く可能性が高い)
  • 習得しやすい(ということになっている)らしい

などが挙げられます。

ところが私はPythonのことをまるで知りません。インターネットと英語とバトルしながら、QGISPythonプラグインを書くための勉強スタートです。

QGISPythonを使うためのドキュメントたち

ここでQGISPythonで動かす方法について参考資料を提示します。

まずQGISの一般的な操作については多くの書籍やウェブページが用意されていますが、日本語文献で一番のおすすめは、「GIS実習オープン教材」です。

gis-oer.github.io

この文献の後半に「GIS初中級者のためのPython入門」という章が設けられています。基本的なPythonの使い方がわかる……とはいえません。入門といいつつ、非常に簡素な説明ですから、必要な知識はインターネットなり書物なりを参照して理解をする必要があります。また、一部リンクがC++の公式ガイドに飛んでいたりと一筋縄にはいかないところがあるため注意して読みましょう。

英語文献では公式のドキュメントが最重要です(一部は日本語に訳されていますが、十分ではないため最初から英語を読むことを推奨します)。基本的にあらゆることが書かれており、Pythonについても例外ではありません。

docs.qgis.org

QGIS上のPythonでの開発については、上記ドキュメント内にある"PyQGIS Developer Cookbook" が最も基本的かつ強力なツールです。網羅的に追うことができる量ではないので適宜参照しています。

また、公式のドキュメントとしてはもう一つ、"QGIS Python API"に関するページがあります。

qgis.org

 このページでは、QGISで用意されているクラスに関して必要な情報が集積しています。実際にコードを書いていくときに逐一参照します。

現在のところ、PythonQGISで扱うにあたって特に必要な文書はこの3点であると思われます。また有益な情報があれば更新します。

とりあえずプラグインをつくってみよう!

それではいきなりですがプラグインを作ってみましょう。インターネット上にはプラグインを作る話がたくさんあるので、ここではあっさりと説明します。

手順は2段階です。

  1. QGIS上でプラグインを作るためのプラグインを導入する
  2. つくる

 簡単ですね!

QGIS上でのプラグインの導入

簡単にプラグインを作るために、2つのプラグインQGISオフィシャルリポジトリからインストールします(プラグインのホームページを掲載していますが、インストールはQGIS上で行ってください)。

①Plugin Builder 3 

g-sherman.github.io

このプラグインを利用するととても簡単にプラグイン作成に必要なファイルを生成することができます。難しいことが何一つなく、コードを書く必要もありません。このプラグインでは3種類のテンプレートが利用できます(詳細後述)。

②Plugin Reloader

github.com

このプラグインはとても単純です。Pythonで書かれたプラグインをリロードすることができます。プラグインの中身を書き換えQGISで動作を確認するときにいちいちQGISを再起動してプラグインを読み込む手間を省いてくれます。

この2つのプラグインがなければプラグインをつくれないというものではありませんが、楽なので楽をしましょう。

プラグインを実際につくってみる(つくらない)

ここまでの準備でとりあえずプラグインをつくることができるようになりました。それでは作っていく……のではなく、プラグイン作成に役立つページを紹介します。

Plugin Builderを利用してプラグインを作成するとき、プラグインの形態として3つの中から選ぶことになります。自動で生成されるプラグインのファイル構成もそれぞれ異なるため作業は3つに分かれることとなります。まずはじめに3つのプラグインの形態の個別のお役立ちページを紹介したのち、共通部分と注意点を記述します。

①"Tool button with dialog"を選ぶ場合

"Tool button with dialog"は一番数の多いプラグインの形態でしょう。プラグインプラグインのメニュー内に置かれ、起動するとダイアログボックスが出現し、その中で何らかの操作と処理が行われることになります。

この形態のプラグインについては「GIS実習オープン教材」内で丁寧に説明されています。

gis-oer.github.io

また、こちらのブログも参考になります。

 

chiakikun.hatenadiary.com

他にも↓のようなページもあります。

www.qgistutorials.com

管見の限り、"Tool button with dialog"が一番メジャーで、扱いやすいと思われます。また、QGISプラグインを作り方を紹介している記事のほとんどはこの方法について話しています。

②"Tool button with dock widget"を選ぶ場合

dockとは?については"Qt dock"などとググるとわかりやすいと思います。QGISでいえば、ソフトを立ち上げた際に左右にある「ブラウザ」や「レイヤ」といった、メインウィンドウに組み込まれているけれど別の領域として扱われている部分です(雑)。この部分に出てくるプラグインをつくれるということですが、おそらくこの機能はほとんど使われておらず、インターネット上でも紹介記事は見つかりませんでした。理由としては常駐させておきたいプラグインの機能はだいたいコアに実装済みだからというのがありそうですが、真実はわかりません。知っている方がいれば教えてください。

お役立ちページを書いたよという方や知ってるという方がいればぜひコメントをお願いします。

ちょっと触った感じでは1番目に紹介した"Tool button with dialog"に近いようで、注意すべき点(後述)も共通です。

③"Processing provider"を選ぶ場合

 最後に、プラグインをプロセシングとして作る方法です。これを選ぶと、「プロセシングツールボックス」内、QGISのコアプラグインの下にツールが追加されます。ツールをダブルクリックするとバッファなどのツールと同じようにダイアログが表示され、利用することができます。

この方法の解説で最もわかりやすいのは下記ページです。基本的なことは一通り押さえられています。

www.qgistutorials.com

共通部分と注意点

①、②、③と作り方を紹介しましたが、共通する基本事項と、注意点について記述していきます。

まず、共通する基本事項として、QGISプラグインのデフォルトの保存場所です。Windowsでは、

C:\Users\{UserName}\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins

にあります。先ほどインストールしたPlugin Builderもここにあると思いますので確認してみてください。

次に注意点です。①”Tool button with dialog"と②"Tool button with dock widget"を選んでプラグインを作成する場合、Plugin Builderで作成したプラグインをそのまま動かすことはできません。

pluginフォルダ内にある"resources.qrc"というファイルをPythonに変換する必要があります。この手順については先に挙げた「GIS実習オープン教材」に掲載されているとおりに行ってください。

また、QGISをインストールした際に付属しているQt Designerを利用して、dialogやdock widgetGUIを編集することができます。Qt Designerの使い方については

gis-ops.com

このページが詳細であると思われます。

 

ここまでくればあとはプラグインの中身を書くだけです。参考に挙げたサイトを参照しながら、それぞれ必要なファイルを編集していきます。(このあたりは次回の実際にプラグインを作る話のときに書こうと思います)。

QGISPythonについては前節で挙げた2つの公式サイトを、現在あるプロセシングの改良などQGISの本体を見ながらやりたい人は

github.com

がおすすめです。

 

出来たら、先にインストールしたPlugin Reloaderを使ってプラグインをロードしなおし、実行してください。おそらく動くはずです。だめならどこかにエラーが出ます。

IDEデバッグしたい!

さて、今のままではQGISプラグインを書ける作れるといってもテキストエディタでコードを書いて目で見てエイヤ!とQGIS上でプラグインをリロードすることしかできません。開発環境でデバッグできるほうが便利ですね。ということでみなさん大好き環境構築です。なお、私の現在の環境はWindows 10 20H2・QGIS 3.10.14 スタンドアローンインストール(OSGeo4Wネットワークインストーラを利用していない)です。試した方法については試したよと書いておきますので参考にしてください。

なお、超・ド・初心者なので致命的な間違いがあるかもしれません。発見した際にはぜひご指摘ください。

以下では導入したい環境にあわせておすすめ記事の紹介します。

  1. Visual Studio on Windows10
  2. VS Code on Windows10 & MacOS 
  3. そのほかのIDE on いろいろなOS

Visual Studio on Windows10

chiakikun.hatenadiary.com

私はこの方法で環境を作りました。

QGIS3に付属のPython等を使えるようにするためのパス設定 - chiakikunのブログ

を参照して環境変数を設定したらあとは手順の通りにやるだけです。簡単。

同様のブログがこちらです。

QGISプラグインをVisual Studio 2017でデバッグする - embeddedなブログ

どちらかをみれば十分かと。

VS Code on Windows10 & MacOS

実はこの方法を一番最初に試したのですが沼ってしまい丸一日消えました。

Macに関しては2本記事があったので紹介します。

qiita.com

Debugging QGIS 3.x python plugins on OSX using VS Code · GitHub

Windowsに関してはあまりなくちょっとよくわからないといったところなのですが、

RemoteDebuggingQgisVsCode.md · GitHub

という記事がありましたので紹介します。

VSCodeでRemote Attachをする方法は、大きく2つに分かれています。1つ目は"DebugVS"というプラグインQGISに入れる方法、2つ目はデバッグしたいプラグインに直接コードを追加する方法です。今回紹介した記事のうち前者2つはDebugVSを導入する方法、最後のものが直接コードを追加する方法です。

github.com

1つ目のDebugVSというプラグインプラグイン自体に不具合があることがIssueで示唆されており、実際手元の環境でもプラグイン内でエラーが出ました。また、必要なモジュールが最新版では動かないなどの謎があります。

2つ目に関してはプラグインのソースにいちいちコードを足すのは面倒なので少し試しただけですがどうもうまくいきませんでした。

どちらの方法でも私はうまくいかなかったため、VS Codeでやることはあきらめた次第です(そもそもVS CodeってIDEではないですしお🍣)。

そのほかのIDE on いろいろなOS

 公式ドキュメントにはいろんなことが書いてありますが、どうも内容が古い部分もありそうです。

docs.qgis.org

こちらではPyscripter on WindowsEclipse on Windows、PyCharm on Ubuntu、そしてIDEではありませんがPDEの利用方法が掲載されています。しかしここではOSGeo4Wもインストールしている前提ですから気を付けてください。

 

ここまでの内容で、QGIS上で動作するプラグインを開発できる環境は準備できると思われます。ここからは蛇足です。

資料編

この節では本文中で紹介しきれなかったプラグイン作成方法の記事を紹介します。

プラグイン作成の手順に関する記事

QGIS3でpythonプラグインを作ってみた その1 ベース作成 - Qiita

QGIS3.x系向けプラグイン作成手順や各種処理の実装方法について - Qiita

QGISプラグインの開発(1) - 合同会社 緑IT事務所

意外に簡単!? QGISプラグイン開発

QGIS 3 Plugin Tutorial - Plugin development reference guide » GIS • OPS

[QGIS] プラグインを作って動かすまでの手順 │ Web備忘録

以上の記事はQGIS3系でのプラグイン開発についての概要がわかりやすく説明しています。これまでの記事でよくわからないところがあった場合、補完的に利用できる可能性が高いです。

プラグイン作成に関する書籍

Pythonではじめるマップアプリケーションプラグイン (PDF版) - dayjournal - BOOTH

読んでいないのに紹介するのは気が引けるのですが、日本語書籍でQGISプラグインを扱ったものはこれぐらいしかないと思われます。QGISの公式ページの書籍紹介欄にも載っていたので素性は確かなのではないでしょうか(無責任)。

 

次回予告

私はQGISの不具合の一つに悩まされています。

それは、プロセシングツールとして用意されている距離行列(distance matrix)で線形距離行列(N*k×3)を選択し、「計算する近傍点の個数」を1にしたとき、つまり最近傍の点を調べようとしたときに、実際には最近傍の点ではない点が選択されることがあることです。

例えば以下の写真は東京都の都市公園と鉄道駅の距離を調べた際のdistance matrixの属性テーブルです。最近傍を調べた右では上千葉砂原公園から最も近い駅をお花茶屋駅、1131.1mとしています。一方、上千葉砂原公園から日本中にある鉄道駅までの距離を計算させて短い順にソートしたものが左の属性テーブルです。ここでは亀有駅が1109.6mで最短となっており、お花茶屋駅は2番目です。また、左右を見比べてわかる通り、最近傍で計算した距離自体は間違っていないようです。

f:id:Ginnannman:20210211145344p:plain

図 右が公園から最短の駅を計算した結果 左は「上千葉砂原公園」からすべての鉄道駅までの距離を計算しソートしたもの。

これは距離行列のプロセシングにバグがある可能性を示唆する結果です。

とりあえずの解決策として、いったんある点からすべての点までの距離を測って保存し、それぞれソートすることが考えられるでしょう。また、中長期的な解決のため、GitHubでissueを作成することで開発に貢献することもできます(実はすでにissueが立っているようですが1年半以上放置されているようにみえます)。

しかし、今現在の困りに対して楽な解決策がありません。例えば今回の東京都の都市公園の数は6390個で、それぞれの最近傍駅があっているのかを手作業で確認するのは困難ですし、いちいちCSVなどで書きだしたりDBとしていじったりは面倒です。

ということで、もし存在すれば、次回はこの距離行列の問題を解決するためのプラグインの話をしようと思います。

おわりに

QGISプラグインのカスタマイズ次第、作り方次第で多様な表現・処理ができるところがとてもよいと思います。バグがあったり修正が遅かったりするのは仕方ないことですが、QGISの開発者になったり、Githubでissueを出したりして貢献することもできます。

最近はQGISのガイド本が多数販売されるようになってきており、日本語ドキュメントの少なさやまとまりのなさは解消されつつあるように思います。

将来的にはpix2pixをQGISプラグインとして実装できれば楽しいなと考えています。python2系での実装という先行事例もあるので、3系できちんと動くものを作りたいといったところです。

 

それではよきGISライフを。

www.jstage.jst.go.jp

 

*1:プロセシングを続けて処理したいときはグラフィカルモデラ―を利用することがおすすめです。

22.5. グラフィカルモデラー — QGIS Documentation ドキュメント