※投稿したのは少し前のことですが、FOSS4Gのアドベントカレンダー枠が空いていたので1枠として参加します。
最新LTRの3.22.xでは,CityGML読み込み時のXY座標が反転する現象は解消しています。
3.22以上のバージョンを使っている場合はご注意ください。
はじめに
以下の記事で,PLATEAUのCityGMLを読み込めることがわかったのですが,X/Y座標が逆だったり,逆じゃなかったり,2021年8月時点では,CityGMLをQGISで読み込むときにひと手間がかかりそうなのでなので,グラフィカルモデラーでなんちゃってCityGMLローダーを作りました。
動作確認環境
- QGIS 3.20.0
- Windows
Conditional branch(条件分け)
今回なぜわざわざグラフィカルモデラーを使ったかというと,グラフィカルモデラーの中に
Conditional branch(条件分け)というアルゴリズムがあることに気づいたからです。これを使いこなすことができれば,様々な場面で活躍してくれることは容易に想像できます。
幸いなことに,条件分けの使い方を解説してくれている記事に出会えました。今回はこの記事に従ってCityGMLを読み込むときに,X/Y座標を入れ替えるのか否かを切り分けることにしています。
具体的な動作は,ここのmodelファイルを,開いて確認してもらうこととして,以下からはざっくりと全体像と,条件分けを設定している絵を紹介します。
グラフィカルモデラーの全体像
※ Conditional branchは一番上に書いてある「条件分け」の部分です
※ CityGMLを読み込むときに,X/Y座標を入れ替えるか・否かの2択なので,bool値の入力(図では,Flip X/Y Coordinates)を用意して,Conditional branchの中に条件を追加します。
Conditional branchの条件設定
条件分けの中に,条件を追加します。上図の通り,bool値がTrueの場合の条件と,Falseの場合の条件を追加します。「@ XY」というのが,グラフィカルモデラーに登録されている,bool値の入力名です。
Conditional branchの条件と各処理を紐づける
各アルゴリズムの設定フォームを開くと,一番下に「Dependencies」というのがあります。右側の「・・・」を選択すると,以下の画面が表示されて,先ほど作成した条件分けの条件が表示されているので,何もせずに読み込む場合は「NOT @XY」を条件とした方,XY座標を入れ替えてから読み込む場合は「@XY」を条件とした方の条件にチェックを付けます。
※ 上図は,何もせずに読む込む場合
いざ!!
作成したモデルを立ち上げると,上図のように入力レイヤを指定するフォームと,チェックボックスが1つ現れます。あとは見た目通りです。
Flip X/Y Coordinateにチェックをつけるとこうなる
Flip X/Y Coordinateにチェックをつけないとこうなる
なお,作成したグラフィカルモデラーのmodelファイルは,以下の場所で公開しています。
(利用は自己責任で)