ArcGIS Arcade を使用したテキストから数値への変換
ビデオ
このチュートリアルは、ビデオでも利用できます。
Total Value フィールドを持つマップのスタイルを設定する
はじめに、固定資産の評価データを表示し、[Total Value] フィールドを確認します。 このフィールドを含むマップをシンボル表示します。
- Map Viewer で Portage la Prairie property assessment レイヤーを開きます。
町の資産の境界線を示すマップが表示されます。
- 必要に応じて、リボンの [サイン イン] をクリックし、ArcGIS 組織アカウントにサイン インします。
注意:
組織アカウントがない場合は、ソフトウェア アクセスのオプションをご参照ください。
- [レイヤー] ウィンドウで、レイヤー名の [オプション] ボタンをクリックしてから [テーブルの表示] をクリックします。
マップの下にレイヤーの属性テーブルが表示されます。
- テーブルを水平方向にスクロールして、[Total Value] フィールドを探します。
どの資産がより価値があるかを確認できるよう、このフィールドをマップに表示します。
- テーブルを閉じます。
- 画面の右側にある [設定] ツールバーで、[スタイル] ボタンをクリックします。
注意:
[設定] ツールバーが使用できない場合は、[レイヤー] ウィンドウで [Portage la Prairie property assessment] をクリックします。 [設定] ツールバーは、レイヤーが選択されている場合にのみ利用できます。
- [スタイル] ウィンドウの [フィールド] ボタンをクリックします。
- [フィールドの選択] ウィンドウで、[Total Value] → [追加] の順にクリックします。
[スタイル] ウィンドウが更新され、[Total Value] フィールドに使用できるスタイルが表示されます。 [種類 (個別値シンボル)] と [場所 (単一シンボル)] の 2 つのみが表示されます。 [数と量 (サイズ)] などの量に関するスタイルを使用するつもりでしたが、使用できるスタイルがありません。
[スタイル] ウィンドウの上部付近にある [Total Value] の横に、フィールドのタイプとして [abc] と表示されます。これは、文字列またはテキスト フィールドであることを示します。
[数と量] スタイルを使用するには、数値が必要です。 テキスト値では機能しません。
Arcade 式の作成
[Total Value] フィールドと [数と量] スタイルを持つマップをシンボル表示することもできます。 Arcade 式を使用して、テキスト値を数値に変換します。
- [スタイル] ウィンドウで、[Total Value] の横の [削除] ボタンをクリックします。
- [式] ボタンをクリックします。
式の設定ウィンドウが表示されます。
- 式の設定ウィンドウのサンプル コードを削除します。
- ウィンドウの下部近くにある [展開] ボタンをクリックします。
- 展開したツールバーで [関数] をクリックします。
[関数] ウィンドウが開き、使用できる Arcade 関数がすべてリスト表示されます。
- 検索バーに「number」と入力します。
リストを [Number(value, pattern?) -> Number] という関数に絞り込みます。
- [Number] は関数の名前です。
- [Value] と [pattern] は、関数のパラメーターです。 疑問符は、[pattern] が任意指定のパラメーターであることを示します。
- 末尾の [-> Number] というテキストは、この関数出力が数値であることを示します。
この関数を使用して、[Total Value] フィールドに格納されているテキスト値を数値に変換します。
- [Number(value, pattern?) -> Number] という関数に絞り込みます。
式の設定に関数が表示されます。 [value_] パラメーターがハイライト表示されます。 次に、これを [Total Value] フィールドと置き換えます。パラメーターはハイライト表示のままにします。
- ツールバーで [プロファイル変数] をクリックします。
プロファイル変数は、Arcade 式の入力として使用できる、マップのデータ変数です。 レイヤーのすべてのフィールドが含まれます。
[プロファイル変数] ウィンドウで、[$feature] はレイヤーのフィーチャを表します。 この場合、フィーチャは、[Portage la Prairie propertyassessment] レイヤーのプロパティです。
- [$feature] の横の矢印ボタンをクリックします。
[Portage la Prairie propertyassessment] レイヤーのすべてのフィールドのリストが表示されます。
- リストの下部にスクロールして、[$feature.Total_Value] をクリックします。
式が [Number ($feature.Total_Value)] に更新されます。
これで、1 番目のパラメーターの [value] は [$feature.Total_Value] に定義されました。 式は、レイヤーの各フィーチャの [Total Value] 属性にアクセスします。 次のパラメーターの [pattern] は任意指定です。パターンが定義されない状況で式が機能するかどうかをテストするため、式を実行します。
- 式の設定の上の [実行] をクリックします。
[出力] ウィンドウに、[Number: NaN] という出力がレポートされます。 NaN は Not a Number (数値でないこと) を表します。 今回の式は、パターンの定義がない状況では機能しませんでした。
- 式を編集して「Number($feature.Total_Value, '#.##')」にします。
[#] は、[Number] 関数の任意の桁を表します。 [#.##] のパターンは、小数点前の任意の桁数と、小数点以下 2 桁までの任意の桁数を変換します。 [Total Value] フィールドの値は金額を表すので、小数点以下 2 桁までで表される場合も考えられます。 このパターンにより、小数点以下のある値を確実に変換できます。
- もう一度 [実行] をクリックします。
[出力] ウィンドウに、引き続き [Number: NaN] がレポートされます。 次に、関数のドキュメントを参照して解決法を見つけます。
式の修正
属性テーブルから、[Total Value] フィールド内の各数値の先頭に [$] 文字が付与されていたことを思い出しました。 これはテキスト文字です。 [$] 文字は数値に変換できないため、式は失敗しています。 [Number] 関数のドキュメントを参照して、[$] 文字を取り除く方法があるかどうか確認します。
- ツールバーで [関数] をクリックします。
- 検索バーに「number」と入力します。
- [Number(value, pattern?) -> Number] の横の矢印ボタンをクリックします。
関数のドキュメントが表示されます。
- [例] セクションまで下にスクロールします。
2 番目の例で、テキストを数値に変換する際に特定の文字を無視する方法が示されています。
[Number('abc10def', 'abc##def') // return 10]
例示された式で、[abc] および [def] は無視すべきテキストとして定義されています。 このパターンを使用して、[$] 文字を無視します。
- 式の設定で、[#.##] の前にカーソルを置き、「$」と入力します。
最終的な式は、[Number($feature.Total_Value, '$#.##')] になるはずです。
- [実行] をクリックします。
[出力] ウィンドウに [Number: 85200] とレポートされます。 式は、$85,200 のような値を 85200 のような数値に変換できました。
注意:
Web ブラウザーが米国英語以外の言語に設定されていると、桁区切り記号として使用されているカンマが原因で式が失敗する場合があります。 [出力] ウィンドウに、引き続き [Number: NaN] がレポートされる場合は、既存の式を削除して、以下と置き換えます。
var numberOnly = Replace($feature.Total_Value, '$', '') // Remove dollar signs. var digitsOnly = Replace(numberOnly, ',', '') // Remove commas. Number(digitsOnly)
注意:
[実行] をクリックすると、レイヤーの最初のフィーチャに対して式がテストされます。
これで式が完成しました。目的をよりわかりやすく示すため、式の名前を変更します。
- ウィンドウの上部で、[新しい式] をクリックします。 既存の式を消去して、「Total Value (numeric)」と入力します。
- [完了] をクリックします。
マップが再び表示されます。 [スタイル] ウィンドウに、選択された属性として [Total Value (numeric)] 式がリスト表示されます。 式によって返された数値のデフォルト スタイルとして、[数と量 (色)] が選択されています。
マップには、評価された資産の価値が高いほど大きな円で [Total Value] フィールドの値が表示されます。
注意:
[Total Value] フィールドと [Portage la Prairie property assessment] レイヤーは変更されません。 [Total Value (numeric)] 式は、レイヤーではなく Web マップに保存されています。ただし、レイヤーのコピーを保存すると、他のマップで使用できます。
このチュートリアルでは、Arcade の [Number] 関数を使用して、マップのレイヤーのテキスト値を数値に変換する方法を学びました。それにより、[数と量] スタイルを適用できました。 ここで記述した [Number($feature.Total_Value, '$#.##')] の式を使用して、ポップアップおよびラベルを書式設定することもできます。
他のチュートリアルについては、チュートリアル ギャラリーをご覧ください。