属性情報フォーム¶
QFieldはQGISに類似したフォームを作成しますが、QGISと同等ではありません。QGISのフィールドウィジェットは、可能な限り最適になるようにサポートされ、モバイル用に最適化されています。
ウィジェットタイプ | サポートの可否 | 備考 |
---|---|---|
テキスト編集 | - HTMLはサポートされていません - 数値入力はタイプに応じて強制されます。 |
|
チェックボックス | ||
バリューマップ | ||
非表示 | ||
アタッチメント | このフィールドはカメラ機能と統合されています。pdfやdocなどの他のファイルを開くこともできます(利用者が適切なビューアを持っている場合) アタッチメント (写真設定) | |
日付/時刻 | ||
レンジ | ||
リレーションの参照 | ||
リレーションウィジェット | ||
値のリレーション | ||
UUIDジェネレーター | ||
QML / HTMLウィジェット | ||
その他 | ファンディング |
編集可否¶
フィールドの編集可能フラグが優先されます。
最後の値を記憶する¶
QFieldは、最後に使用した値をよりきめ細かく制御することでQGIS設定を無視します。
属性フォームの抑制¶
属性フォームの抑制設定は、QFieldフォームに直接適用されます。
ドラッグアンドドロップデザイナーフォーム¶
ドラッグアンドドロップデザイナーフォームでのグループとタブの設定はサポートされます。
リレーションウィジェットを設定する¶
デスクトップの準備
詳細については公式QGISドキュメントのリレーションに関する章を参照ください。
リレーションウィジェットは全ての参照する子地物をリスト形式で表示します。それらを追加、削除したり、開いたりすることが可能です。
リストエントリの視覚的な識別は、子レイヤーの表示式を介して行われます。
キーの処理¶
親の主キーは、参照する子地物の外部キーとして使用されるため、これらの主キーは、オリジナルのデータに同期した後でも使用するために保持されなければいけません。 したがって、主キーにはUUIDなどの安定した値を使用することをお勧めします。
追加しようとしている親地物から既に存在している子地物を追加することは可能です。 親に有効な主キーがないか、制約に違反している場合、これはブロックされる可能性があります。 いくつかの子フィーチャがすでに追加された後で親地物の追加がキャンセルされた場合、子地物も削除されます。
多対多のリレーション¶
多対多の関係では、QGISのベクターレイヤープロパティでのカーディナリティーカラムに格納されているデータの種類がどのくらいあるかの設定に従って、追加、削除、もしくはリストのエントリを開いたりする際に子レイヤー(直接的なカーディナリティ)またはリンクされたテーブル(多対1のカーディナリティ)に直接的に影響します。
通常、2番目のケースは、リンクしているテーブルに追加の関係情報(パーセンテージなど)がある場合に使用されます。
多対多のリレーションにおける多対1のカーディナリティのケースの場合、表示名の式をリンクしているテーブルに設定する必要があります。
アタッチメントウィジェットの設定¶
デスクトップの準備
ウィジェットタイプのアタッチメントはファイルパスを保存するフィールドとして使用されます。
次のようなことに利用できます:
- 写真を表示して撮影したり、ギャラリーから写真を追加する
- サウンドクリップを聴き、録音する
- ビデオの表示と録画
- PDFや書類のような外部ファイルのリンクを表示
ファイルパスは相対パスにする必要があります。写真、PDFやドキュメントはテキストフィールド内に保存されているリンクが示すプロジェクトのサブフォルダに保存されていなければなりません。
備考
オーディオおよびビデオ機能には、QGIS 3.30以降が必要です。
QFieldに添付ファイルが表示されます。アイコンのシンボルをクリックすると、カメラまたはオーディオ録音が開始され、写真、ビデオ、オーディオが新しいメディアで更新されます。
同期の際には、写真、ビデオ、オーディオ、PDF、ドキュメントのあるサブディレクトリもコピーしなければなりません。
アタッチメントウィジェットのハイパーリンクオプションは、カメラ機能を無効にし、ハイパーリンクを有効にしてドキュメント(pdf、docなど)を開きます。
写真のパスの設定¶
デスクトップの準備
QFieldSyncを使うことで添付するパスの設定が可能になります。
- _QFieldSync プラグイン > レイヤプロパティ_へと進みます
添付ファイルのパスを指定するには、式を使用します。デフォルトでは、画像は "DCIM "フォルダに、音声は "audio "フォルダに、動画は "video "に、タイムスタンプを名前として保存されます。
値リレーションウィジェットを設定する¶
デスクトップの準備
ウィジェットの値のリレーションはコンボボックスで関連づけられたテーブルからの値を参照することを可能にします。レイヤ、キーカラム、値カラムを選択できます。標準の動作を変えるいくつかのオプションーNULL値を許容する、値で並べ替える、複数選択を許容するーがあります。このウィジェットは参照する地物のドロップダウンリストか複数選択リストで表示されます。
条件付き表示の設定をする¶
デスクトップの準備
グループは式に基づいて非表示にすることができます。 これは、ある属性が特定の条件下でのみ必要な場合に役立ちます。 例として、木のマッピングを挙げてみましょう。いくつかの木は病気にかかっている可能性があり、あなたは想定される病気のリストを持っています。 入力フォームを多数のフィールドで分かりづらくさせないために、グループを作成し、グループ病気の表示設定をします。 チェックボックス付きのフィールド病気を追加します。 チェックボックスがチェックされている場合にのみ、病気のリストがユーザーに利用可能になります。
現場の様子を見てみましょう
制約の設定をする¶
デスクトップの準備
属性フィールドには制約を追加できます。制約はフォームを保存することができるように True
(or 1
) に評価する必要がある式です。制約はフィールドごとに構成され、制約が満たされない場合にユーザーに表示される説明を追加できます。
一般的な使用例¶
この国で最も標高が高い山よりも大きな標高値を入力することはできません。
"elevation" < 5000
identifier は入力必須の項目です。
"identifier" IS NOT NULL
初期値の定義¶
デスクトップの準備
フィールドには初期値を設定できます。 新しい地物をデジタイズするときに、初期値が属性フォームに入力されます。 これらはユーザーに表示され、フィールドが編集可能な限り変更できます。 それらは、ジオメトリ変数または式変数に基づくことができます。
追加の変数¶
オブジェクトの属性の中で自分の位置に関連する情報を保存する点については、対応するGNSSドキュメントをご覧ください。
QFieldCloudユーザは、属性フォームのデフォルト値を含む式で2つの変数を使用できます:
- @cloud_username
: これは、現在ログインしているQFieldCloudユーザーの名前を返します。
- @cloud_useremail
: これは、現在ログインしているQFieldCloudユーザーのメールアドレスを返します。
一般的な使用例¶
位置情報を変数として挿入します。
@position_horizontal_accuracy
現在の日付と時間を挿入します。
now()
デジタイズした線分の長さを挿入します。
length($geometry)
デバイス上のグローバル変数を構成し挿入します。
@operator_name
新しい地物が挿入される場所に基づいて地域コードを割り当てる場合は、集計式を使用して割り当てることができます。
aggregate( layer:='regions', aggregate:='max', expression:="code", filter:=intersects( $geometry, geometry( @parent ) ) )
@position_coordinate から受け取った座標をプロジェクトの座標系に変換します。
x(transform(@position_coordinate, 'EPSG:4326', @project_crs ))
y(transform(@position_coordinate, 'EPSG:4326', @project_crs ))
::: {#snapping_results} ラインを引いた後のスナッピングした結果を使いたい場合は、 [\@snapping_results]{.title-ref}変数を使います。次のコードでは、ラインの最初の点にスナッピングした属性[id]{.title-ref}の値を抽出しています。 :::
with_variable(
'first_snapped_point',
array_first( @snapping_results ),
attribute(
get_feature_by_id(
@first_snapped_point['layer'],
@first_snapped_point['feature_id']
),
'id'
)
)
値リレーション・リレーション参照ウィジェットでの検索¶
フィールドの横にある虫眼鏡を使って、値リレーションまたはリレーション参照ウィジェットの値を検索することができます。
備考
関係するレイヤの 表示用の式 の定義をします。これは地物の検索に使用されます。これは ベクターレイヤープロパティ > 表示 で設定します。
オートコンプリートの設定¶
デスクトップの準備
コンプリートを使用するチェックボックスをチェックすることで値の関係によってオートコンプリートを使用できます。
QFieldでどのように動作するかを紹介するビデオです。
QMLウィジェットを定義する¶
この例では、サードパーティの地図・ナビゲーションアプリを開くボタンを追加します。これは、例えばturn-by-turnのナビゲーションをデバイスネイティブアプリで開くのに便利です。
import QtQuick 2.0
import QtQuick.Controls 2.0
Button {
width: 200
height: width/5
text: "Open in Maps"
onClicked: {
Qt.openUrlExternally(expression.evaluate("'geo:0,0?q=' || $y || ',' || $x"));
}
}
上記の geo
URIはAndroidで動作するように調整されています。Apple Mapsの場合、URIは'geo:' || $y || ',' || $x
に変更できます。