pygplates.PlateBoundaryStatistic

class pygplates.PlateBoundaryStatistic

Bases: instance

Statistics at a point on a plate boundary.

See also

Plate boundary statistics in the Primer documentation.

PlateBoundaryStatistics are equality (==, !=) comparable (but not hashable - cannot be used as a key in a dict).

Added in version 0.47.

__init__()

Raises an exception This class cannot be instantiated from Python

Methods

__init__

Raises an exception This class cannot be instantiated from Python

Attributes

boundary_length

Length (in radians) subtended on the plate boundary (at the boundary point).

boundary_normal

Normal to the plate boundary (at the boundary point).

boundary_normal_azimuth

Clockwise (East-wise) angle in radians (in the range \([0, 2\pi]\)) from North to the plate boundary normal (at the boundary point).

boundary_point

Position of the point on a plate boundary.

boundary_velocity

Velocity vector of the plate boundary (at the boundary point).

boundary_velocity_magnitude

Magnitude of velocity vector of the plate boundary (at the boundary point).

boundary_velocity_obliquity

Obliquity (in radians) of velocity vector of the plate boundary (at the boundary point).

boundary_velocity_orthogonal

Orthogonal component (in direction of boundary normal) of velocity vector of the plate boundary (at the boundary point).

boundary_velocity_parallel

Parallel component (in direction along boundary line) of velocity vector of the plate boundary (at the boundary point).

convergence_velocity

Convergence velocity vector (at the boundary point).

convergence_velocity_magnitude

Magnitude of convergence velocity vector (at the boundary point).

convergence_velocity_obliquity

Obliquity (in radians) of the convergence velocity vector (at the boundary point).

convergence_velocity_orthogonal

Orthogonal component (in direction of boundary normal) of convergence velocity vector (at the v).

convergence_velocity_parallel

Parallel component (in direction along boundary line) of convergence velocity vector (at the boundary point).

convergence_velocity_signed_magnitude

Signed magnitude of convergence velocity vector (at the boundary point).

distance_from_start_of_shared_sub_segment

Distance (in radians) from the start of the shared sub-segment geometry.

distance_from_start_of_topological_section

Distance (in radians) from the start of the resolved topological section geometry.

distance_to_end_of_shared_sub_segment

Distance (in radians) to the end of the shared sub-segment geometry.

distance_to_end_of_topological_section

Distance (in radians) to the end of the resolved topological section geometry.

left_plate

The left plate (at the boundary point).

left_plate_strain_rate

Strain rate of the left plate (at the boundary point).

left_plate_velocity

Velocity vector of the left plate (at the boundary point).

left_plate_velocity_magnitude

Magnitude of velocity vector of the left plate (at the boundary point).

left_plate_velocity_obliquity

Obliquity (in radians) of velocity vector of the left plate (at the boundary point).

left_plate_velocity_orthogonal

Orthogonal component (in direction of boundary normal) of velocity vector of the left plate (at the boundary point).

left_plate_velocity_parallel

Parallel component (in direction along boundary line) of velocity vector of the left plate (at the boundary point).

right_plate

The right plate (at the boundary point).

right_plate_strain_rate

Strain rate of the right plate (at the boundary point).

right_plate_velocity

Velocity vector of the right plate (at the boundary point).

right_plate_velocity_magnitude

Magnitude of velocity vector of the right plate (at the boundary point).

right_plate_velocity_obliquity

Obliquity (in radians) of velocity vector of the right plate (at the boundary point).

right_plate_velocity_orthogonal

Orthogonal component (in direction of boundary normal) of velocity vector of the right plate (at the boundary point).

right_plate_velocity_parallel

Parallel component (in direction along boundary line) of velocity vector of the right plate (at the boundary point).

signed_distance_from_start_of_topological_section

Signed distance (in radians) from the start of the resolved topological section geometry.

signed_distance_to_end_of_topological_section

