Join Features

The Join Features tool Join Features tool transfers attributes from the features in one feed, layer, or table to other features in the same feed or to those of another feed or dataset based on spatial, temporal, and attribute relationships, or some combination of the three. Optionally, you can calculate statistics for the joined features.

Workflow diagram

Join Features workflow diagram

Examples

  • An analyst has data on crime incidents in a city. To analyze and study the impact of these crimes, it is necessary to understand the relationship the crime locations have with various city jurisdictions, such as school districts, police boundaries, and neighborhoods. Using the Join Features tool, additional information about each location can be appended to each crime and the impact on various jurisdictions can be further studied and analyzed.
  • When a shipping vessel from one feed enters a moving severe weather cell of another feed, enrich the vessel with attributes from the severe weather event feature.

Usage notes

  • You can join features based on a spatial relationship, a temporal relationship, an attribute relationship, or a combination of the three.

    OptionDescription
    Spatial relationship

    Spatial relationship

    The spatial relationship that determines if features are joined to each other. The available relationships depend on the geometry type (point, line, or area) of the layers being joined. Available spatial relationships include the following:

    • intersects
    • enter
    • equals
    • exit
    • near planar
    • near geodesic
    • contains
    • within
    • touches
    • crosses
    • overlaps
    Note:

    A target feature must satisfy its spatial relationship against all join features when exit has been specified and there is more than one join feature. For any other spatial relationship and where there is more than one join feature, a target feature can satisfy its spatial relationship to any individual join feature.

    Temporal relationship

    Temporal relationship

    The temporal relationship that determines if features are joined to each other. The available relationships depend on the time type (instant or interval) of the layers being joined. Available temporal relationships include the following:

    • meets
    • met by
    • overlaps
    • overlapped by
    • during
    • contains
    • equals
    • finishes
    • finished by
    • starts
    • started by
    • intersects
    • near
    Attribute relationship

    Attribute relationship

    The attribute relationship that determines if features are joined to each other. Features are matched when the field values in the join layer are equal to field values in the target layer.

    If multiple features match the same target feature, you can determine if all the matching features will be joined (Join one to many) or if all the matching features will be summarized together (Join one to one) as follows:
    • Join one to one—This option summarizes all of the matching join features to each feature in the target layer. Only the target features that have a match will be included in the output. The count of joined features will be added, as well as other statistics such as sum, minimum, maximum, range, mean, variance, and standard deviation. Real-time analytics support one-to-one joins only. Summary statistics can only be calculated if a Join one to one operation is specified.
    • Join one to many—This option joins all the matching features in the join layer to the target layer. The resulting layer will contain multiple records of the target feature. Big data analytics support both one-to-one and one-to-many joins.

      Join features one to one and one to many

      Examples of a one-to-many and one-to-one join are shown. In this example, the one-to-one join only includes the count; additional statistics that can be calculated are shown below in the How Join Features works - Calculations section.

      When the Join operation parameter is set to Join one to many, there can be more than one row in the output feature class for each target feature.

  • When configuring the Join Features tool in a one-to-one join, you can choose the only retain features that are joined or retain all features regardless of join results option.
    • If you choose only retain features that are joined, only features that were able to successfully joined with a feature from the join dataset will be present in the output.
    • If you choose retain all features regardless of join results, all features from the target dataset will exist in the output, regardless of whether there were any joined attributes.
    • When retaining all features, if a feature is retained but there was no join for that feature, the COUNT value will be 0 and any summary field attribute values will be null.
    • This option is only available for one-to-one joins.
  • If target and join features are in different coordinate systems, the coordinate systems of the target feature will be used.
  • If a join feature has a spatial relationship with multiple target features, it is counted as many times as it is matched with the target feature. For example, if a point is within three polygons, the point is counted three times, once for each polygon.
  • When Spatial relationship is set to Near geodesic or Near planar, the target layer must be projected or the output coordinate system be set to a projected coordinate system.
  • Optionally, build an expression to join features. If you specify an expression, only features that meet the condition will be used. For example, you can only join target features from the Magnitude field if greater than the join feature, with a field named Explosion, using the expression $target["Magnitude"] > $join["Explosion"]. Learn more about Arcade expressions with Join Features.
  • When Spatial relationship is set to enter or exit in a real-time analytic, the following are true:
    • The tool will operate in a stateful manner, which enables it to compare sequential observations to one another to detect a change in state, for example, whether the current condition is different from that of the previous observation. With other spatial relationships in real-time analytics, the tool does not need to compare any observations with previous observation, so it can run in a stateless manner, which is less resource intensive.
    • When operating in a stateful manner, Join Features maintains a state store of the current observation for each Track ID. When a new observation arrives it is compared to the current observation of the same Track ID, if present. If the new observation has a newer timestamp than the current observation in the state store it will replace the current observation. If it has an identical timestamp to the current observation for the same Track ID the tool cannot distinguish between the two observations. This means the tool will not replace the current observation in the state store with the new observation, the new observation will not be added to the state store and future observations for this Track ID will be compared to the current observation that remained in the state store until a new observation arrives with a later timestamp. The tool will log a warning that this occurred.
    • Checking First observation can trigger enter or First observation can trigger exit indicates that the first target feature received satisfies the filter condition if it is inside any join feature (in the case of enter) or outside (in the case of exit), despite having no prior target feature to which to compare the current target feature's location. The default is false (not checked).
    • The Target Time Window parameter in real-time analytics should be at least as long as the longest anticipated interval between observations for any one track. Observations older than this duration will be removed from memory to manage resources.
  • If a feed is connected to the join port, distance calculations will be performed dynamically based on the changing features in both the target and join feeds.
  • In dynamic geofencing, the Join Time Window parameter must be set. If the join feed does not have a field tagged as END_TIME and the last known observation for a join feature is older than this window, it will be removed from the tool's memory and will not be included in the analysis. If the join feed has a field tagged as END_TIME, the feature will age out of the geofence store according to the value in the field tagged as END_TIME or when the join time window is closed, whichever comes first.
  • Adding a join feed to a tool must be done in the model view. Analytics with tools using join feeds cannot be viewed or edited in the workflow view.
  • Statistics are calculated for only those features that meet the specified spatial, temporal, or attribute relationship used in the Join one to one operation. You can calculate numeric and string statistics.

