ラベル | 説明 | データ タイプ |
ターゲット レイヤー | ターゲット フィーチャを含みます。 ターゲット フィーチャの属性と結合されたフィーチャの属性は、出力に転送されます。 | Table View |
結合レイヤー | 結合フィーチャを含みます。 結合フィーチャの属性は、ターゲット フィーチャの属性に結合されます。 結合された属性の集約に結合操作がどのように影響するかについては、[結合方法] (Python では join_operation) パラメーターの説明をご参照ください。 | Table View |
出力データセット | 結合フィーチャがあるターゲット レイヤーのフィーチャを含む新しいフィーチャクラス。 | Feature Class;Table |
結合方法 | 単一のターゲット フィーチャと同じ空間リレーションシップを持つ複数の結合フィーチャが検出された場合、[ターゲット レイヤー] の値と [結合レイヤー] の値の結合を出力でどのように処理するかを指定します。
| String |
空間リレーションシップ (オプション) | フィーチャを空間的に結合するために使用する条件を指定します。
| String |
空間的近接距離 (オプション) |
空間結合の対象として検討される結合フィーチャ内のターゲット フィーチャからの距離。 検索範囲は、[空間リレーションシップ] パラメーター値が [平面近接] または [測地線近接] の場合のみ有効になります。 | Linear Unit |
時系列リレーションシップ (オプション) | フィーチャの一致に使用する時間条件を指定します。
| String |
時間的近接距離 (オプション) |
空間結合の対象として検討される結合フィーチャ内のターゲット フィーチャからの時間距離。 時間は、[時系列リレーションシップ] パラメーター値が [近接]、[近接 (前)]、または [近接 (後)] であり、両方のフィーチャが時間対応である場合にのみ有効です。 | Time Unit |
属性リレーションシップ (オプション) | 属性フィールドの値に基づいてフィーチャを結合します。 結合レイヤーの属性フィールドにマッチするターゲット レイヤーの属性フィールドを指定します。
| Value Table |
サマリー フィールド (オプション) | 指定されたフィールドに関して計算される統計情報。 | Value Table |
結合条件 (オプション) | 条件を指定のフィールドに適用します。 これらの条件を満たしているフィールドを含むフィーチャだけが結合されます。 たとえば、結合レイヤー内の属性 [HealthSpending] 属性がターゲット レイヤー内の [Income] 属性の 20% よりも大きい場合に、結合条件をフィーチャに適用できます。 $join["HealthSpending"] > $target["Income"] * .2 などの Arcade 条件式を使用します。 | String |
すべてのターゲット フィーチャを保持する (オプション) | 出力フィーチャクラスにすべてのターゲット フィーチャを保存するか (左外部結合)、結合フィーチャとのリレーションシップが指定されたターゲット フィーチャのみを保存するか (内部結合) を指定します。
| Boolean |
サマリー
空間、時系列、および属性リレーションシップ、またはこれらのリレーションシップの組み合わせに基づいて、1 つのレイヤーの属性をもう 1 つのレイヤーに結合します。
図
使用法
空間結合では、空間位置に基づいて、入力フィーチャ ([ターゲット レイヤー] および [結合レイヤー] パラメーター) からのフィーチャ (行) と照合します。 時間結合では、時系列リレーションシップに基づいて、入力フィーチャからのフィーチャ (行) と照合します。 属性結合は、フィールド値に基づいてフィーチャを照合します。
空間リレーションシップ、時系列リレーションシップ、属性リレーションシップ、またはこれら 3 つの組み合わせに基づいてフィーチャを結合できます。
オプション 説明 空間リレーションシップ
フィーチャが互いに結合しているかどうかを判断する空間リレーションシップ。 使用可能なリレーションシップは、結合されるレイヤーのジオメトリのタイプ (ポイント、ライン、エリア) によって決まります。 使用可能な空間リレーションシップを次に示します。
- 交差する
- 等しい
- [平面近接] - 平面距離を使用します。
- [測地線近接] - 測地距離を使用します。
- 含む
- 含まれる
- 接する
- 横切る
- 重複する
時系列リレーションシップ
フィーチャが互いに結合しているかどうかを判断する時系列リレーションシップ。 使用可能なリレーションシップは、結合されるレイヤーの時系列のタイプ (インスタントまたは間隔) によって決まります。 使用可能な時系列リレーションシップを次に示します。
- 接続する
- 接続される
- 重複する
- 重複される
- 期間内にある
- 含む
- 等しい
- 終了する
- 終了される
- 開始する
- 開始される
- 交差する
- 最近接
- 付近 (前)
- 付近 (後)
属性リレーションシップ
フィーチャが互いに結合しているかどうかを判断する属性リレーションシップ。 フィーチャは、結合レイヤーのフィールド値がターゲット レイヤーのフィールド値に等しい場合に一致します。
ターゲット フィーチャと結合フィーチャの座標系が異なる場合、ターゲット フィーチャの座標系が使用されます。 出力座標系を指定した場合、両方のフィーチャが出力座標系に投影変換されてから、結合されます。
[空間リレーションシップ] パラメーター値が [平面近接] である場合、[フィーチャの結合 (Join Features)] では、[ターゲット レイヤー] の値が投影されているか、出力座標系が投影座標系に設定されている必要があります。
同じターゲット フィーチャに対して複数のフィーチャが存在する場合、すべての一致するフィーチャを個別に結合するかどうか ([1 対多の結合])、または一致するすべてのフィーチャをまとめて結合するかどうか ([1 対 1 の結合]) を決定できます。
- [1 対多の結合] - 一致するフィーチャがすべてターゲット レイヤーに結合されます。 結果レイヤーには、ターゲット フィーチャの複数レコードが含まれます。
- [1 対 1 の結合] - ターゲット レイヤーの各フィーチャと一致するすべての結合フィーチャが集約されます。 一致するフィーチャがあるフィーチャのみが、集約と出力に含まれます。 結合されたフィーチャの個数は、合計、最小、最大、範囲、平均、分散、標準偏差などの他の統計情報とともに追加されます。 デフォルトでは、リレーションシップが指定されたターゲット フィーチャのみが出力フィーチャクラスに保存されます (内部結合)。 [すべてのターゲット フィーチャを保持] がオンの場合、すべての入力ターゲット フィーチャが出力フィーチャに書き込まれます (左外部結合と呼ばれます)。
オプションで、[結合条件] パラメーターを使用し、フィーチャを結合する式を作成することもできます。 式を指定すると、条件を満たすフィーチャのみが使用されます。 たとえば、$target["Magnitude"] > $join["Explosion"] 条件式を使用して、Explosion というフィールドを含む結合フィーチャより大きい場合のみ、Magnitude フィールドからターゲット フィーチャを結合できます。 詳細については、「GeoAnalytics Desktop ツールの Arcade 式」をご参照ください。
1 対多の結合を実行する際は、次のフィールドが出力フィーチャに含められます。
- ターゲット レイヤーのすべてのフィールド
- 結合したレイヤーのすべてのフィールド
ターゲット データセットと結合データセットの両方に同じフィールド名が含まれる場合は、結合したフィールドの先頭は「join」になります (join_fieldname など)。
フィールド名 説明 start_date
このフィールドは開始時間を表し、入力の時間がインスタントや間隔として設定されている場合に作成されます。
end_date
このフィールドは終了時間を表し、入力の時間が間隔として設定されている場合に作成されます。
1 対多の結合を実行する際は、ターゲット レイヤーのすべてのフィールド以外に次のフィールドが出力フィーチャに含まれます。
フィールド名 説明 count
結合したフィーチャの数。
statistic_fieldname
指定した統計情報では、それぞれ「統計情報_フィールド名」の形式で名前が付与された属性フィールドが作成されます。 たとえば、フィールド id の最大値と標準偏差は、MAX_id および SD_id です。
start_date
このフィールドは開始時間を表し、入力の時間がインスタントや間隔として設定されている場合に作成されます。
end_date
このフィールドは終了時間を表し、入力の時間が間隔として設定されている場合に作成されます。
以下を 1 つ以上行うことで、[フィーチャの結合 (Join Features)] ツールのパフォーマンスを向上させることができます。
- 対象データのみが解析されるように、範囲環境を設定します。
- 結合条件はできるだけ限定してください。 たとえば、1 キロメートル圏内の近接結合は、同じデータに対する 5 キロメートル圏内の近接結合よりも効率的です。
- 1 つ以上の結合条件を追加します。 結合条件を増やすことで、結合が限定的になります。 たとえば、1 キロメートル、1 時間圏内の近接結合は、同じデータに対する 1 キロメートル圏内の近接結合よりも効率的です。
- 結合式を適用します。
- 解析が実行されている場所に対してローカルなデータを使用します。
[解析] ツールボックスの [空間結合 (Spatial Join)] ツールを使用して、同様の解析を実行することもできます。
ジオプロセシング ツールは、Spark を活用しています。 解析は、デスクトップ コンピューターで複数のコアを並列に使用して行われます。 解析の実行の詳細については、「GeoAnalytics Desktop ツールの考慮事項」をご参照ください。
GeoAnalytics Desktop ツールを実行する際、解析はデスクトップ コンピューターで行われます。 最適なパフォーマンスを得るために、データがデスクトップで利用できる必要があります。 ホスト フィーチャ レイヤーを使用している場合は、ArcGIS GeoAnalytics Server を使用することをお勧めします。 データがローカルではない場合は、ツールの実行時間は長くなります。 ArcGIS GeoAnalytics Server を使用して解析を実行する方法については、GeoAnalytics Tools をご参照ください。
パラメーター
arcpy.geoanalytics.JoinFeatures(target_layer, join_layer, output, join_operation, {spatial_relationship}, {spatial_near_distance}, {temporal_relationship}, {temporal_near_distance}, {attribute_relationship}, {summary_fields}, {join_condition}, {keep_all_target_features})
名前 | 説明 | データ タイプ |
target_layer | ターゲット フィーチャを含みます。 ターゲット フィーチャの属性と結合されたフィーチャの属性は、出力に転送されます。 | Table View |
join_layer | 結合フィーチャを含みます。 結合フィーチャの属性は、ターゲット フィーチャの属性に結合されます。 結合された属性の集約に結合操作がどのように影響するかについては、[結合方法] (Python では join_operation) パラメーターの説明をご参照ください。 | Table View |
output | 結合フィーチャがあるターゲット レイヤーのフィーチャを含む新しいフィーチャクラス。 | Feature Class;Table |
join_operation | 単一のターゲット フィーチャと同じ空間リレーションシップを持つ複数の結合フィーチャが検出された場合、target_layer の値と join_layer の値の結合を出力フィーチャでどのように処理するかを指定します。
| String |
spatial_relationship (オプション) | フィーチャを空間的に結合するために使用する条件を指定します。
| String |
spatial_near_distance (オプション) |
空間結合の対象として検討される結合フィーチャ内のターゲット フィーチャからの距離。 検索範囲は、spatial_relationship パラメーター値が NEAR または NEAR_GEODESIC の場合のみ有効になります。 | Linear Unit |
temporal_relationship (オプション) | フィーチャの一致に使用する時間条件を指定します。
| String |
temporal_near_distance (オプション) |
空間結合の対象として検討される結合フィーチャ内のターゲット フィーチャからの時間距離。 時間は、temporal_relationship パラメーター値が NEAR、NEAR_BEFORE、または NEAR_AFTER であり、両方のフィーチャが時間対応である場合にのみ有効です。 | Time Unit |
attribute_relationship [attribute_relationship,...] (オプション) | 属性フィールドの値に基づいてフィーチャを結合します。 結合レイヤーの属性フィールドにマッチするターゲット レイヤーの属性フィールドを指定します。
| Value Table |
summary_fields [summary_fields,...] (オプション) | 指定されたフィールドに関して計算される統計情報。
| Value Table |
join_condition (オプション) | 条件を指定のフィールドに適用します。 これらの条件を満たしているフィールドを含むフィーチャだけが結合されます。 たとえば、結合レイヤー内の属性 [HealthSpending] 属性がターゲット レイヤー内の [Income] 属性の 20% よりも大きい場合に、結合条件をフィーチャに適用できます。 $join["HealthSpending"] > $target["Income"] * .2 などの Arcade 条件式を使用します。 | String |
keep_all_target_features (オプション) | 出力フィーチャクラスにすべてのターゲット フィーチャを保存するか (左外部結合)、結合フィーチャとのリレーションシップが指定されたターゲット フィーチャのみを保存するか (内部結合) を指定します。
| Boolean |
コードのサンプル
次のスタンドアロン スクリプトで、JoinFeatures 関数を使用する方法を示します。
# Name: JoinFeatures.py
# Description: Join crime events that are close together in time and space, and
# return the count of nearby crimes. This example is a self join
# (joining the same layer to itself).
# Import system modules
import arcpy
arcpy.env.workspace = "C:/data/CityData.gdb"
# Enable time on the input features using an .lyrx file.
# To create the .lyrx file, add your layer to a map, open the layer properties
# and enable time. Then right-click the layer and select Share As Layer File.
inputLyrx = r'C:\data\ChicagoCrimes.lyrx'
# MakeFeatureLayer converts the .lyrx to features
chicagoCrimesLayer = arcpy.management.MakeFeatureLayer(inputLyrx, "Crimes_layer")
# ApplySymbologyFromLayer sets the time using the .lyrx file definition
arcpy.management.ApplySymbologyFromLayer(chicagoCrimesLayer, inputLyrx)
# Set local variables
spatialOperation = "NEAR"
nearDistance = "1 Kilometers"
temporalOperation = "NEAR"
nearTime = "3 Hours"
out = "CloseCrimes"
# Run Join Features
arcpy.gapro.JoinFeatures(chicagoCrimesLayer, inFeatures, out, "JOIN_ONE_TO_ONE",
spatialOperation, nearDistance, temporalOperation,
nearTime)