Skip To Content

フィールド演算 (Calculate Field)

フィールド演算 [フィールド演算 (Calculate Field)] ツールでは、新規または既存のフィールドのフィールド値を計算します。出力は、常に ArcGIS Enterprise ポータル コンテンツの新規レイヤーになります。

解析での使用 GeoAnalytics Tools

GeoAnalytics Tools を使用した解析は、複数の ArcGIS GeoAnalytics Server コンピューターやコアにまたがる分散型処理を使用して実施されます。GeoAnalytics ToolsArcGIS Enterprise の標準的なフィーチャ解析ツールは、異なるパラメーターと機能を持ちます。これらの相違点については、「フィーチャ解析ツールの相違点」をご参照ください。

全国のスーパーマーケット チェーンの販売データを収集したとします。現在、TotalSales という名前の既存フィールドに各年の総売上額の値があり、各場所における総売上額を計算するとします。このフィールドには 2016 年と 2017 年の総売上の合計を表したいと考えています。これらのフィールドを条件式で使用すると、フィールド値の計算は $feature["Sales2016"] + $feature["Sales2017"] になります。

都市のバスの場所、時間、バス ID、速度を記録する GPS 計測値があるとします。各フィーチャについて直前に記録された 3 つの GPS 計測値の平均速度を格納する SpeedFrom3 という名前の新しいフィールドを作成したいと考えています。この計算では、トラッキング対応の計算式を使用します。ここでは、バス ID で指定してバスをトラッキングします。直前の 3 つの時間ステップの平均速度と現在の時間ステップを決定する計算は、average($track.field["speed"].history(-4)) になります。

使用上の注意

[フィールド演算 (Calculate Field)] は、テーブル、ポイント、ライン、またはエリア フィーチャで実行されます。

一度に 1 つのフィールドの値のみを計算できます。

すでに存在するフィールドの値を計算したり、新しいフィールド名を指定して新しいフィールドを作成したりすることができます。

式は、Arcade 条件式を使用して作成されます。

[フィールド演算 (Calculate Field)] での Arcade 条件式の詳細

計算は、オプションでトラック対応にすることができます。トラック対応方程式は、トラック関数を使用する Arcade 条件式を使用します。

トラック対応の計算を含めるには、以下を実行する必要があります。

  • 時間対応かつ時間のタイプが瞬間を示すレイヤーを使用します。
  • [条件式はトラック対応です] を選択します。
  • トラックの識別に使用するフィールドを選択します。

トラックは、1 つ以上のトラック フィールドの一意の組み合わせで表されます。たとえば、flightID フィールドと Destination フィールドがトラック識別子として使用される場合、フィーチャ [ID007, Solden] と [ID007, Tokoyo] は 2 つの個別トラックになります。Destination フィールドの値が異なるからです。

時間間隔の境界を適用すると、指定間隔でトラックがセグメント化されます。たとえば、時間間隔の境界を 1 日に設定し、1990 年 1 月 1 日午前 9 時から開始した場合、各トラックは毎日午前 9 時に切詰められ、このセグメントの範囲内で解析されます。この分割を使用すると、解析のためのトラックを簡単に短縮できるため、計算時間を高速化できます。時間間隔の境界の繰り返しによる分割が解析で有効な場合は、ビッグ データ処理にこの方法を使用することをお勧めします。時間の境界を設定するには、解析がトラック対応である必要があります。

出力フィーチャは、入力のフィールドを返します。新しいフィールドの値を計算した場合、そのフィールドも追加されます。

[現在のマップ範囲を使用] がオンの場合、現在のマップ範囲に表示されるフィーチャだけが解析されます。オフの場合、入力レイヤーのすべての入力フィーチャが、現在のマップ範囲内になくても解析されます。

制限事項

一度に 1 つのフィールドしか変更できません。

[フィールド演算 (Calculate Field)] は、常に新しいフィーチャ レイヤーを生成し、入力データセットを編集しません。

ArcGIS API for Python の例

[フィールド演算] ツールは ArcGIS API for Python で使用できます。

この例では、地震が発生した年を表す新しいフィールドを計算します。 次に、Pandas DataFrame を使用して変更したデータを表示します。


# Import the required ArcGIS API for Python modules
import arcgis
from arcgis.gis import GIS
from arcgis.geoanalytics import manage_data
from arcgis.features import FeatureLayer


# Connect to your ArcGIS Enterprise portal and confirm that GeoAnalytics is supported
portal = GIS("https://myportal.domain.com/portal", "gis_publisher", "my_password", verify_cert=False)
if not portal.geoanalytics.is_supported():
    print("Quitting, GeoAnalytics is not supported")
    exit(1)   

# Define the feature layer you'll use for analysis
earthquake_data_url = "https://sampleserver6.arcgisonline.com/arcgis/rest/services/Earthquakes_Since1970/FeatureServer/0"
earthquake_data = FeatureLayer(earthquake_data_url)

# Calculate the year number from the date_ field
calculate_field_result = manage_data.calculate_fields(input_layer = earthquake_data, 
                                                      field_name = "year_num", 
                                                      data_type = "Integer",
                                                      expression = "Year($feature.date_)", 
                                                      output_name = "Earthquake_occurence_years")

# Visualize the results as a Pandas DataFrame when running Python in a Jupyter Notebook
import pandas as pd
features = calculate_field_result.layers[0].query()
df = pd.DataFrame.from_records(pd.DataFrame(features.value['features'])["attributes"])
df

類似のツール

[フィールド演算 (Calculate Field)] を使用し、フィーチャの新規または既存のフィールド値を計算します。その他のツールは、類似した少し異なる問題を解決するのに効果的です。

Map Viewer解析ツール

時間対応レイヤーのフィーチャを検出する場合は、GeoAnalytics Tools[インシデントの検出 (Detect Incidents)] を使用します。

ArcGIS Desktop 解析ツール

GeoAnalytics Tools[フィールド演算 (Calculate Field)]ArcGIS Pro でも利用できます。

入力の値を計算して既存のデータを変更する場合は、ArcGIS Pro の [データ管理] ツールボックスの [フィールド演算 (Calculate Field)] ツールを使用します。

ArcGIS Pro からこのツールを実行するには、アクティブなポータルが Enterprise 10.6 以降である必要があります。GeoAnalytics フィーチャ解析を実行できる権限を持つアカウントでサイン インする必要があります。