Signed distance (in radians) to the end of the resolved topological section geometry.

property boundary_length

Length (in radians) subtended on the plate boundary (at the boundary point).

Type:

float

property boundary_normal

Normal to the plate boundary (at the boundary point).

Type:

Vector3D

Note

This is the unit-length normal of the great circle arc segment (that the boundary point is located on). And, as such, the normal is to the left of the segment (when following the vertices of the shared sub-segment that the boundary point is located on).

property boundary_normal_azimuth

Clockwise (East-wise) angle in radians (in the range \([0, 2\pi]\)) from North to the plate boundary normal (at the boundary point).

Type:

float

This is the equivalent of:

local_cartesian = pygplates.LocalCartesian(plate_boundary_stat.boundary_point)
_, azimuth, _ = local_cartesian.from_geocentric_to_magnitude_azimuth_inclination(plate_boundary_stat.boundary_normal)

See also

boundary_normal

property boundary_point

Position of the point on a plate boundary.

Type:

PointOnSphere

property boundary_velocity

Velocity vector of the plate boundary (at the boundary point).

Type:

Vector3D

Note

The velocity units are determined by the call to TopologicalSnapshot.calculate_plate_boundary_statistics().

This is the velocity of the plate boundary itself. In other words, the velocity of the topological section that contributes to the plate boundary at the boundary point.

property boundary_velocity_magnitude

Magnitude of velocity vector of the plate boundary (at the boundary point).

Type:

float

This is the equivalent of:

plate_boundary_stat.boundary_velocity.get_magnitude()

Note

The velocity units are determined by the call to TopologicalSnapshot.calculate_plate_boundary_statistics().

property boundary_velocity_obliquity

Obliquity (in radians) of velocity vector of the plate boundary (at the boundary point).

Type:

float

Note

Returns zero if the boundary velocity magnitude is zero.

This is the angle of the boundary velocity vector relative to the boundary normal. It is in the range \([-\pi, \pi]\) with positive values representing clockwise angles (and negative representing counter-clockwise).

Since the boundary normal is to the left, an obliquity angle satisfying \(\lvert obliquity \rvert < \frac{\pi}{2}\) represents movement towards the left plate and an angle satisfying \(\lvert obliquity \rvert > \frac{\pi}{2}\) represents movement towards right plate.

property boundary_velocity_orthogonal

Orthogonal component (in direction of boundary normal) of velocity vector of the plate boundary (at the boundary point).

Type:

float

This is the equivalent of:

boundary_velocity_orthogonal = (plate_boundary_stat.boundary_velocity_magnitude *
                                math.cos(plate_boundary_stat.boundary_velocity_obliquity))

Note

The velocity units are determined by the call to TopologicalSnapshot.calculate_plate_boundary_statistics().

property boundary_velocity_parallel

Parallel component (in direction along boundary line) of velocity vector of the plate boundary (at the boundary point).

Type:

float

This is the equivalent of:

boundary_velocity_parallel = (plate_boundary_stat.boundary_velocity_magnitude *
                              math.sin(plate_boundary_stat.boundary_velocity_obliquity))

Note

The velocity units are determined by the call to TopologicalSnapshot.calculate_plate_boundary_statistics().

property convergence_velocity

Convergence velocity vector (at the boundary point).

Type:

Vector3D or None

This is the velocity of the right plate relative to the left plate.

Note

Returns None if there is no plate (or network) on the left or no plate (or network) on the right (when following the vertices of the shared sub-segment that the boundary point is located on).

Note

The velocity units are determined by the call to TopologicalSnapshot.calculate_plate_boundary_statistics().

property convergence_velocity_magnitude

Magnitude of convergence velocity vector (at the boundary point).

Type:

float

Note

Returns float('nan') if there is no plate (or network) on the left or no plate (or network) on the right (when following the vertices of the shared sub-segment that the boundary point is located on).

Note

