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

Site: OpenCourseWare for GIS
Course: 水文地質学のためのGISトレーニング
Book: チュートリアル: 地下水調査のためのフィールドデータ収集アプリの作成
Printed by: Guest user
Date: Thursday, 10 July 2025, 8:20 PM

Description

1. 概要

前回のトピックでは、インターネット上にあるデータを利用する方法を学びました。

しかし、ネット上のデータでは入手できなかったり、粗かったりするため、自分でデータを収集しなければならないことがよくあります。最近では、そのためにアプリを使うこともあります。

このチュートリアルを終えると、以下のことができるようになります。

  • QGIS を使用してデータ収集プロジェクトのセットアップをする
  • オンラインとオフラインのレイヤーを持つマップテーマを設定する
  • 入力フォームのデザイン
  • QGISプロジェクトをMarginクラウドサービスと同期させる
  • 携帯電話のInputアプリをMerginクラウドサービスと同期させる。
  • データ収集用のInputアプリの使用
  • 現場で収集したデータをMerginクラウドサービスとQGISプロジェクトに同期させます。

Inputは完全なGIS/マッピングアプリケーションを目的としていません。シンプルさ、使いやすさ、シームレスなデータ同期を念頭に置いて設計されています。

Inputを使用する典型的なワークフローは、以下のステップで構成されています。

  • プロジェクトの準備:ユーザーは背景やデータ収集用のレイヤーを読み込み、入力フォームの設定をし、レイヤーにスタイルを適用し、マップテーマを設定し、収集目的で使用するレイヤーを定義します。
  • データ/プロジェクトの転送:プロジェクトがセットアップされたら、ユーザーはデータをデバイスに転送する必要があります。これはMerginで実現できます。
  • Inputでの作業:マップのナビゲーション、フォームへの入力を含むデータの編集、既存データの表示、変更内容のMerginへのアップロード。

このチュートリアルでは、地下水調査のための現場でのデータ収集のためのワークフローを紹介します。


2. プロジェクトの準備

QGISでプロジェクトの準備を始めていきます。

プロジェクトの中では以下の2つを区別する必要があります。

  • 現場でのコンテキストを提供する背景レイヤ

    オフラインとオンライン、ラスタとベクタのレイヤを両方とも使うことができます。

  • データ収集用のレイヤ

今回のプロジェクトでは次の背景レイヤを用意します。

  • オンラインのGoogle satellite
  • オフラインのGoogle satellite
  • オンラインのOpenStreetMap
  • オフラインのOpenStreetMap
  • 調査地域の境界を持つベクタレイヤ

地下水調査のために調査用のレイヤを1つ作ります。

2.1. 調査地域の境界を追加する

まず、調査地域の境界を定義し、そのポリゴンをプロジェクトに追加します。これにより、現場でアプリを使ってナビゲートする際に、境界がどこにあるかを知ることができます。

1. QGISで新規プロジェクトを立ち上げます。

2. 右下の EPSGコードをクリックして、プロジェクトの投影法をUTM Zone 36S/WGS-84に変更します。

3. ダイアログでEPSGコード32736でフィルタし、投影法を選択しOKをクリックします。

4. QuickMapServices プラグインをインストールします。メインメニューの プラグイン | プラグインの管理とインストール... から行います。

5. QuickMapServices プラグインをインストールします。

6. メインメニューで Web | QuickMapServices | Settings と進みます。


7. QuickMapServices Settings ダイアログで More services タブをクリックします。


8. Get contributed packをクリックします。

9. ポップアップでOKをクリックします。

10. Save をクリックしてQuickMapServices Settings ダイアログを閉じます。

11.メインメニューで Web | QuickMapServices | OSM | OSM Standardと進みます。

次に、調査地域の場所を見つける必要があります。ここでは、前のチュートリアルで紹介したマラウイの「Shire」調査地域の中の「Bangula」付近を使用します。しかし、他の地域でも同じ方法を使うことができます。

12. GeoCoding プラグインをインストールします。