Parameters

ParameterDescriptionData type

Target layer

The target layer containing the features to process.

Features

Join layer

The layer whose features will be joined to those of the target layer.

Features

Join operation

Specifies whether the join will be one to one or one to many.

  • Join one to one—Joins always return the same number of results as the target features or fewer, if there are target features that do not match any join features. Attributes of the join features are summarized as specified in the Summary fields parameter.
  • Join one to many—Joins return a record for each match between the target and join features. Attributes of the join features are not summarized.

String

Retain all features

Specifies whether only the features in successful joins will be retained or all features will be retained regardless of whether there was a successful join for those features. This option is only available for one-to-one joins.

For one-to-many joins, this option is not available and only features with successful joins are returned.

If all features are retained, for features where there was not a join, the count will be 0 and any summary field values will be null.

String

Spatial relationship

Specifies the criteria used to spatially join features. This parameter is available if Spatial is checked.

String

Spatial near distance

Join features within this specified distance of a target feature to be considered for the spatial join. A spatial near distance is only valid when the spatial relationship is set to Near geodesic or Near planar.

Linear Unit

Temporal relationship

Specifies the time criteria used to match features. This parameter is available if Temporal is checked. Different temporal criteria are available depending on Instant or Interval time features.

  • meets—When a target time interval end is equal to the join time interval start, the target time meets the join time.
  • met by—When a target time interval start is equal to the join time interval end, the target time is met by the join time.
  • overlaps—When a target time interval starts and ends before the start and end of the join time interval, the target time overlaps the join time.
  • overlapped by—When a target time interval starts and ends after the start and end time of the join time interval, the target time is overlapped by the join time.
  • during—When a target time occurs between the start and end of the join time interval, the target time is during the join time.
  • contains—When a join feature time occurs between the start and end of the target time interval, the target time contains the join time.
  • equals—Two times are considered equal if their instants or intervals are identical.
  • finishes—When a target time ends at the same time as a join time, and the target time started after the join time, the target time finishes the join time.
  • finished by—When a join feature time ends at the same time as a target time, and the join time started after the target time, the target time is finished by the join time.
  • starts—When a target time starts at the same time as the join time interval start and ends before the join time interval ends, the target time starts the join time.
  • started by—When a target interval time starts at the same time as the join time and ends after the join time, the target time is started by the join time.
  • intersects—When any part of a target time occurs at the same time as the join time, the target time intersects the join time.
  • near—When a target time is within a specified range of time from the join time, the target time is near the join time.
  • near before—When a target time is before the join time but within a specified range of time from the join time, the target time is near before the join time.
  • near after—When a target time is after the join time but within a specified range of time from the join time, the target time is near after the join time.

