QGIS 2.14.6で、ユーザーが明示的に値を設定しない場合に適用されるシェープファイル(またはスペーシャライトレイヤー)の属性のデフォルト値を定義したいと思います。
標準のツール/設定(Pythonなし)を使用してこれを達成する方法はありますか?
QGIS 2.14.6で、ユーザーが明示的に値を設定しない場合に適用されるシェープファイル(またはスペーシャライトレイヤー)の属性のデフォルト値を定義したいと思います。
標準のツール/設定(Pythonなし)を使用してこれを達成する方法はありますか?
回答:
レイヤーパネルでレイヤーを選択し、左クリックします。プロパティを選択します。以下に示すように「属性フォーム」を選択します。表示されているように、「利用可能なウィジェット」リストからフィールドを選択します。[デフォルト]ダイアログでデフォルト値の式を指定します。[更新時にデフォルト値を適用する]をオンにすると、フィーチャのジオメトリや別の属性が変更されるたびに値が調整されます。これにより、「last_modified」タイムスタンプや更新された「area」などが可能になります。
QGIS 2.18から、これは追加のツールなしで可能です。
フィールドのプロパティに移動し、デフォルト値を割り当てたいフィールドのボタンをクリックして、式を入力します。また、ジオメトリを入力として受け取ることもできます。
サイドノート:元の質問はQGIS 2.14を対象としていることは知っていますが、これはこの質問の将来の読者にとってまだ興味があると思います。
AutoFieldsプラグインがあり、属性フィールドを作成(または変更)して、カスタム式で自動的に更新できます。
また、さまざまな形式でテストされており、自動フィールドは仮想フィールドとは見なされません(プラグインのホームページから引用):
AutoFieldsは「X」ベクター形式で動作しますか?
PostgreSQL / PostGIS、SpatiaLite、Shapefiles、WFS-T(トランザクションWeb機能サービス)、メモリレイヤーでAutoFieldsをテスト済みです。他のベクター形式でAutoFieldsを使用しているかどうかをお知らせください。
AutoFieldは仮想フィールドのようなものですか?
いいえ。バーチャルフィールドとは異なり、オートフィールド:
- 計算値をデータに保存します。
- QGISプロジェクトから独立しています。つまり、QGISプロジェクトを切り替えることができ、AutoFieldsは引き続き機能します。
- 編集可能なベクターレイヤーでのみ機能します。
上記のこれらの属性値を使用して、記号のいくつかの側面(記号サイズ、不透明度)を制御したいので、データを定義したプロパティを使用すると、これを実現するための別の優れた(柔軟な)方法があることがさらに調査されました。(ジェネリック)式
if("attribute_name" is null, @default_value, "attribute_name")
where @default_value
はプロジェクト変数として定義され、属性に値が設定されておらずattribute_name
、それ以外の場合はユーザーが定義できるデフォルトを返します。
プロジェクトプロパティで変数を定義します。
データで定義されたプロパティ(この場合はユーザー定義の不透明度の赤い色)を使用して式を設定します。
3.1415926
、ユーザーが属性値を設定していないとしましょう。そして、それを実際の属性に変換できますか?質問に対する質問...さらに、「Pythonなし」は必須ではありませんでしたが、「Pythonの少し」でこれを達成できたとしても大丈夫です;