フィールド演算



フィールド演算は,読んで字のごとく「フィールドの数値を使って演算」を行えます。
基本的には,属性テーブルの数値を使い,例えば,簡単なものでは加減乗除を中心に,様々な関数が用意されています。

・簡単な計算は属性テーブル上で
・ちょっと複雑なものや外部プログラムで計算を行う場合などは,属性テーブルをエクスポートして計算結果を返す

といった具合に分けると良いでしょう。


簡単なフィールド演算

まず,何でも良いので計算が可能なデータを表示します。ここでは「テーブル結合」のところで説明をしたメッシュ内人口を使った計算をしてみましょう。


この属性テーブルに計算結果を入れるフィールドを新たに追加します。
左上の「テーブルオプション」アイコンをクリックし,「フィールドの追加」をクリック。



密度を求めたいと思いますので,以下のように設定します。
タイプは「Doubel」にしておきます。「Float」でも構いません。
この設定については,「データの編集」(ポイントデータの作成の説明箇所にある「(1)属性テーブルでフィールドを追加」)を参照してください。



追加されたら,追加したフィールド名の部分を右クリックして,「フィールド演算」をクリックします。




以下のような画面が表示されます。

青枠部分は当該属性テーブルのフィールドの一覧です。このフィールドを参照して計算式を赤枠の部分に挿入します。
緑の枠は関数が用意されています。整数型の計算結果なのか,あるいは文字列の操作なのかなどにより,関数を選択します。
形式は「VB Script」のままでいいでしょう。

複雑な計算もできるようですが,ここでは複雑な計算はあまりしたことがありません。外部にエクスポートして,C言語などで既存のプログラムで結果をGIS上に返す方法をとっています,やり方は適宜です。





その前に,「ジオメトリ演算」でメッシュの面積を出しておきます。先ほどと同様に,フィールドを追加します。「Area」とでもしておきましょう。
「Area」を右クリックして,「ジオメトリ演算」を選択します。

プロパティは「面積」,単位は「ha」にしておきます。
良ければ「OK」をクリック。


結果はすべて同じ面積ですので「6.723ha」の数値が入ります。

では,各メッシュの人口密度」を「Desnity」フィールドに入れてみます。
「Density」フィールド名の部分を右クリックして,「フィールド演算」をクリック。

下のように,[Sum_Pop] / [Area] と入力します。
入力に際しては,フィールドの一覧部分で計算式に挿入したいフィールドをダブルクリックすると,下の計算式の枠内に自動的に挿入されます。
「OK」をクリックします。





計算が正常に終了すると,「Density」フィールドに値が入ります。
ここでは分母となる面積が同じですので,コロプレス地図の表示は「Sum_Pop」を表示したものと全く変わりませんが。。。





以上のような形で,フィールド間の足し算や引き算などが簡単にできます。
Excelにわざわざ持って行かなくても,GIS上で簡単な計算は関係します。

属性テーブルのエクスポート

複雑な計算をせざるを得ないというケースも当然出てきます。その場合は,属性テーブルを一旦エクスポートし,ExcelやC言語などで計算し,結果を元に返す=テーブル結合を行うといった流れの方が,いままでの資産(プログラム)を有効活用できると思います。VBScriptやPythonで記述できるという方はそちらで実行すればよいですが。。。

(1)テーブルのエクスポート

まず,テーブルをエクスポートします。「テーブルオプション」から,「エクスポート」をクリック。



データのエクスポートダイアログが出ますので,赤枠のボタンをクリックします。

ここで注意ですが,あらかじめフィールドを選択してエクスポートすることも可能です。
ただ,結果をあとから結合するなどする場合は必ず「FID」など


「テキストファイル」でエクスポートしてみます。
「保存」をクリックすると,上の「データのエクスポート」画面に戻りますので,「OK」をクリックします。



次のダイアログが出ますが,ここでは「いいえ」で結構です。





保存した場所に移動して,エクスポートしたファイルを確認します。

エクスポートした「Export_Output.txt」と「schema.ini」があります。


「schema.ini」の中身は以下のような形になっています。

------------------------------------------------------------------
[Export_Output.txt]
ColNameHeader=True
CharacterSet=932
Format=CSVDelimited
Col1=FID_ Integer
Col2=FID_1 Integer
Col3=PageName Char Width 254
Col4=PageNumber Integer
Col5=Count_ Integer
Col6=Sum_Id Integer
Col7=Avg_Id Float
Col8=Min_Id Integer
Col9=Max_Id Integer
Col10=Sum_Pop Float
Col11=Avg_Pop Float
Col12=Min_Pop Float
Col13=Max_Pop Float
Col14=Density Float
Col15=Area Float
NumberDigits=6
------------------------------------------------------------------

これは,元のデータの情報が含まれています。各フィールドが何データ型などです。

「Export_Output.txt」の中身は以下のような形式で,いわゆる「カンマ区切り」となっています。
カンマ区切りですから,Excelで読み込むことも。また,拡張子をCSVに変更すればちょくせつExcel が起動します。




GIS上で作成したデータをベースに計算をしたり,あるいはSPSSなどで統計的処理を加えるなどして,例えば各ポリゴンをクラスター分析にかけて分類結果をテーブル結合で返すなどすると,分析の幅が広がります。

(2)テーブルのインポート

外部で計算した結果を返します。「レイヤの追加」ボタンから,データを追加します。
CSVやTEXT,Excelは直接読み込むことができますので,「追加」します。


これ以降は「FID」や「ID」などの固有の値を元に,テーブル結合を行います。
詳しくは「テーブル結合」をご覧ください。




Comments