Returns zero if the convergence velocity has zero magnitude.

The magnitude is always positive (or zero or float('nan')).

This is the equivalent of:

if plate_boundary_stat.convergence_velocity:
    if plate_boundary_stat.convergence_velocity.is_zero_magnitude():
        convergence_velocity_magnitude = 0.0
    else:
        convergence_velocity_magnitude = plate_boundary_stat.convergence_velocity.get_magnitude()
else:
    convergence_velocity_magnitude = float('nan')

Note

The velocity units are determined by the call to TopologicalSnapshot.calculate_plate_boundary_statistics().

property convergence_velocity_obliquity

Obliquity (in radians) of the convergence velocity vector (at the boundary point).

Type:

float

Note

Returns float('nan') if there is no plate (or network) on the left or no plate (or network) on the right (when following the vertices of the shared sub-segment that the boundary point is located on).

Note

Returns zero if the convergence velocity magnitude is zero.

This is the angle of the convergence velocity vector relative to the boundary normal. It is in the range \([-\pi, \pi]\) with positive values representing clockwise angles (and negative representing counter-clockwise).

Since the boundary normal is to the left and the convergence velocity is the velocity of the right plate relative to the left plate, an obliquity angle satisfying \(\lvert obliquity \rvert < \frac{\pi}{2}\) represents convergence and an angle satisfying \(\lvert obliquity \rvert > \frac{\pi}{2}\) represents divergence.

property convergence_velocity_orthogonal

Orthogonal component (in direction of boundary normal) of convergence velocity vector (at the v).

Type:

float

Note

Returns float('nan') if there is no plate (or network) on the left or no plate (or network) on the right (when following the vertices of the shared sub-segment that the boundary point is located on).

This is the equivalent of:

if plate_boundary_stat.convergence_velocity:
    convergence_velocity_orthogonal = (plate_boundary_stat.convergence_velocity_magnitude *
                                       math.cos(plate_boundary_stat.convergence_velocity_obliquity))
else:
    convergence_velocity_orthogonal = float('nan')

Note

The velocity units are determined by the call to TopologicalSnapshot.calculate_plate_boundary_statistics().

property convergence_velocity_parallel

Parallel component (in direction along boundary line) of convergence velocity vector (at the boundary point).

Type:

float

Note

Returns float('nan') if there is no plate (or network) on the left or no plate (or network) on the right (when following the vertices of the shared sub-segment that the boundary point is located on).

This is the equivalent of:

if plate_boundary_stat.convergence_velocity:
    convergence_velocity_parallel = (plate_boundary_stat.convergence_velocity_magnitude *
                                     math.sin(plate_boundary_stat.convergence_velocity_obliquity))
else:
    convergence_velocity_parallel = float('nan')

Note

The velocity units are determined by the call to TopologicalSnapshot.calculate_plate_boundary_statistics().

property convergence_velocity_signed_magnitude

Signed magnitude of convergence velocity vector (at the boundary point).

Type:

float

Note

Returns float('nan') if there is no plate (or network) on the left or no plate (or network) on the right (when following the vertices of the shared sub-segment that the boundary point is located on).

Note

Returns zero if the convergence velocity has zero magnitude.

The signed magnitude is positive if the plates are converging and negative if they’re diverging. Otherwise it’s zero or float('nan').

This is the equivalent of:

convergence_velocity_signed_magnitude = plate_boundary_stat.convergence_velocity_magnitude
if (not math.isnan(convergence_velocity_signed_magnitude) and
    abs(plate_boundary_stat.convergence_obliquity) > math.pi/2):
    convergence_velocity_signed_magnitude = -convergence_velocity_signed_magnitude

Note

The velocity units are determined by the call to TopologicalSnapshot.calculate_plate_boundary_statistics().

property distance_from_start_of_shared_sub_segment

Distance (in radians) from the start of the shared sub-segment geometry.

Type:

float

