QGISのバッチリファクターフィールドツールの「フィールドマッピング」構文とは何ですか?


10

QGISでは、Processing Toolboxにこの素晴らしいツール「リファクターフィールド」があります:

フィールドのリファクタリングツール

単層で使用するのはかなり簡単です。

ただし、バッチモードで使用する場合は、「フィールドマッピング」テキストボックスが表示されます。そこで使用する構文の例を探しています。特定のドキュメントはまだ見つかりません。

バッチリファクタリング


GUIからリファクタリングを実行した後、[処理]-> [履歴]メニュー(Ctrl + Alt + H)でコマンドを確認できます
kadarivan

回答:


7

あまり快適ではありませんが、次はそのテキストボックスに必要な構文です(わかりやすくするために、数行で記述しています)。

{'expression': u'type the expression here',
 'length': <type the length>,
 'type': <code of the type>,
 'name': u'type the field name here',
 'precision': <type the precision>}

例(中括弧を使用することを覚えておいてください):

{'expression': u'"FLAG1"+"FLAG2"',
 'length': 20, 'type': 6,
 'name': u'FLAG1',
 'precision': 5}

上記のような行を、コンマで区切って入力フィールドの数だけ書く必要があります。たとえば、レイヤーに3つのフィールドが含まれている場合:

{'expression': u'"FLAG1"+"FLAG2"', 'length': 20, 'type': 6, 'name': u'FLAG1', 'precision': 5}, {'expression': u'100*"FLAG2"', 'length': 20, 'type': 6, 'name': u'FLAG2', 'precision': 5}, {'expression': u'"100-"FLAG2"', 'length': 20, 'type': 6, 'name': u'FLAG3', 'precision': 5}

そしてそれはうまくいくはずです(私にとってはうまくいきました)。

この辞書指向の構文の使用を避け、必要な値を直接使用する場合があることに注意してください。たとえば、最初の例を参照すると、次のように使用できます。

{u'"FLAG1"+"FLAG2"', 20, 6, u'FLAG1', 5}

この構文を使用しない場合、次のエラーが表示されます。

パラメータ値がありません:フィールドのマッピング(行1)


2
<型のコード>の意味を教えてください。文字列(ドロップダウンオプションの3番目)であると想定して3を使用しようとしましたが、エラーが発生しました: 'int'オブジェクトに属性 ' getItem ' がありません詳細については、ログを参照してください。私が使用したコードは次のとおりです。{u '"FLAG"'、0、3、u'FLAG '、0}いずれかのレイヤーで{' expression ':u' "FLAG" '、' length ':0、' type ':3、' name ':u'FLAG'、 'precision':0}。
JAT86

@ JAT86データタイプを識別する番号です(int、stringなど)。残念ながら、私は彼らのための参照を見つけることができませんでしたが、私が最も使用されるタイプの値を覚えておく必要があります:2 int型のため、6ダブル用と10文字列を。これに加えて0、フィールド長を指定しないでください(少なくとも1!)。問題が解決したかどうかをお知らせください。
mgri 2017

迅速な対応ありがとうございます。おそらく、バッチ処理は思っていたよりもはるかに複雑です。長さを少なくとも1、コードのタイプを10にしてみました:{u '"FLAG"'、1、10、u'FLAG '、0}それでもエラーが表示されます:' int 'オブジェクトに属性がありません' getItem '詳細については、ログを参照してください。私のレイヤーには次の属性があります:名前:フラグ、タイプ:文字列、長さ: 0、精度: 0、式: "フラグ"
JAT86

@ JAT86 GUIからツールを実行すると問題が発生しますか?
mgri 2017

GUIで単一のレイヤーを意味する場合、問題はありませんでした。「選択したフィールドの削除」をクリックすると、FLAG列が正常に削除され、新しいレイヤー「リファクタリング」に保存されました。
JAT86 2017

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.