QGISフィールド計算機の条件ステートメントの構文


12

変更する必要があるシェープファイルがあります。属性「A」、「B」、および「C」を持つ1つの列「CLASS」があります。「A」を「1」に、「B」を「2」に、「C」を「3」に変更する必要があります。case when機能で試してみました。1つのケースでは問題ではありませんが、3行でどのように機能しますか?

FieldCalculator関数でモデルを構築することも可能ですか?


私はそれを理解したと思います!これは正しいですか?

CASE
  WHEN "VSt_K" IS 'E' THEN '5'
  WHEN "VSt_K" IS 'A' THEN '1'
  WHEN "VSt_K" IS 'B' THEN '2'
  WHEN "VSt_K" IS 'C' THEN '3'
END

しかし、モデラーFieldCalculator関数ではこれを使用できません...

回答:


14

文字列型のフィールドを計算している場合、これは正しい構文です。

CASE 
  WHEN "VSt_K" = 'A' THEN '1'
  WHEN "VSt_K" = 'B' THEN '2'
  WHEN "VSt_K" = 'C' THEN '3'
END

代わりに、整数型の場合:

CASE 
  WHEN "VSt_K" = 'A' THEN 1
  WHEN "VSt_K" = 'B' THEN 2
  WHEN "VSt_K" = 'C' THEN 3
END

編集

Advanced Python Field CalculatorProcessing Toolbox の構文は、標準のQGISフィールド計算機の構文とは異なります。したがって、Pythonを使用して条件式を記述する必要があります。

グローバル表現:

def getValue(x):
    if x == 'A':
        value = '1'
    elif x == 'B':
        value = '2'
    elif x == 'C':
        value = '3'
    # ...and so on
    return value

式:

value = getValue( <VSt_K> )

注:Advanced Python Field Calculator Modeler を使用することは可能ですが、このアルゴリズムを使用する場合、フィールドを入力パラメーターとして使用できないため、式でソースフィールドを直接指定する必要があります。または、デフォルトの式を含む入力文字列パラメーターを定義できます。モデルを実行すると、最終的に式入力パラメーターのソースフィールドを変更できるため、モデルを他のデータで完全に再利用できます。


ありがとう、うまくいく!しかし、モデラーでフィールド計算機を(示された構文で)使用する方法を知っていますか?
ピンペル14年

回答に詳細を追加し、その方法を説明しました。お役に立てれば。
アントニオファルチャーノ14年

ありがとうございました!試しましたが、小さな問題が1つあります。これで、「C」が「3」に変更されました。'elif x ==' D ':value =' 4 '文字列を追加すると、「D」のみが「4」に変更されます。
ピンペル14年

新しいフィールドをゼロから計算すると、期待どおりに機能するはずです。
アントニオファルチャーノ14年

理由はわかりませんが、現在モデルを実行している(変更は何もしていません)と表示されます:...戻り値、FORMULA = value = getValue()
ピンペル14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.