A shared sub-segment represents a part of a resolved topological section that uniquely contributes to the boundaries of one or more resolved topologies. So this is the distance from the start of that shared part.

Note

The shared sub-segment geometry includes any rubber banding. So if the shared sub-segment (containing the boundary point) is the first shared sub-segment of the topological section, and the start of the topological section has rubber banding, then the start of the shared sub-segment will be halfway along the rubber band (the line segment joining start of topological section with adjacent topological section in a plate boundary).

To find the distance from the boundary point to the nearest edge (start or end) of the shared sub-segment (containing the boundary point):

distance_to_nearest_shared_edge_kms = (pygplates.Earth.mean_radius_in_kms *
                                       min(plate_boundary_stat.distance_from_start_of_shared_sub_segment,
                                           plate_boundary_stat.distance_to_end_of_shared_sub_segment))
property distance_from_start_of_topological_section

Distance (in radians) from the start of the resolved topological section geometry.

Type:

float

For example, if the topological section is a subduction zone then this could be considered the distance from the start of the trench (depending on how the topological model is built).

This is not necessarily from the start of the entire topological section geometry. A resolved topological section represents a distinct feature that is used by one or more plates as part of their boundaries. But typically only the interior part of the topological section polyline actually contributes to plate boundaries (due to the intersecting adjacent topological sections when resolving the boundary of a plate at a particular reconstruction time). And there can be more than one of these interior intersected segments for each topological section geometry (these are its shared sub-segments). So, this distance is the distance from the start of the first vertex (eg, intersection) of all these shared sub-segments along the topological section geometry.

To find the distance from the boundary point to the nearest edge (start or end) of the topological section (containing the boundary point):

distance_to_nearest_edge_kms = (pygplates.Earth.mean_radius_in_kms *
                                min(plate_boundary_stat.distance_from_start_of_topological_section,
                                    plate_boundary_stat.distance_to_end_of_topological_section))

Note

This is the absolute value of signed_distance_from_start_of_topological_section and hence only differs from it when the boundary point is on a rubber-band part of a plate boundary (where it’ll be positive here and negative there).

property distance_to_end_of_shared_sub_segment

Distance (in radians) to the end of the shared sub-segment geometry.

Type:

float

A shared sub-segment represents a part of a resolved topological section that uniquely contributes to the boundaries of one or more resolved topologies. So this is the distance to the end of that shared part.

Note

The shared sub-segment geometry includes any rubber banding. So if the shared sub-segment (containing the boundary point) is the last shared sub-segment of the topological section, and the end of the topological section has rubber banding, then the end of the shared sub-segment will be halfway along the rubber band (the line segment joining end of topological section with adjacent topological section in a plate boundary).

To find the distance from the boundary point to the nearest edge (start or end) of the shared sub-segment (containing the boundary point):

distance_to_nearest_shared_edge_kms = (pygplates.Earth.mean_radius_in_kms *
                                       min(plate_boundary_stat.distance_from_start_of_shared_sub_segment,
                                           plate_boundary_stat.distance_to_end_of_shared_sub_segment))
property distance_to_end_of_topological_section

Distance (in radians) to the end of the resolved topological section geometry.

Type:

float

For example, if the topological section is a subduction zone then this could be considered the distance to the end of the trench (depending on how the topological model is built).

This is not necessarily to the end of the entire topological section geometry. A resolved topological section represents a distinct feature that is used by one or more plates as part of their boundaries. But typically only the interior part of the topological section polyline actually contributes to plate boundaries (due to the intersecting adjacent topological sections when resolving the boundary of a plate at a particular reconstruction time). And there can be more than one of these interior intersected segments for each topological section geometry (these are its shared sub-segments). So, this distance is the distance to the end of the last vertex (eg, intersection) of all these shared sub-segments along the topological section geometry.

To find the distance from the boundary point to the nearest edge (start or end) of the topological section (containing the boundary point):

