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 adict
).Added in version 0.47.
- __init__()
Raises an exception This class cannot be instantiated from Python
Methods
Raises an exception This class cannot be instantiated from Python
Attributes
Length (in radians) subtended on the plate boundary (at the
boundary point
).Normal to the plate boundary (at the
boundary point
).Clockwise (East-wise) angle in radians (in the range \([0, 2\pi]\)) from North to the
plate boundary normal
(at theboundary point
).Position of the point on a plate boundary.
Velocity vector of the plate boundary (at the
boundary point
).Magnitude of velocity vector of the plate boundary (at the
boundary point
).Obliquity (in radians) of velocity vector of the plate boundary (at the
boundary point
).Orthogonal component (in direction of boundary normal) of velocity vector of the plate boundary (at the
boundary point
).Parallel component (in direction along boundary line) of velocity vector of the plate boundary (at the
boundary point
).Convergence velocity vector (at the
boundary point
).Magnitude of convergence velocity vector (at the
boundary point
).Obliquity (in radians) of the convergence velocity vector (at the
boundary point
).Orthogonal component (in direction of boundary normal) of convergence velocity vector (at the v).
Parallel component (in direction along boundary line) of convergence velocity vector (at the
boundary point
).Signed magnitude of convergence velocity vector (at the
boundary point
).Distance (in radians) from the start of the shared sub-segment geometry.
Distance (in radians) from the start of the resolved topological section geometry.
Distance (in radians) to the end of the shared sub-segment geometry.
Distance (in radians) to the end of the resolved topological section geometry.
The left plate (at the
boundary point
).Strain rate of the left plate (at the
boundary point
).Velocity vector of the left plate (at the
boundary point
).Magnitude of velocity vector of the left plate (at the
boundary point
).Obliquity (in radians) of velocity vector of the left plate (at the
boundary point
).Orthogonal component (in direction of boundary normal) of velocity vector of the left plate (at the
boundary point
).Parallel component (in direction along boundary line) of velocity vector of the left plate (at the
boundary point
).The right plate (at the
boundary point
).Strain rate of the right plate (at the
boundary point
).Velocity vector of the right plate (at the
boundary point
).Magnitude of velocity vector of the right plate (at the
boundary point
).Obliquity (in radians) of velocity vector of the right plate (at the
boundary point
).Orthogonal component (in direction of boundary normal) of velocity vector of the right plate (at the
boundary point
).Parallel component (in direction along boundary line) of velocity vector of the right plate (at the
boundary point
).Signed distance (in radians) from the start of the resolved topological section geometry.
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
See also
- property boundary_normal
Normal to the plate boundary (at the
boundary point
).- Type:
Note
This is the unit-length normal of the
great circle arc
segment (that theboundary point
is located on). And, as such, the normal is to the left of the segment (when following the vertices of theshared sub-segment
that theboundary point
is located on).See also
- property boundary_normal_azimuth
Clockwise (East-wise) angle in radians (in the range \([0, 2\pi]\)) from North to the
plate boundary normal
(at theboundary 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
- property boundary_point
Position of the point on a plate boundary.
- Type:
See also
- property boundary_velocity
Velocity vector of the plate boundary (at the
boundary point
).- Type:
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 theboundary point
.See also
- 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()
.See also
- 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 theboundary 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.See also
- 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()
.See also
- 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()
.See also
- property convergence_velocity
Convergence velocity vector (at the
boundary point
).- Type:
Vector3D
orNone
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 theshared sub-segment
that theboundary point
is located on).Note
The velocity units are determined by the call to
TopologicalSnapshot.calculate_plate_boundary_statistics()
.See also
- 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 theshared sub-segment
that theboundary point
is located on).Note
Returns zero if the
convergence velocity
haszero 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 theshared sub-segment
that theboundary 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 theboundary 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 theconvergence 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.See also
- 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 theshared sub-segment
that theboundary 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()
.See also
- 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 theshared sub-segment
that theboundary 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()
.See also
- 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 theshared sub-segment
that theboundary point
is located on).Note
Returns zero if the
convergence velocity
haszero 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()
.See also
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 itsshared 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 theboundary point
is on a rubber-band part of a plate boundary (where it’ll be positive here and negative there).
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 itsshared 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 theboundary 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:
Note
TopologyPointLocation.not_located_in_resolved_topology()
will returnTrue
if there is no plate (or network) to the left (when following the vertices of theshared sub-segment
that theboundary point
is located on).To get the polygon boundary of the left resolved topological
plate
ornetwork
(orNone
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 leftnetwork
share the plate boundary (at theboundary point
) then thenetwork
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
- property left_plate_strain_rate
Strain rate of the left plate (at the
boundary point
).- Type:
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 ifboundary point
is inside an interior rigid block of the left deforming network. Seeleft_plate
for details on how the left plate is determined.See also
- property left_plate_velocity
Velocity vector of the left plate (at the
boundary point
).- Type:
Vector3D
orNone
Returns
None
if there is no plate (or network) to the left (when following the vertices of theshared sub-segment
that theboundary point
is located on). Seeleft_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()
.See also
- 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 theshared sub-segment
that theboundary 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()
.See also
- 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 theshared sub-segment
that theboundary 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 theboundary 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.See also
- 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 theshared sub-segment
that theboundary 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()
.See also
- 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 theshared sub-segment
that theboundary 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()
.See also
- property right_plate
The right plate (at the
boundary point
).- Type:
Note
TopologyPointLocation.not_located_in_resolved_topology()
will returnTrue
if there is no plate (or network) to the right (when following the vertices of theshared sub-segment
that theboundary point
is located on).To get the polygon boundary of the right resolved topological
plate
ornetwork
(orNone
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 rightnetwork
share the plate boundary (at theboundary point
) then thenetwork
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
- property right_plate_strain_rate
Strain rate of the right plate (at the
boundary point
).- Type:
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 ifboundary point
is inside an interior rigid block of the right deforming network. Seeright_plate
for details on how the right plate is determined.See also
- property right_plate_velocity
Velocity vector of the right plate (at the
boundary point
).- Type:
Vector3D
orNone
Returns
None
if there is no plate (or network) to the right (when following the vertices of theshared sub-segment
that theboundary point
is located on). Seeright_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()
.See also
- 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 theshared sub-segment
that theboundary 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()
.See also
- 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 theshared sub-segment
that theboundary 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 theboundary 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.See also
- 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 theshared sub-segment
that theboundary 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()
.See also
- 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 theshared sub-segment
that theboundary 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()
.See also
- 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 actualresolved 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 totopological 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 actualresolved 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 totopological 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)