FAQ
除算を含むフィールド演算で、計算されない行がある
ナレッジ番号:3228 | 登録日:2023/05/29 | 更新日:2024/11/21
現象
フィールド演算で VB Script 形式を選択して 除算 (割り算) を行う場合に、0 で除算する行は計算されません。演算対象となるすべての行が計算されない場合、警告が表示されます。また、分母のフィールドと分子のフィールドが ともに 0 である行が含まれる場合、その行にて「オーバーフロー」エラーになり、フィールド演算が止まってしまいます。
原因
どの現象も、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> に更新されます。
メタデータ
機能
種類
製品
バージョン