QGISで面積を計測すると、オンザフライ(OTF)が有効のときと無効のときで、計測結果が異なりました。計測したのは下図の赤い部分です。いうまでもなく、面積は10m×10m=100㎡です。

面積計測図形

オンザフライ(OTF)を有効にして面積を計算します。すると、フィールド演算のジオメトリ($area)と、ジオメトリツールの「ジオメトリカラムの出力/追加」とで、計測結果が異なるのです。

オンザフライ(OTF)有効
オンザフライ(OTF)有効

下図のとおり、フィールド演算のジオメトリ($area)が100.48742となっています。

面積計測結果(オンザフライ有効)
面積計測結果(オンザフライ有効)

ただ、オンザフライ(OTF)を無効にすると、このようなことにはならず、どちらの面積も100㎡で一致します。

オンザフライ(OTF)無効
オンザフライ(OTF)無効
面積計測結果(オンザフライ無効)
面積計測結果(オンザフライ無効)

フィールド演算のジオメトリ($area)

フィールド演算|ジオメトリ

$areaの説明には次のように書かれています。

現在の地物の面積を返します.この関数では現在のプロジェクトの楕円体設定と面積単位設定を考慮して面積を計算します.例えばある楕円体がプロジェクトに設定されていれば楕円体上の面積が計算され,楕円体が設定されなければ平面的に計算されます.

ややわかりにくい記述ですが、つまり、オンザフライ(OTF)を有効にしてプロジェクトに座標系を設定していると、面積はそれを考慮して計算するので、上記のようなケースだとぴったり100㎡にはならないという理解でよいかと思います。

面積計測はジオメトリカラムの出力/追加で

フィールド演算のジオメトリ($area)は座標系の設定の有無に計測結果が左右されることがわかりました。面積を計測し属性に持たせたいときは、ジオメトリツールの「ジオメトリカラムの出力/追加」を使用すべきだといえます。

QGIS2.18のジオメトリツール
QGIS2.18のジオメトリツール

ちなみに、QGIS3.0からは同ツールの表記が「ジオメトリ列のエクスポート」に変わっています。この表現だと、自身の属性にジオメトリ値(面積等)を持たせるという感じがせず、CSVか何かでエクスポートするような感じがしてしまいます。が、中身は同じです。

QGIS3.0のジオメトリツール
QGIS3.0のジオメトリツール

(式)