17.11. ベクトル計算機

ノート

このレッスンでは、ベクトル演算を使用して、数式に基づいてベクトルレイヤーに新しい属性を追加する方法について説明します。

数学的な表現を使用して、新しいラスターレイヤーを作成するには、ラスタ計算機を使用する方法はすでに知っています。同様のアルゴリズムがベクトルレイヤーに対して使用可能であり、入力レイヤーと同じ属性を持つ新しいレイヤー、に加えて入力された式の結果を持つ新しいレイヤーを生成します。このアルゴリズムは、*フィールド電卓 *と呼ばれ、以下の[パラメータ]ダイアログボックスを持っています。

../../../_images/field_calculator.png

ノート

インターフェースが大幅に変更された処理の新しいバージョンでは、より強力で使いやすいです。

ここでは、そのアルゴリズムを使用してのいくつかの例があります。

まずは、国勢調査を表し、各ポリゴン中の白人の人口密度を計算してみましょう。属性テーブル内の二つのフィールド、すなわち `` WHITE``と `` SHAPE_AREA``がそのために使用できます。それらを割り算し、百万で乗算する(平方キロメートルあたりの密度にするため)必要があるだけなので、対応するフィールドに次の式を使用できます

( "WHITE" / "SHAPE_AREA" ) * 1000000

以下に示すようにパラメータダイアログが満たされる必要があります。

../../../_images/density1.png

これはWHITE_DENS`` ``という名前の新しいフィールドを生成します。

今度は、男性人口が女性人口に比して数値的に優位にあるかどうかを示す新しいものを作成するために、 `` MALES``と `` FEMALES``フィールド間の比率を計算してみましょう。

次の式を入力します。

"MALES" / "FEMALES"

この時間は、パラメータウィンドウは* OKの*ボタンを押す前に、次のようになります。

../../../_images/ratio.png

両方のフィールドが整数型であるため、以前のバージョンでは、結果が整数に切り捨てられることになります。この場合、式は次のようになります。私たちは浮動小数点数に結果を望んでいることを示すために `` 1.0 *「男性」/「FEMALES」 ``、。

次の式を使用して、 `` male``または `` female``テキスト文字列の代わりに、それらの比の値で新しいフィールドを持つように、条件付きの関数を使用できます:

CASE WHEN  "MALES" > "FEMALES"  THEN 'male' ELSE 'female' END

パラメータウィンドウは、次のようになります。

../../../_images/predominance.png

Pythonのフィールドの計算は、ここでは詳述しない*高度なPythonのフィールドの電卓*、で提供されています

../../../_images/advanced.png