13.   ボタンをクリックしGeoCodingプラグインを開きます。
14. GeocodingダイアログでFind addressBangula と入力します。

15. OKをクリックします。

16. Bangula, Nsanje, Southern Region, Malawiを選択します。

17. OKをクリックします。

18. 関心のあるエリアにズームインします。この例では、Bangulaという都市とピボット灌漑のある地域にズームインしています。
Study area OSM

ここでは、地図キャンバスのエリアの範囲に基づいて、境界ポリゴンを作成していきます。
なお、別のエリアが必要な場合は、境界ポリゴンをデジタイズするだけで、以下の手順を置き換えることができます。

19. プロセッシングツールボックスを開きます。メインメニューのプロセッシング | ツールボックスから行います。

20. プロセッシングツールボックスベクタジオメトリ | 範囲の矩形レイヤを選択します。

21. 範囲の矩形レイヤダイアログでボタンをクリックして、キャンバス領域を使用を選択します。

現在の地図キャンバスの境界の座標は、プロジェクトの投影法を使って入力されています。そのため、このチュートリアルの最初に設定しておくことが重要でした。

22. 出力された領域を、プロジェクトの全てのデータを保存するための専用のフォルダに保存します。そのフォルダの中で、Bangula_study_area.gpkgという名前のGeoPackageにBangula_study_areaという名前のレイヤで保存します。


23. 実行をクリックし、処理のあとダイアログを閉じます。

これで、四角いポリゴンがランダムな色で塗りつぶされました。境界線のスタイルを決めましょう

24. レイヤパネルからBangula_study_areaレイヤを選択し をクリックしてレイヤスタイルパネルを開きます。

25. レイヤスタイルパネルでシンプル塗りつぶしをクリックします。シンボルレイヤタイプアウトライン:直線(Simple Line)に変更します。色を赤にしストローク幅を0.66mmにしましょう。


これで境界ポリゴンの準備ができました。

26. レイヤパネルから GeoCoding Plugin Results レイヤを削除します。

Bangula_Groundwater_Survey to the Bangula_study_area.gpkg GeoPackageBangula_Groundwater_Surveyという名前でプロジェクトを保存します。

27. メインメニューでプロジェクト | 保存 | GeoPackage...を選択します。


28. Bangula_study_area.gpkg GeoPackageに接続し、プロジェクトBangula_Groundwater_Survey と入力します。


29. OKをクリックします。

Study area boundary

これは測量レイヤではないので、このベクタレイヤを読み取り専用にする必要があります。Inputアプリは、読み取り専用のレイヤーを非測量レイヤーとして解釈します。

30. メインメニューで プロジェクト | プロパティ...を選択します。

31. データソースタブを選択します。

32. 境界レイヤの読取専用のチェックを入れます。

33. OKをクリックします。

次のセクションでは、Google Satelliteレイヤを追加し、OSMスタンダードとGoogle Satelliteをオフラインでも利用できるようにします。

2.2. オンラインレイヤーを追加し、オフラインで利用可能にする

現地でインターネットに接続できる環境であれば、WM(T)SやオンラインのXYZタイルを背景地図として使うことができます。前のセクションでは、すでにOSM Standardレイヤーを追加しました。このセクションでは、測量プロジェクトにGoogle Satelliteを追加します。また、現場でインターネットに接続できない場合に備えて、オンラインレイヤーをオフラインで利用できるようにしておきます。

まずGoogle Satelliteをプロジェクトに追加しましょう。

1. メインメニューで Web | QuickMapServices | Google | Google Satelliteと進みます。

これで、ピボットがはっきりと見えるようになりました。

Google Satellite added

次のステップは、調査対象地域のOSM StandardレイヤーとGoogle Satelliteレイヤーをオフラインで利用できるようにすることです。そのためには、地図キャンバスを指定したズームレベルでMBTilesに保存する必要があります。まず、適切なズームレベルを探します。

2. ビュー | パネル | タイルスケールを選択します。