distance_to_nearest_edge_kms = (pygplates.Earth.mean_radius_in_kms *
                                min(plate_boundary_stat.distance_from_start_of_topological_section,
                                    plate_boundary_stat.distance_to_end_of_topological_section))

Note

This is the absolute value of signed_distance_to_end_of_topological_section and hence only differs from it when the boundary point is on a rubber-band part of a plate boundary (where it’ll be positive here and negative there).

property left_plate

The left plate (at the boundary point).

Type:

TopologyPointLocation

Note

TopologyPointLocation.not_located_in_resolved_topology() will return True if there is no plate (or network) to the left (when following the vertices of the shared sub-segment that the boundary point is located on).

To get the polygon boundary of the left resolved topological plate or network (or None if neither):

left_plate = plate_boundary_stat.left_plate
if left_plate.located_in_resolved_boundary():
    left_topology_boundary = left_plate.located_in_resolved_boundary().get_resolved_boundary()
elif left_plate.located_in_resolved_network():
    left_topology_boundary = left_plate.located_in_resolved_network().get_resolved_boundary()
else:
    left_topology_boundary = None

If both a left plate and a left network share the plate boundary (at the boundary point) then the network is returned. This is because a network typically overlays its underlying plate. The same applies if there are multiple left plates and a single overlayed left network. However, if there are multiple overlaying left networks then it is undefined which network is returned (the topological model was likely constructed incorrectly in this case). Furthermore, if a left plate shares the plate boundary but an overlaying network does not (eg, the network crosses the plate boundary rather than sharing a boundary with it) then the left plate is returned (the network is not discovered in this case).

See also

right_plate

property left_plate_strain_rate

Strain rate of the left plate (at the boundary point).

Type:

StrainRate

Returns pygplates.StrainRate.zero (no deformation) if there’s no left deforming network (eg, there’s just a rigid plate with no deforming network overlaid on top) or if boundary point is inside an interior rigid block of the left deforming network. See left_plate for details on how the left plate is determined.

property left_plate_velocity

Velocity vector of the left plate (at the boundary point).

Type:

Vector3D or None

Returns None if there is no plate (or network) to the left (when following the vertices of the shared sub-segment that the boundary point is located on). See left_plate for details on how the left plate is determined.

Note

The velocity units are determined by the call to TopologicalSnapshot.calculate_plate_boundary_statistics().

property left_plate_velocity_magnitude

Magnitude of velocity vector of the left plate (at the boundary point).

Type:

float

Note

Returns float('nan') if there is no plate (or network) to the left (when following the vertices of the shared sub-segment that the boundary point is located on).

This is the equivalent of:

if plate_boundary_stat.left_plate_velocity:
    left_plate_velocity_magnitude = plate_boundary_stat.left_plate_velocity.get_magnitude()
else:
    left_plate_velocity_magnitude = float('nan')

Note

The velocity units are determined by the call to TopologicalSnapshot.calculate_plate_boundary_statistics().

property left_plate_velocity_obliquity

Obliquity (in radians) of velocity vector of the left plate (at the boundary point).

Type:

float

Note

Returns float('nan') if there is no plate (or network) to the left (when following the vertices of the shared sub-segment that the boundary point is located on).

Note

Returns zero if the left plate velocity magnitude is zero.

This is the angle of the left plate velocity vector relative to the boundary normal. It is in the range \([-\pi, \pi]\) with positive values representing clockwise angles (and negative representing counter-clockwise).

Since the boundary normal is to the left, an obliquity angle satisfying \(\lvert obliquity \rvert < \frac{\pi}{2}\) represents movement of the left plate away from the boundary and an angle satisfying \(\lvert obliquity \rvert > \frac{\pi}{2}\) represents movement towards the boundary.

property left_plate_velocity_orthogonal

Orthogonal component (in direction of boundary normal) of velocity vector of the left plate (at the boundary point).

