フィールド演算とは?

「フィールド演算」とは「属性間演算」機能において、テキスト属性データについても編集処理を行う事ができる機能のことを指します。

フィールド演算と属性間演算の違い

フィールド演算と属性間演算とでは何が違うのでしょうか?
どちらもレイヤの属性フィールドの内容に対して演算・編集処理を行う機能という点では同じなのですが、フィールド演算は演算対象フィールドの属性(数値属性、テキスト属性等)に関わらず使用する事ができ、属性間演算は演算対象フィールドの属性が数値属性に限られる代わりにウィザード形式で簡易な手順で演算を行える(注)という点が異なる点と言えます。

(注)属性間演算では数値属性のフィールドを対象とした演算処理しかできませんでしたが、その代わりウィザード形式で「対象レイヤの選択」「演算結果を保存するフィールドの作成」「演算式の作成と実行」という一連の作業を判り易く行う事ができ、複雑な計算式を必要とする「経緯度計算」や「ポリゴンの面積計算」等がオプションに用意されていました。その点、フィールド演算はウィザード形式ではない為、新規フィールドの作成などは事前に作業しておく必要があります。

フィールド演算で出来ること

フィールド演算の使い方について、基本的な使用例をもとにご紹介してみたいと思います。

例-1.「テキスト属性のコードを数値属性のデータに変換する」

Step-1:町丁目界地図(2006年度版)レイヤの属性情報には「字コード」という11桁のテキスト属性のフィールドがあります(図①)。

図①

Step-2:この字コードをキーにして外部のCSVファイルのデータと結合させたいところですが、CSVファイルは属性の指定ができませんので字コードの頭の「0」が保持できません。
そこで、町丁目界地図(2006年度版)の方に新たに数値属性のフィールドを追加して、そこに数値に変換した字コードをセットしてそれを新たな結合キーとする事にします(図②)。

図②

Step-3:まず、町丁目界地図(2006年度版)レイヤに数値属性のフィールド「字コードF」を作成します(図③)。

図③

Step-4:続いて「字コードF」フィールドに対しフィールド演算の機能を起動します(図④)。

図④

Step-5:フィールド演算に用意されている関数から、Fix()という指定したフィールドの値を整数化する関数で演算式を作成して実行します(図⑤)。

図⑤

Step-6:「字コードF」フィールドには、数値化されて頭の「0」が無くなった字コードが設定されました。これで外部のCSVファイルと結合する為のキーフィールドが用意できました(図⑥)。

図⑥

Step-7:図⑦は町丁目界地図(2006年度版)レイヤの属性情報にCSVファイルの「結合データ」を結合させた結果です。(字コードによる結合については「11桁コードとは?」をご参照下さい)

図⑦

例-2.「数値属性フィールドの値をテキスト属性フィールドに設定」する

では、逆に数値属性のフィールドの値をテキスト属性のフィールドに設定する事はできるのでしょうか?
これも、フィールド演算ならば簡単にできます。
順追って説明します。

Step-1.先ほどの町丁目界地図(2006年度版)レイヤの属性情報に、今度は「文字へ変換」というテキスト属性のフィールドを追加作成しました(図⑧)。

図⑧

Step-2.フィールド演算を起動し、左上のフィールド欄から「字コードF」を選択して「文字へ変換 =字コードF」という演算式を作成して実行してみました(図⑨)。

図⑨

Step-3.図⑩を見るとテキスト属性の「文字へ変換」フィールドに「字コードF」の値が設定されていることが分かります。

図⑩

フィールド演算を使ってテキスト属性のフィールドの文字列を編集する事もできます。

例-3:「不要な空白を削除する」

店舗レイヤFの属性フィールド「店長」を見てみましょう。データには店長名が各店舗の店長の名前が設定されていますが、登録データの不備のせいで名前の前に不要な空白が入ってしまっています(図⑪)。これをフィールド演算で不要な空白を取り除きます。

図⑪

Step-1:フィールド「店長」に対しフィールド演算を起動します。

Step-2:用意された関数から文字列の先頭から空白を取り除く関数Ltrim()を使って店長 = LTrim ( [店長] )という演算式を作って実行してみます。

Step-3:図⑭を見ると、不要な空白が取り除かれ、店長名がきれいに並びました。

図⑭

例-4.「文字列から指定した文字数分を取得する」

顧客レイヤFの属性フィールド「顧客情報」には顧客の3つの情報を1つの文字列に構成して設定されています。

  • どこの店舗の顧客なのかを示す店舗名
  • 顧客の年齢
  • ○や■等の記号で表記された識別情報に加え、新たに「対象店舗」というフィールドを作成し、フィールド演算を使って「顧客情報」の中の店舗名の情報のみを設定してみましょう(図⑮)。

図⑮

Step-1:新規フィールド「対象店舗」に対してフィールド演算を起動します(図⑯)。

図⑯

Step-2:用意された関数よりLeft()という文字列の左側から指定した文字数分を取得する関数を使って次のような演算式を作成します。対象店舗 = Left( [顧客情報],3 )「顧客情報」の先頭3文字が店舗名を表していますので、文字列の左から3文字を取得するという意味の演算式を作成した訳です(図⑰)。

図⑰

Step-3:フィールド演算の実行の結果、「対象店舗」のフィールドに店舗名のみを設定する事ができたことが分かります(図⑱)。

図⑱