タイルスケールパネルが追加されました。

3. レイヤーパネルのGoogle Satelliteをクリックし、タイルスケールパネルのスライダーを任意のズームレベルに移動させます。

なお、レベルが高いほど解像度が高くなり、ファイルサイズも大きくなります。ここでは、ズームレベル17を使用します。

4. タイルスケールパネルを閉じます。

5. レイヤパネルのClick right on Bangula_study_area レイヤで右クリックし、レイヤの領域にズームを選択します。

6. レイヤパネルでGoogle Satellite以外の全てのレイヤのチェックを外します。

7. プロセッシングツールボックスにいきます。

8. ラスタツール | XYZタイルの生成(MBTiles形式)を選択します。

9. XYZタイルの生成(MBTiles形式)ダイアログでExtentでレイヤから計算...を選択します。

10. Bangula_study_area を選択してOKをクリックします。

11. ズームの最小値と最大値を17に設定します。

ここで範囲を指定すると、異なるズームレベル用のMBTileが作成されます。これにより、ファイルは大きくなりますが、ズームイン、ズームアウトを繰り返したときのナビゲーションがスムーズになります。現場ではたいてい、詳細なレベルだけが必要です。そこで、ここではズームレベル17を選択しました。

12. レイヤーをプロジェクトファイルのある専用フォルダにSatellite.mbtilesとして保存します。その他の設定はデフォルトのままにしておきます。

なお、mbtilesはGeoPackageに直接保存することはできません。後でGeoPackageにドラッグすることになります。

13. 実行をクリックします。処理のあと閉じます。

14. ブラウザパネルでSatellite.mbtilesラスタをBangula_groundwater_survey GeoPackageにドラッグします。

15. Bangula_groundwater_survey GeoPackageからSatelliteレイヤを地図キャンバスにドラッグします。

16. OSM Standardでも同じ手順を行います。

17. プロジェクトを保存します。

これでオンラインとオフラインのレイヤが準備できました。

次のセクションでは測量用のレイヤを追加していきます。


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レイヤの準備が整いました。

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


2.4. マップテーマを追加する

背景マップの変更を容易にするために、QGIS プロジェクトでマップテーマを設定することができます。

マップテーマでは、テーマに格納されているレイヤーのみを表示することができます。

今回のテーマはすべて、一番上に測量レイヤー(Survey)、次にBangula_study_areaレイヤーが必要です。

それらを表示するための次のようなマップテーマを作ってみましょう。

  • Google Satellite online
  • Google Satellite offline
  • OSM online
  • OSM offline
まずは1つ目から始めましょう。
1. レイヤパネルでは、Surveyが一番上に来るようにレイヤーを整理し、次にBangula_study_areaGoogle Satellite(オンライン版)の順に並べます。
2. チェックボックスにチェックを入れてこれらのレイヤを表示し、その他のものはチェックを外して非表示になっているか確認します。


3. 地図テーマの管理ボタン Manage map themes button をクリックし、テーマの追加を選択します。

4. Satellite (online) というテーマで保存します。OKをクリックします。


5. OSM (online)でも同様にやってみましょう。レイヤが以下のようにチェックされているか確認してください。

6. オフラインのレイヤでも同様にします。最終的には以下のようなマップテーマができているはずです。

これらのテーマは後ほどInputアプリで選択できるようになります。

7. プロジェクトを.qgzファイルで保存します。InputはGeoPackageで保存されているプロジェクトには対応していません。メインメニューのプロジェクト|名前をつけて保存...で、プロジェクトデータが保存されているフォルダにBangula_groundwater_survey.qgzという名前で保存してください。

3. Merginでプロジェクトを同期する

Inputには、Merginを使ってプロジェクトとデータをシームレスに同期する機能が組み込まれています。

このセクションでは、前のセクションのプロジェクトをMerginクラウドサービスと同期させます。

1. ファイルエクスプローラーで、プロジェクトフォルダに移動し、以下を除くすべてのファイルを削除します。