Type:

float

Note

Returns float('nan') if there is no plate (or network) to the left (when following the vertices of the shared sub-segment that the boundary point is located on).

This is the equivalent of:

if plate_boundary_stat.left_plate_velocity:
    left_plate_velocity_orthogonal = (plate_boundary_stat.left_plate_velocity_magnitude *
                                      math.cos(plate_boundary_stat.left_plate_velocity_obliquity))
else:
    left_plate_velocity_orthogonal = float('nan')

Note

The velocity units are determined by the call to TopologicalSnapshot.calculate_plate_boundary_statistics().

property left_plate_velocity_parallel

Parallel component (in direction along boundary line) of velocity vector of the left plate (at the boundary point).

Type:

float

Note

Returns float('nan') if there is no plate (or network) to the left (when following the vertices of the shared sub-segment that the boundary point is located on).

This is the equivalent of:

if plate_boundary_stat.left_plate_velocity:
    left_plate_velocity_parallel = (plate_boundary_stat.left_plate_velocity_magnitude *
                                    math.sin(plate_boundary_stat.left_plate_velocity_obliquity))
else:
    left_plate_velocity_parallel = float('nan')

Note

The velocity units are determined by the call to TopologicalSnapshot.calculate_plate_boundary_statistics().

property right_plate

The right plate (at the boundary point).

Type:

TopologyPointLocation

Note

TopologyPointLocation.not_located_in_resolved_topology() will return True if there is no plate (or network) to the right (when following the vertices of the shared sub-segment that the boundary point is located on).

To get the polygon boundary of the right resolved topological plate or network (or None if neither):

right_plate = plate_boundary_stat.right_plate
if right_plate.located_in_resolved_boundary():
    right_topology_boundary = right_plate.located_in_resolved_boundary().get_resolved_boundary()
elif right_plate.located_in_resolved_network():
    right_topology_boundary = right_plate.located_in_resolved_network().get_resolved_boundary()
else:
    right_topology_boundary = None

If both a right plate and a right network share the plate boundary (at the boundary point) then the network is returned. This is because a network typically overlays its underlying plate. The same applies if there are multiple right plates and a single overlayed right network. However, if there are multiple overlaying right networks then it is undefined which network is returned (the topological model was likely constructed incorrectly in this case). Furthermore, if a right plate shares the plate boundary but an overlaying network does not (eg, the network crosses the plate boundary rather than sharing a boundary with it) then the right plate is returned (the network is not discovered in this case).

See also

left_plate

property right_plate_strain_rate

Strain rate of the right plate (at the boundary point).

Type:

StrainRate

Returns pygplates.StrainRate.zero (no deformation) if there’s no right deforming network (eg, there’s just a rigid plate with no deforming network overlaid on top) or if boundary point is inside an interior rigid block of the right deforming network. See right_plate for details on how the right plate is determined.

property right_plate_velocity

Velocity vector of the right plate (at the boundary point).

Type:

Vector3D or None

Returns None if there is no plate (or network) to the right (when following the vertices of the shared sub-segment that the boundary point is located on). See right_plate for details on how the right plate is determined.

Note

The velocity units are determined by the call to TopologicalSnapshot.calculate_plate_boundary_statistics().

property right_plate_velocity_magnitude

Magnitude of velocity vector of the right plate (at the boundary point).

Type:

float

Note

Returns float('nan') if there is no plate (or network) to the right (when following the vertices of the shared sub-segment that the boundary point is located on).

This is the equivalent of:

if plate_boundary_stat.right_plate_velocity:
    right_plate_velocity_magnitude = plate_boundary_stat.right_plate_velocity.get_magnitude()
else:
    right_plate_velocity_magnitude = float('nan')

Note

The velocity units are determined by the call to TopologicalSnapshot.calculate_plate_boundary_statistics().

property right_plate_velocity_obliquity

Obliquity (in radians) of velocity vector of the right plate (at the boundary point).

