フィールド計算の基礎
キーボードで値を入力する以外の方法でも、テーブル内の値を編集することができます。単一レコードまたはすべてのレコードのフィールド値を設定するために、数学的な計算を実行したいことがあります。ArcMap の [フィールド演算] を使用すれば、すべてのレコードまたは選択したレコードで、単純なものから高度なものまで、さまざまな計算を実行することができます。
さらに、属性テーブルのフィールドで、面積、長さ、周長、およびその他のジオメトリ プロパティを計算することもできます。
フィーチャ ジオメトリの計算
フィーチャ レイヤの属性テーブルを操作している場合、[ジオメトリ演算] ダイアログ ボックスを使用して、面積、周長、3D 周長、長さ、3D 長さ、重心の座標、ポイントの座標、最小および最大 z 値、または始点、終点、中間点の座標を簡単に計算することができます。
計算を実行する際には、データ ソースの座標系を使用するか、データ フレームの座標系を使用することができます。さらに、1 つ以上のレコードが選択されている場合は、選択されたレコードのみが計算されます。
次の表に、さまざまな種類のフィーチャに対して計算できるジオメトリ プロパティを示します。
面積 |
周長 |
3D 周長 |
長さ |
3D 長さ |
重心の x、y または z 座標 |
ポイントの x、y または z 座標 |
始点の x、y または z 座標 |
終点の x、y または z 座標 |
中間点の x、y または z 座標 |
z 座標の最小、最大 | |||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ポリゴン フィーチャ |
|
|
|
|
|
||||||||||
ライン フィーチャ |
|
|
|
|
|
|
|||||||||
アノテーション フィーチャ |
|
||||||||||||||
ポイント フィーチャ |
|
フィーチャの Z 座標値および 3D 計測を計算できるのは、フィーチャが Z 対応の場合に限られます。
ArcGIS でのジオメトリ演算は平面的です。つまり、球面や測地空間ではなく、投影空間で実行されます。使用している座標系が投影座標系である場合にのみ、フィーチャの面積、長さ、または周長の計算が可能です。データ ソースが WGS 1984 などの地理座標系を使用し、したがって投影されていない場合は、データ フレームの投影座標系を使用して計算を実行することができます。あるいは、データ ソースを投影することもできます。
[ジオメトリ演算] は、任意の数値またはテキスト フィールドに対応します。最も正確な結果を得るには、小数点以下の桁数が適切に指定された double タイプのフィールドを使用します。整数フィールドを使用する場合、結果は整数に丸められます。テキスト フィールドを使用する場合は、単位の略名を追加する、書式を選択するなどの操作が可能なので、ラベリング可能な状態のフィールドを作成するのは簡単です。
フィールド演算が無効になる理由
フィールドを右クリックしたときに [フィールド演算] または [ジオメトリ演算] コマンドが使用不能な場合は、確認が必要な項目がいくつかあります。
- ArcGIS で管理されているフィールドを右クリックしたため、手動で編集できません。このようなフィールドとして、ObjectID(OID または FID)フィールド、ジオデータベース フィーチャクラスの Shape_Length および Shape_Area フィールド、カバレッジのポイントまたはポリゴン フィーチャクラスの Area、Perimeter、および <Coverage># フィールド、カバレッジのアーク フィーチャクラスの FNODE#、TNODE#、LPOLY#、RPOLY#、Length、および <Coverage># フィールドがあります。
- テーブルのデータ ソースが読み取り専用であり、フォルダまたはジオデータベースに対して設定できないか、データ ソースが ArcMap では通常変更できない形式です。EDG、SDC データ、または ArcIMS サービスを操作している場合もあります。これらは通常、属性テーブルを開くことはできますが、データの変更はできません。
- 編集セッションで作業していません。データを計算するには編集が必要です。たとえば、ジオデータベース トポロジ、ジオメトリック ネットワーク、またはリレーションシップ クラスに属するバージョン管理された ArcSDE データまたはフィーチャクラスを操作する場合は、編集セッションで作業する必要があります。
- フィールドが、テーブルに結合されているテーブルに属しています。関連元テーブルのフィールドの値のみを計算できます。
- フィールドが、ラスタ、BLOB、またはグローバル ID タイプです。これらのタイプは計算できません。フィールドのタイプを確認するには、そのフィールドを右クリックして [プロパティ] をクリックします。
フィールド演算による高度な演算
[フィールド演算] では、指定されたフィールドで演算を実行する前にデータを処理する VBScript または Python コード ブロックを使用して、高度な演算を実行できます。たとえば、人口統計データを使用して、アメリカの各郡の人口に占める割合が最も高い年齢層を調べたいとします。IF...THEN ステートメントや Select Case ブロックなどの論理構造を使用して、データを前処理するスクリプトを作成することができます。これにより、高度な演算をすばやく簡単に実行することができます。
単純なフィールド演算式は、[条件式] テキスト ボックスに直接入力します。マルチライン スクリプト、ループ、分岐などのより複雑な式は、[フィールド演算] ツール ダイアログ ボックスの [コード ブロック] ボックスに入力します。