FAQ
除算を含むフィールド演算で、計算されない行がある

ナレッジ番号:3228 | 登録日:2023/05/29 | 更新日:2023/06/21

現象

フィールド演算で VB Script 形式を選択して 除算 (割り算) を行う場合に、0 で除算する行は計算されません。演算対象となるすべての行が計算されない場合、警告が表示されます。また、分母のフィールドと分子のフィールドが ともに 0 である行が含まれる場合、その行にて「オーバーフロー」エラーになり、フィールド演算が止まってしまいます。

Image

Image

原因

どの現象も、0 で除算する計算が含まれているために発生するものです。

対処法

① 0 の行を除いて、フィールド演算を実行

[属性検索] ツールを使い、0 の行を除いてから計算します。

手順

1. 属性テーブルを開き、[テーブル オプション] → [属性検索] をクリックします。

2. SELECT 文で 対象のフィールド = 0 を実行し、フィールドに 0 を含む行を選択します。

3.  [選択セットの切り替え] で 0 以外の行に絞り込みます。その上で、フィールド演算を実行してください。

② フィールド演算 の形式を Python に変更

下記の手順で、 VB Script 形式から Python に切り換えて計算します。Python の場合、0 で割る行、0/0 の行どちらも <Null>値が返されます。
Python で整数値の除算を行うと、VBScript の場合と異なり、整数値が返ります。小数値を入力したい場合は、float(!計算!)/float(!分母!) のように、float 関数を使用して条件式を入力してください。

手順

1.  [フィールド演算] 上で、[形式] を「Python」にチェックをいれます。
2. 下記のように計算を実行すると、結果として属性値が <NULL> に更新されます。

Image


メタデータ

種類

製品

バージョン