チュートリアル: 地下水調査のためのフィールドデータ収集アプリの作成

2. プロジェクトの準備

2.3. 測量用のレイヤを追加する

ベクタレイヤはInputアプリで使う測量用のレイヤとして追加できます。

このセクションでは地下水データを収集するための測量レイヤを作成していきます。

次のような手順で説明していきます。

  • 必要な属性を持つポイントベクタレイヤの作成
  • ポイントのスタイリング
  • ウィジェットを使った属性フォームの作成
  • 入力プレビューパネルの設定

前回のセクションから引き続き同じプロジェクトで行なっていきます。

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

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

Create new geopackage layer

2. ブラウズ ボタン Browse button をクリックしてプロジェクトフォルダを開いて、前回のセクションのGeoPackage、今回の場合はbangula_study_area.gpkgを選択します。

3. テーブル名Surveyと入力します。ジオメトリタイプポイントを選択します。投影法がEPSG:32736であることを確認してください。

4. さて属性を追加していきます。下のスクリーンショットのように属性を追加します。フィールドリストに追加ボタンを使って追加してください。

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

6. ポップアップが上書きするか新しいレイヤを追加するか聞いてきます。新しいレイヤを追加を選択しGeoPackageに追加します。

測量ポイントのスタイリング

InputアプリではQGISで定義したのと同じスタイリングが使われます。ポイントシンボロジを作成していきます。
7.   をクリックしてレイヤスタイルパネルを開きます。
8. 単一定義(single)レンダラーを使って、 ボタンをクリックしてシンボルレイヤを追加します。
9. 最初のシンボルレイヤは塗りつぶし色を透明にストローク色を黒にします。大きさを4mmにし、ストローク幅を1mmにします。2つ目のシンボルレイヤはマーカーシンボルで十字を選択しストローク色を黒にします。大きさを8mmにストローク幅を1mmにします。


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

次のステップは、ウィジェットを使って属性フォームをデザインすることです。
10. Survey レイヤを右クリックしプロパティ...を選択します。
11. プロパティウィンドウで属性フォームタブを開きます。

ここではフォームをデザインできます。デフォルトの自動生成オプションを使っていきます。Fieldsの下にSurveyレイヤの全てのフィールドが見えます。

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

fid

13. Observation IDをクリックします。  別名Observation numberと入力します。これはフォーム上でどのように見えるかという設定です。 テキスト編集ウィジェットを選択し、制約の下の非NULL非NULL制約を強制のボックスにチェックを入れます。これは、必須フィールドであることを意味します。他のフィールドはデフォルトのままにしておいてください。

Observation number

14. Dateをクリックします。別名にDate and timeと入力します。ウィジェットタイプは自動で日付/時刻に設定されます。ウィジェットの表示カスタムにしdd-MM-yyyy HH:mm:ssとします。プレビューでどのように日付がフォーマットされるか確認してください。カレンダーポップアップの前のチェックを外します。デフォルトの下の規定値に$nowと入力し現在の日付/時刻が自動でフィールドに入るようにします。

Date and time

15. Observerをクリックします。 別名にObserver nameと入力します。テキスト編集ウィジェットを選択し制約の下の非NULL非NULL制約を強制にチェックを入れます。 デフォルトの調査担当者がいる場合は、その人の名前をシングルコーテーションで囲んでデフォルトの下の規定値に入力できます。

Observer

16. Pictureをクリックします。 ウィジェットタイプをアタッチメントに選択します。相対パスにチェックを入れます。結合ドキュメントビューアの下でイメージを選択します。制約非NULLにチェックを入れます。



17. The fields X coordinate と Y coordinate のフィールドはデフォルトのテキスト編集かつ制約なしのままにしておきます。

18. Zをクリックします。別名Elevationと設定します。テキスト編集ウィジェットで制約なしのままにします。

19. Type別名Feature type とします。ウィジェットタイプバリューマップにします。バリューマップは下の図のように入力してください。ユーザーはこれらのアイテムをドロップダウンリストから取得し、説明列に書かれたテキストから選択できます。対応するが属性テーブルに書き込まれます。制約非NULL非NULL制約を強制をチェックします。

Feature type

20. Depth は別名を Depth to bottom (m).と入力します。 ウィジェットタイプテキスト編集のままにします。wellsかboreholesの時しかこのフィールドは必要ではありません。そのため制約の下に式を追加します。
  "Type"  = 'Wells' OR "Type" = 'Boreholes'
式制約を強制のボックスにチェックを入れます。

Depth

21. GW level は別名を Water Level (m)と入力します。ウィジェットタイプテキスト編集のままにします。wellsかboreholesの時しかこのフィールドは必要ではありません。そのため制約の下に式を追加します。
  "Type"  = 'Wells' OR "Type" = 'Boreholes'
式制約を強制のボックスにチェックを入れます。

Water level

22. Name はデフォルトのテキスト編集ウィジェットのままで制約なしにします。

23. Addressテキスト編集ウィジェットのままにしますが、マルチラインにチェックを入れ複数行に対応させます。


24. Remarksテキスト編集ウィジェットのままにしますが、マルチラインにチェックを入れ複数行に対応させます。

25. OKをクリックしウィンドウを閉じ変更を適用させます。

26. Surveyレイヤの属性テーブルを開き、を使ってフォームビューに切り替えてウィジェットを確認します。 

Attribute table form view

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

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

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

28. Display Name を Observation IDに変更します。こうすることで測量したポイントをタップしたときにObservertion IDが表示されるようになります。

29. 地図のTipsのHTML定義に次の行を追加します

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

こうすることで測量したポイントをタップしたときにInputアプリに写真を表示させるようにできます。

30. OKをクリックしダイアログを閉じます。

これでSurveyレイヤの準備が整いました。

次のセクションではプロジェクトの最後の設定をいくつかしていきます。