2. プロジェクトの準備

2.4. 調査用のレイヤを追加する

ベクトルレイヤは、Inputアプリの調査用レイヤとして追加することができます。

ここでは、リモートセンシングによる作物被覆分類のためのグラウンドトゥルースデータを収集するための調査レイヤーを作成します。

以下の手順で行っていきます。

  • 必要な属性を持つポイントのベクタレイヤーを作成します。
  • ポイントのスタイリング
  • ウィジェットを使って属性フォームを作る
  • 入力プレビューパネルの設定
前回のセクションと同じプロジェクトを引き続き使用します。

必要な属性を持つポイントのベクタレイヤーを作成する

1. メインメニューでレイヤ | レイヤの作成 | 新規GeoPackageレイヤと進みます。


2. ブラウズボタン Browse button をクリックし、プロジェクトフォルダに進み、前回のセクションで作成したGeoPackage(例. survey.gpkg)を選択します。

3. テーブル名Groundtruthと入力します。ジオメトリタイプポイントを選択します。座標系はEPSG:32632と設定します。

4. それでは属性を追加していきます。GeoPackageではユニークな地物IDが自動的に生成されるので、IDを属性として追加する必要はありません。下のスクリーンショットのように属性を追加します。フィールドリストに追加ボタンで追加します。


5. 終わったらOKをクリックします。

6. ポップアップが上書きするか新しいレイヤを追加するか尋ねてきます。新しいレイヤを追加を選択すると、それがGeoPackageに追加されます。



調査ポイントのスタイリング

Inputアプリでは、QGIS で定義されているものと同じスタイリングを使用します。ポイントシンボロジーを作成してみましょう。
7. Open Layer Styling Panel buttonをクリックしてレイヤスタイルパネルを開きます。
8. 単一定義(single)を使って、Add symbol layerをクリックしてシンボルレイヤを追加します。
9. 一つ目のシンボルレイヤでは塗りつぶし色を透明にし、ストローク色を黒にします。大きさを4mmに、ストーク幅を1mmに増やします。2 つ目のシンボルレイヤーでは、マーカーシンボルとして十字を選択し、ストローク色を黒にします。大きさを 8 mm に、ストローク幅を 1 mm に増やします。



ウィジェットを使って属性フォームを作る

次のステップではウィジェットを使って属性フォームを設計します。
10. Groundtruth レイヤで右クリックし、プロパティ...を選択します。
11. プロパティウィンドウでは属性フォームタブへ進みます。

ここではフォームをデザインすることができます。デフォルトの自動生成オプションを使用します。フィールドの下には Groundtruth レイヤーのすべての属性が表示されています。

12. fidをクリックします。 ウィンドウの右側では、ウィジェットを設定することができます。fid の値は QGIS によって自動的に割り当てられ、ユーザーが編集する必要はありません。ウィジェットタイプを非表示に設定して、フォーム内で見えないようにします。


13. Observation numberをクリックします。 テキスト編集ウィジェットを選択し、制約の下の非NULLにチェックを入れます。これは必須フィールドであることを意味します。他のフィールドはデフォルトのままにしておきます。
 

14. Observerをクリックします。 別名にObserver nameと入力します。テキスト編集ウィジェットを選択し、制約の下の非NULLにチェックを入れます。その他はデフォルトのままにします。

15. Date and Timeをクリックします。別名は使用しません。ウィジェットタイプは自動的に日付/時刻に設定されます。ウィジェットの表示カスタムにし、dd-MM-yyyy HH:mm:ssと設定します。カレンダーのポップアップの前のチェックを外してください。デフォルトの下にある規定値に$nowと入力し、現在の日付/時刻が自動で入力される様にします。


16. Pictureをクリックします。 ウィジェットタイプをアタッチメントに選択します。相対パスにチェックを入れます。統合ドキュメントビューアの下でイメージを選択します。制約の下にある非NULLにチェックを入れます。
17. Land cover typeをクリックします。 別名Land Cover Classと入力します。ウィジェットタイプバリューマップを選択します。バリューマップを使うとInputアプリでドロップダウンメニューを作成できます。テーブルに次の様に入力します。

説明
1 Crop land
2 Tree cover
3 Shrubland
4 Grassland
5 Wetland
6 Artificial
7 Bare soil
8 Fallow land
9 Seasonal water
10 Permanent water

18. 制約非NULLに設定します。作物マッピングの目的から考えて最も選択される可能性が高いため、デフォルトの規定値を1にします。
19. Crop typeをクリックします。
20. ウィジェットタイプバリューマップにします。次のテーブルを使います。

説明
1 Wheat
2 Maize
3 Rice
4 Barley
5 Soybeens
6 Pulses
7 Cotton
8 Potatoes
9 Alfalfa
10 Sorghum

21. 制約次の式: "Land cover type"  = 1と書きます。これはLand Coverの値が1の時のみ入力可能になることを意味します。式制約を強制をチェックすることでユーザーが制約を上書きできない様にすることができます。
22. Water Sourceフィールドではウィジェットタイプバリューマップにします。下のスクリーンショットの様にダイアログに設定します。



23. Irrigation method では下のスクリーンショットの様に設定します。




24.Coverage では次のスクリーンショットの様にします。



25. Sizeでは次のスクリーンショットの様にします。


26.Notes では次の様にします。


27. OKをクリックします。
28. Groundtruthレイヤの属性テーブルを開いて、Form View buttonボタンを使ってフォームビューへ切り替えてウィジェットを確認します。

入力プレビューパネルの設定

Google マップと同様に、マップ上で地物が識別されるとプレビュー パネルが表示されます。特定のレイヤを有効にするには、QGIS デスクトップの プロジェクトのプロパティでこのオプションを有効にする必要があります。

29. プレビューパネルの設定では、まずGroundtruthレイヤで右クリックしプロパティを選択する必要があります。そのあと表示名タブを選択します。

  • タイトル - これは、フィールド名または式のいずれかである 「表示名」を使用します。

  • コンテンツ - コンテンツエリアに表示するものは3つのオプションがあります。1.フィールドの値、2.画像、3.HTMLです。ここでは "HTML Map Tip" を使用します。QGIS は常にマップチップの内容を HTML と解釈しますが、Input はさらに 2 つのモードを許可するために構文を拡張します。マップチップが指定されていない場合、Input は最初の 3 つのフィールドを使用し、それらの属性値を表示しようとします。

フィールドの値

「description」と「time」フィールドの値を表示するマップチップのサンプルコンテンツです。

# fields
fid
date and time

マップチップの内容が1行目に# fields マーカーが付いている場合、以下の行はプレビューに記載すべきフィールド名として理解されます。最大で3つのフィールドが表示されます。式は使用できません。

イメージ

フィールド「image_1」のファイルパス(プロジェクトディレクトリへの相対パスを含む)で指定された画像を表示させるマップチップのサンプルです。

# image
file:///[%@project_folder%]/[% "Picture" %]

マップチップの1行目に# image マーカーがある場合、次の行が画像のURLとして理解されます。ファイルシステム上の通常のファイルであるか、ネットワークからのリモート画像であっても良いです。画像のURLに埋め込まれた表現は評価されます([% 1+1 %]で囲まれています)。

HTML

HTML ページとしてレンダリングされて表示されるマップのコンテンツのサンプルです。

<p><strong>Notes:</strong>[% "notes" %]</p>

マップチップに特別なマーカーが含まれていない場合、マップチップはHTMLコンテンツであることが前提となります。HTML の限られたサブセットのみがサポートされます。https://doc.qt.io/qt-5/richtext-html-subset.htmlを参照ください。