mbtilesやその他の中間レイヤーを作成したことを思い出してください。すべてはGeoPackageの中にあるはずなので、これらのファイルを安全に削除することができます。GeoPackageは1つのファイルですが、ここでは3つのファイルがあることに注意してください。他の2つのファイルは、QGISプロジェクトを開いているときだけ存在します。QGISプロジェクトを閉じれば、これらのファイルはなくなります。Merginはこれらの一時ファイルを同期しません。

2. インターネットのブラウザで Mergin (https://public.cloudmergin.com/)にサインアップします。

3. QGISでMerginプラグインをインストールします。

4. QGISを再起動しプロジェクトを読み込みます。

5. ブラウザパネルにMerginフォルダを見つけられます。

6.  Mergin を右クリックし Configureを選択します。

7. 新しいウィンドウが表示されます。

  • Username: Mergin のユーザー名を入力します
  • Password: Mergin のパスワードを入力します
  • Test Connection をクリックしてOKとでれば良いです
接続がOKと表示されたら、認証情報を保存するボックスにチェックを入れます。

8. OKをクリックしブラウザパネルに戻ります。

kろえでMerginの下に次のようなフォルダが見えるはずです。:

  • My projects. フォルダを開くと、自分のMerginのプロジェクトを見ることができます。
  • Shared with me. ここでは、他の人が共有しているプロジェクトを見つけることができます。
  • Explore. ここでは、Merginの公開プロジェクトをご覧いただけます。

では、プロジェクトを追加しましょう。

9. Mergin を右クリックしCreate new projectを選択します。

10. Create Mergin Project ダイアログで Project name (e.g. Groundwater Bangula)を指定し、プロジェクトを他の人も使えるようにしたい場合は、Publicのチェックボックスをオンにします。Initialize from local driveをクリックして、プロジェクトのGeoPackageを保存したフォルダを選択します。

11. OKをクリックします。

これで、プロジェクトがMerginと同期されます。

同期が正常に完了すると、このポップアップが表示されます。

12. Closeをクリックします。

My projectsの下でプロジェクトを見つけられるでしょう。

は、ローカルプロジェクトでもあることを意味しています。

は、プロジェクトはクラウドでは利用できるが、ローカルでは利用できないことを意味します。

プロジェクトがWebブラウザでも表示されるようになりました。

Mergin web

このプロジェクトをクリックすると、GeoPackageだけが含まれていることがわかります。なお、次のステップでスマートフォンと同期するためには、30.66MBの容量が必要です。

これで、スマートフォンのInputアプリとプロジェクトを同期させる準備が整いました。


4. Inputを使ったフィールド調査

1. Google Play StoreまたはApple App Storeから「Input」アプリをスマホやタブレットにインストールします。

最初にアプリケーションを開くと、ホーム画面が表示されます。この画面には、ローカル(/sdcard/INPUTフォルダ以下)に保存されているすべてのプロジェクトが表示されます。

Input Home

2. Merginクラウド上の自分のプロジェクトにアクセスするには、プロジェクトを選択します。Merginへのサインインには、ログイン情報が必要です。

Login Input

ログイン後、プロジェクトの右側にあるダウンロードボタンを押すと、プロジェクトをダウンロードしてローカルで作業することができます。

3. をタップし前回のセクションで作ったSurveyプロジェクトをダウンロードします。

Choose project


同期の進捗状況が表示されます。

When the synchronisation is finished you'll see:

プロジェクトは、ローカルにダウンロードした後、Inputで読み込むことができるようになります。

4. ホームを選択すると、ダウンロードしたプロジェクトが表示されます。

Project on home screen

5. プロジェクトをタップして、Inputで開きます。

これで、地図のテーマの一つが表示されます。

Loaded project

QGISで作成したマップテーマを使って、表示する背景レイヤーを変更することができます。
6. さらに ボタン Input more buttonをタップします。
7. 地図テーマを選択します。
Input_more_menu

8. ズームインしてSatellite (offline)を選択します。