String

Temporal near distance

The amount of time between events. Joins will occur between events that occur within the time window of each other. This parameter is available if Temporal relationship is set to Near.

Time Unit

Attribute relationship

Joins features based on values in an attribute field. Specify which attribute field from the target layer matches an attribute field from the join layer. This parameter is available if Attribute is checked.

  • Target field—An attribute field from the target layer containing values to match.
  • Join field—An attribute field from the join layer containing values to match.

String

Summary fields

Specifies the statistics to be calculated on specified fields from the join features. Statistics are calculated for one-to-one joins. Different statistics are available depending on whether the specified field is a string, numeric, or date field.

  • Any—A sample string from a field of type string.
  • Count—Calculates the number of nonnull values. It can be used on numeric fields or strings. The count of [null, 0, 2] is 2.
  • Count (distinct)—Calculates the number of distinct, nonnull values. It can be used on numeric fields or strings. The count distinct result of [null, 4, 3, 4] is 2.
  • Sum—The sum of numeric values in a field. The sum of [null, 1, 3] is 4.
  • Square sum—The sum, over all observations, of the squared differences of each observation from the overall mean. The sum of squares of [null, 2.2, 3.1, 4.7] is 3.206.
  • Min—The minimum value of a numeric field. The minimum of [0, 2, null] is 0.
  • Max—The maximum value of a numeric field. The maximum value of [0, 2, null] is 2.
  • Mean—The mean of numeric values. The mean of [0,2, null] is 1.
  • Range—The range of a numeric field. This is calculated as the minimum value subtracted from the maximum value. The range of [0, null, 1] is 1. The range of [null, 4] is 0.
  • Variance—The variance of a numeric field in a track. The variance of [1] is null. The variance of [null, 1,1,1] is 1.
  • Standard Deviation—The standard deviation of a numeric field. The standard deviation of [1] is null. The standard deviation of [null, 1,1,1] is 1.

String

Join condition

Applies a condition to specified fields. Only features with fields that meet these conditions will be joined.

For example, you can apply a join to features in which the HealthSpendingattribute in the join layer is greater than 20 percent of the Income attribute in the target layer. The join condition to apply this expression is $join["HealthSpending"] > $target["Income"] * .2.

String

First observation can trigger enter/exit

Specifies whether the first target feature received satisfies the spatial relationship condition if it is inside any join feature in the case of enter or outside all join features in the case of exit, despite having no prior target feature to which to compare the current target feature's location. The default is false (not checked).

Boolean

Change geometry of target feature to geometry of join feature

Changes the geometry of the target feature to the geometry of the join feature. For example, if the target feature is a point and the join feature it is joined with is a polygon, the target feature will assume the polygon geometry of the join feature. The default is false.

If the target feature does not have a geometry, it will assume the geometry of the join feature it is joined with.

If the target feature has a geometry and the join feature it is joined with does not have a geometry, the target feature will lose its geometry and become tabular.

Note:

This parameter is not valid when Retain all features is set to true. Output features cannot have different geometries.

Boolean

Target Time window

Specify a value at least as long as the longest anticipated interval between observations for any given track. Observations older than this duration will be removed from memory to manage resources.

This parameter is only valid when Spatial relationship is set to enter or exit.

String

Join Time window

The time window for the join feed (dynamic geofencing). If the last known observation for a join feature is older than the time window specified, it will be removed and will not be included in the analysis. If the join feed has a field tagged as END_TIME, this parameter is optional.

String

Considerations and limitations

  • Summary statistics will only be calculated if the Join one to one operation is specified.
  • The COUNT field name will be used to represent the number of joined features for a one-to-one join. If the COUNT field name exists in the target schema, the field will be called join_COUNT. If you're performing multiple consecutive joins, the field names will be COUNT, join_COUNT, join_COUNT1, join_COUNT2, and so on to avoid field name conflicts.