ラベル | 説明 | データ タイプ |
ターゲット レイヤー | ターゲット フィーチャを含みます。 ターゲット フィーチャの属性と結合されたフィーチャの属性は、出力に転送されます。 | Table View |
結合レイヤー | 結合フィーチャを含みます。 結合フィーチャの属性は、ターゲット フィーチャの属性に結合されます。 結合された属性の集約に結合操作がどのように影響するかについては、[結合方法] パラメーターの説明をご参照ください。 | 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 対多の結合] で、以下のいずれかに当てはまる場合にアクティブになります。
| Boolean |
距離単位 (オプション) | 出力フィーチャクラスで距離の値に使用する計測単位を指定します。
| String |
サマリー
空間、時系列、または属性リレーションシップ、またはこれらのリレーションシップの組み合わせに基づいて、1 つのレイヤーの属性をもう 1 つのレイヤーに結合します。
図
使用法
空間結合では、空間位置に基づいて、入力フィーチャ ([ターゲット レイヤー] および [結合レイヤー] パラメーター値) からのフィーチャ (行) と照合します。 時間結合では、時系列リレーションシップに基づいて、入力フィーチャからのフィーチャ (行) の照合を行います。 属性結合では、フィールド値に基づいてフィーチャを照合します。
空間リレーションシップ、時系列リレーションシップ、属性リレーションシップ、またはこれら 3 つの組み合わせに基づいてフィーチャを結合できます。
オプション 説明 空間リレーションシップ
フィーチャが互いに結合しているかどうかを判断する空間リレーションシップ。 使用可能なリレーションシップは、結合されるレイヤーのジオメトリのタイプ (ポイント、ライン、エリア) によって決まります。 使用可能な空間リレーションシップを次に示します。
- 交差する
- 等しい
- 平面近接 - 平面距離を使用します。
- 測地線近接 - 測地距離を使用します。
- 含む
- 含まれる
- 接する
- 横切る
- 重複する
時系列リレーションシップ
フィーチャが互いに結合しているかどうかを判断する時系列リレーションシップ。 使用可能なリレーションシップは、結合されるレイヤーの時系列のタイプ (インスタントまたは間隔) によって決まります。 使用可能な時系列リレーションシップを次に示します。
- 接続する
- 接続される
- 重複する
- 重複される
- 期間内にある
- 含む
- 等しい
- 終了する
- 終了される
- 開始する
- 開始される
- 交差する
- 最近接
- 近接 (前)
- 近接 (後)
属性リレーションシップ
フィーチャが互いに結合しているかどうかを判断する属性リレーションシップ。 フィーチャは、結合レイヤーのフィールド値がターゲット レイヤーのフィールド値に等しい場合に一致します。
ターゲット フィーチャと結合フィーチャの座標系が異なる場合、ターゲット フィーチャの座標系が使用されます。 出力座標系を指定した場合、両方のフィーチャが出力座標系に投影変換されてから、結合されます。
[空間リレーションシップ] パラメーター値が [平面近接] の場合、[ターゲット レイヤー] パラメーター値が投影されているか、出力座標系が投影座標系に設定されている必要があります。
同じターゲット フィーチャに複数のフィーチャが一致する場合、すべての一致するフィーチャを個別に結合する ([結合方法] の値を [1 対多の結合] にする) か、または一致するすべてのフィーチャをまとめて結合する ([結合方法] の値を [1 対 1 の結合] にする) かどうかを決定できます。
- [1 対多の結合] - 一致するすべてのフィーチャがすべてターゲット レイヤーに結合されます。 結果レイヤーには、ターゲット フィーチャの複数レコードが含まれます。
- [1 対 1 の結合] - 一致する結合フィーチャがすべて、ターゲット レイヤーの各フィーチャに集約されます。 一致するフィーチャがあるフィーチャのみが、集約と出力に含まれます。 結合されたフィーチャの個数は、合計、最小、最大、範囲、平均、分散、標準偏差などの他の統計とともに追加されます。 デフォルトでは、出力フィーチャクラスに、リレーションシップが指定されたターゲット フィーチャのみが保持されます (これを内部結合と呼びます)。 [すべてのターゲット フィーチャを保持する] がオンになっている場合、すべての入力ターゲット フィーチャが出力フィーチャクラスに書き込まれます (これを左外部結合と呼びます)。
[結合条件] パラメーターを使用して、フィーチャを結合する式を作成することもできます。 式を指定すると、条件を満たすフィーチャのみが使用されます。 たとえば、式 $target["Magnitude"] > $join["Explosion"] を使用して、Explosion というフィールドを含む結合フィーチャより大きい場合のみ、Magnitude フィールドからターゲット フィーチャを結合できます。 詳細については、「GeoAnalytics Desktop ツールの Arcade 式」をご参照ください。
1 対多の結合を実行すると、次のフィールドが出力フィーチャに含められます。
- ターゲット レイヤーのすべてのフィールド
- 結合されたレイヤーのすべてのフィールド
ターゲット データセットと結合データセットに同じフィールド名が存在する場合、結合フィールドの先頭に join が付加されます (例: join_fieldname)。
フィールド名 説明 start_date
このフィールドは開始時間を表し、入力に時間設定がある場合に特定時点または間隔として作成されます。
end_date
このフィールドは終了時間を表し、入力に時間設定がある場合に間隔として作成されます。
1 対 1 の結合を実行すると、ターゲット データセットのすべてのフィールドに加えて、次のフィールドが出力フィーチャに含まれます。
フィールド名 説明 count
結合されたフィーチャの個数。
statistic_fieldname
指定された統計がそれぞれ属性フィールドを作成し、「statistic_fieldname」という形式の名前が付けられます。 たとえば、id フィールドの最大値は MAX_id、標準偏差は SD_id になります。
start_date
このフィールドは開始時間を表し、入力に時間設定がある場合に特定時点または間隔として作成されます。
end_date
このフィールドは終了時間を表し、入力に時間設定がある場合に間隔として作成されます。
[距離を含める] パラメーターがオンで、[結合方法] パラメーターが [1 対多の結合] に設定されている場合、次のフィールドが出力フィーチャに含められます。
フィールド名 説明 distance
ターゲット フィーチャと結合フィーチャの間の距離。 [空間リレーションシップ] パラメーターが [平面近接] または [測地線近接] の場合、このフィールドが含められます。
距離が 0 の場合、ターゲット ジオメトリと結合ジオメトリが交差していることを示します。 NULL 値は、ジオメトリが [空間的近接距離] パラメーター値よりも離れていることを示します。 [空間リレーションシップ] パラメーター値が [平面近接] の場合、距離の値は平面になります。このパラメーター値が [測地線近接] の場合、距離の値は測地線になります。 これらの値には、[距離単位] パラメーターで指定された単位が使用されます。 デフォルトの距離単位は「メートル」です。
timegap
ターゲット フィーチャと結合フィーチャ間の時間差 (ミリ秒単位)。 [時系列リレーションシップ] パラメーターが [近接]、[近接 (前)]、または [近接 (後)] の場合、このフィールドが含まれます。
距離が 0 の場合、ターゲット フィーチャと結合フィーチャが時間的に交差していることを示します。 正の値は結合フィーチャの前にターゲット フィーチャが発生していることを意味し、負の値はターゲット フィーチャの前に結合フィーチャが発生していることを意味します。 NULL 値は、フィーチャが結合条件と一致しなかったことを示します。 たとえば、フィーチャが [時間的近接距離] パラメーター値よりも離れています。
次の 1 つまたは複数の操作を実行して、[フィーチャの結合 (Join Features)] ツールのパフォーマンスを向上させることができます。
- 対象データのみが解析されるように、範囲環境を設定します。
- 結合条件はできる限り精選されたものにします。 たとえば、同じデータでは、1 キロメートルの近接結合の方が 5 キロメートルの近接結合よりパフォーマンスが高くなります。
- 複数の結合条件を追加します。 追加の結合条件によって結合が精選されたものになります。 たとえば、同じデータでは、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}, {include_distance}, {distance_unit})
名前 | 説明 | データ タイプ |
target_layer | ターゲット フィーチャを含みます。 ターゲット フィーチャの属性と結合されたフィーチャの属性は、出力に転送されます。 | Table View |
join_layer | 結合フィーチャを含みます。 結合フィーチャの属性は、ターゲット フィーチャの属性に結合されます。 結合された属性の集約に結合操作がどのように影響するかについては、[結合方法] パラメーターの説明をご参照ください。 | 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 |
include_distance (オプション) | 空間距離または時間差を結果に含めるかどうかを指定します。 このパラメーターは、join_operation パラメーター値が JOIN_ONE_TO_MANY で、以下のいずれかに当てはまる場合にアクティブになります。
| Boolean |
distance_unit (オプション) | 出力フィーチャクラスで距離の値に使用する計測単位を指定します。
| String |
コードのサンプル
次のスタンドアロン スクリプトで、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)