Type:

float

Note

Returns float('nan') if there is no plate (or network) to the right (when following the vertices of the shared sub-segment that the boundary point is located on).

Note

Returns zero if the right plate velocity magnitude is zero.

This is the angle of the right plate velocity vector relative to the boundary normal. It is in the range \([-\pi, \pi]\) with positive values representing clockwise angles (and negative representing counter-clockwise).

Since the boundary normal is to the left, an obliquity angle satisfying \(\lvert obliquity \rvert < \frac{\pi}{2}\) represents movement of the right plate towards the boundary and an angle satisfying \(\lvert obliquity \rvert > \frac{\pi}{2}\) represents movement away from the boundary.

property right_plate_velocity_orthogonal

Orthogonal component (in direction of boundary normal) of velocity vector of the right plate (at the boundary point).

Type:

float

Note

Returns float('nan') if there is no plate (or network) to the right (when following the vertices of the shared sub-segment that the boundary point is located on).

This is the equivalent of:

if plate_boundary_stat.right_plate_velocity:
    right_plate_velocity_orthogonal = (plate_boundary_stat.right_plate_velocity_magnitude *
                                       math.cos(plate_boundary_stat.right_plate_velocity_obliquity))
else:
    right_plate_velocity_orthogonal = float('nan')

Note

The velocity units are determined by the call to TopologicalSnapshot.calculate_plate_boundary_statistics().

property right_plate_velocity_parallel

Parallel component (in direction along boundary line) of velocity vector of the right plate (at the boundary point).

Type:

float

Note

Returns float('nan') if there is no plate (or network) to the right (when following the vertices of the shared sub-segment that the boundary point is located on).

This is the equivalent of:

if plate_boundary_stat.right_plate_velocity:
    right_plate_velocity_parallel = (plate_boundary_stat.right_plate_velocity_magnitude *
                                     math.sin(plate_boundary_stat.right_plate_velocity_obliquity))
else:
    right_plate_velocity_parallel = float('nan')

Note

The velocity units are determined by the call to TopologicalSnapshot.calculate_plate_boundary_statistics().

property signed_distance_from_start_of_topological_section

Signed distance (in radians) from the start of the resolved topological section geometry.

Type:

float

This distance is signed because it is negative if the boundary point is on a rubber-band part of a plate boundary. That is, it’s not on the actual resolved topological section geometry itself but on the rubber band that joins the start of the resolved topological section geometry with the start or end of an adjacent resolved topological section (of that plate boundary). Rubber banding happens when two adjacent topological sections fail to intersect each other. It’s usually the result of an error in the creation of the topological model, but can happen if points (instead of lines) are directly added to plate boundaries (typically points are first added to topological lines which are then, in turn, added to plate boundaries).

To see if the boundary point is on a rubber band:

is_on_rubber_band = (plate_boundary_stat.signed_distance_from_start_of_topological_section < 0 ||
                     plate_boundary_stat.signed_distance_to_end_of_topological_section < 0)
property signed_distance_to_end_of_topological_section

Signed distance (in radians) to the end of the resolved topological section geometry.

Type:

float

This distance is signed because it is negative if the boundary point is on a rubber-band part of a plate boundary. That is, it’s not on the actual resolved topological section geometry itself but on the rubber band that joins the end of the resolved topological section geometry with the start or end of an adjacent resolved topological section (of that plate boundary). Rubber banding happens when two adjacent topological sections fail to intersect each other. It’s usually the result of an error in the creation of the topological model, but can happen if points (instead of lines) are directly added to plate boundaries (typically points are first added to topological lines which are then, in turn, added to plate boundaries).

To see if the boundary point is on a rubber band:

is_on_rubber_band = (plate_boundary_stat.signed_distance_from_start_of_topological_section < 0 ||
                     plate_boundary_stat.signed_distance_to_end_of_topological_section < 0)