vibespatial.kernels.constructive¶
Submodules¶
- vibespatial.kernels.constructive.clip_rect
- vibespatial.kernels.constructive.make_valid
- vibespatial.kernels.constructive.nonpolygon_binary
- vibespatial.kernels.constructive.polygon_difference
- vibespatial.kernels.constructive.polygon_intersection
- vibespatial.kernels.constructive.segmented_union
- vibespatial.kernels.constructive.stroke
Functions¶
|
|
|
|
LineString-LineString intersection: find intersection points. |
|
LineString-Polygon difference: clip line to outside of polygon. |
|
LineString-Polygon intersection: clip line to inside of polygon. |
|
MultiPoint-Polygon difference: keep points outside polygon. |
|
MultiPoint-Polygon intersection: keep points inside polygon. |
|
Point-LineString difference: keep points that do NOT lie on the linestring. |
|
Point-LineString intersection: keep points that lie on the linestring. |
|
Point-Point difference: keep rows where coordinates differ. |
|
Point-Point intersection: keep rows where coordinates match. |
|
Point-Point symmetric_difference: keep if only one side has a point. |
|
|
Point-Point union: keep all unique coordinates. |
|
Element-wise polygon difference: left - right. |
|
Element-wise polygon intersection of two OwnedGeometryArrays. |
|
Union all geometries within each group. Returns one geometry per group. |
|
|
|
Package Contents¶
- vibespatial.kernels.constructive.clip_by_rect_kernel(values: ClipInput, xmin: float, ymin: float, xmax: float, ymax: float, *, dispatch_mode: vibespatial.runtime.ExecutionMode | str = ExecutionMode.AUTO, precision: vibespatial.runtime.precision.PrecisionMode | str = PrecisionMode.AUTO) vibespatial.constructive.clip_rect.RectClipResult¶
- vibespatial.kernels.constructive.make_valid_kernel(values: MakeValidInput, *, method: str = 'linework', keep_collapsed: bool = True) vibespatial.constructive.make_valid_pipeline.MakeValidResult¶
- vibespatial.kernels.constructive.linestring_linestring_intersection(left: vibespatial.geometry.owned.OwnedGeometryArray, right: vibespatial.geometry.owned.OwnedGeometryArray) vibespatial.geometry.owned.OwnedGeometryArray¶
LineString-LineString intersection: find intersection points.
Returns a Point or MultiPoint per row depending on intersection count. Uses two-pass count-scatter NVRTC kernels (Tier 1).
- vibespatial.kernels.constructive.linestring_polygon_difference(linestrings: vibespatial.geometry.owned.OwnedGeometryArray, polygons: vibespatial.geometry.owned.OwnedGeometryArray) vibespatial.geometry.owned.OwnedGeometryArray¶
LineString-Polygon difference: clip line to outside of polygon.
- vibespatial.kernels.constructive.linestring_polygon_intersection(linestrings: vibespatial.geometry.owned.OwnedGeometryArray, polygons: vibespatial.geometry.owned.OwnedGeometryArray) vibespatial.geometry.owned.OwnedGeometryArray¶
LineString-Polygon intersection: clip line to inside of polygon.
- vibespatial.kernels.constructive.multipoint_polygon_difference(multipoints: vibespatial.geometry.owned.OwnedGeometryArray, polygons: vibespatial.geometry.owned.OwnedGeometryArray) vibespatial.geometry.owned.OwnedGeometryArray¶
MultiPoint-Polygon difference: keep points outside polygon.
All validity/offset reads are bulk D2H transfers (no per-element .get() in loops).
- vibespatial.kernels.constructive.multipoint_polygon_intersection(multipoints: vibespatial.geometry.owned.OwnedGeometryArray, polygons: vibespatial.geometry.owned.OwnedGeometryArray) vibespatial.geometry.owned.OwnedGeometryArray¶
MultiPoint-Polygon intersection: keep points inside polygon.
Uses the PIP kernel on exploded points, then compacts and rebuilds MultiPoint offsets. All validity/offset reads are bulk D2H transfers (no per-element .get() in loops).
- vibespatial.kernels.constructive.point_linestring_difference(points: vibespatial.geometry.owned.OwnedGeometryArray, linestrings: vibespatial.geometry.owned.OwnedGeometryArray) vibespatial.geometry.owned.OwnedGeometryArray¶
Point-LineString difference: keep points that do NOT lie on the linestring.
- vibespatial.kernels.constructive.point_linestring_intersection(points: vibespatial.geometry.owned.OwnedGeometryArray, linestrings: vibespatial.geometry.owned.OwnedGeometryArray) vibespatial.geometry.owned.OwnedGeometryArray¶
Point-LineString intersection: keep points that lie on the linestring.
- vibespatial.kernels.constructive.point_point_difference(left: vibespatial.geometry.owned.OwnedGeometryArray, right: vibespatial.geometry.owned.OwnedGeometryArray) vibespatial.geometry.owned.OwnedGeometryArray¶
Point-Point difference: keep rows where coordinates differ.
difference(a, b) = a where a != b, NULL where a == b. If right is NULL, keep left. If left is NULL, result is NULL.
- vibespatial.kernels.constructive.point_point_intersection(left: vibespatial.geometry.owned.OwnedGeometryArray, right: vibespatial.geometry.owned.OwnedGeometryArray) vibespatial.geometry.owned.OwnedGeometryArray¶
Point-Point intersection: keep rows where coordinates match.
Uses CuPy element-wise comparison (Tier 2). Returns device-resident OwnedGeometryArray.
- vibespatial.kernels.constructive.point_point_symmetric_difference(left: vibespatial.geometry.owned.OwnedGeometryArray, right: vibespatial.geometry.owned.OwnedGeometryArray) vibespatial.geometry.owned.OwnedGeometryArray¶
Point-Point symmetric_difference: keep if only one side has a point.
If coordinates match, result is NULL (empty). If coordinates differ, result is MultiPoint with both. If only one valid, result is that point.
- vibespatial.kernels.constructive.point_point_union(left: vibespatial.geometry.owned.OwnedGeometryArray, right: vibespatial.geometry.owned.OwnedGeometryArray) vibespatial.geometry.owned.OwnedGeometryArray¶
Point-Point union: keep all unique coordinates.
For element-wise union of two Point arrays, the result per row is: - If both are the same point -> the point (as Point) - If both are different -> MultiPoint with both - If only one is valid -> that point - If neither is valid -> NULL
For simplicity and to maintain consistent output type per row, we output MultiPoints. Rows with a single point get a MultiPoint with 1 point. Rows with matching points get a MultiPoint with 1 point.
- vibespatial.kernels.constructive.polygon_difference(left: vibespatial.geometry.owned.OwnedGeometryArray, right: vibespatial.geometry.owned.OwnedGeometryArray, *, dispatch_mode: vibespatial.runtime.ExecutionMode | str = ExecutionMode.AUTO, precision: vibespatial.runtime.precision.PrecisionMode | str = PrecisionMode.AUTO) vibespatial.geometry.owned.OwnedGeometryArray¶
Element-wise polygon difference: left - right.
Computes the geometric difference of aligned polygon/multipolygon arrays. When both inputs are polygonal and GPU is available, executes the full overlay topology pipeline on GPU. Falls back to Shapely for non-polygonal inputs or when GPU is unavailable.
Parameters¶
- leftOwnedGeometryArray
Left geometry array (the “base” polygons).
- rightOwnedGeometryArray
Right geometry array (the polygons to subtract).
- dispatch_modeExecutionMode or str, default AUTO
Execution mode hint.
- precisionPrecisionMode or str, default AUTO
Precision mode. CONSTRUCTIVE kernels stay fp64 per ADR-0002; the plan is computed for observability only.
Returns¶
- OwnedGeometryArray
Result geometries. May contain MultiPolygon when the difference splits a polygon. Empty geometry when left is fully inside right. Original left geometry when there is no overlap.
Raises¶
- ValueError
If row counts do not match.
- vibespatial.kernels.constructive.polygon_intersection(left: vibespatial.geometry.owned.OwnedGeometryArray, right: vibespatial.geometry.owned.OwnedGeometryArray, *, dispatch_mode: vibespatial.runtime.ExecutionMode | str = ExecutionMode.AUTO, precision: vibespatial.runtime.precision.PrecisionMode | str = PrecisionMode.AUTO) vibespatial.geometry.owned.OwnedGeometryArray¶
Element-wise polygon intersection of two OwnedGeometryArrays.
Parameters¶
- left, rightOwnedGeometryArray
Input polygon arrays of equal length.
- dispatch_modeExecutionMode or str, default AUTO
Execution mode hint (GPU/CPU/AUTO).
- precisionPrecisionMode or str, default AUTO
Precision mode. CONSTRUCTIVE kernels stay fp64 per ADR-0002.
Returns¶
- OwnedGeometryArray
Device-resident result when GPU path is taken; host-resident when CPU fallback is used.
- vibespatial.kernels.constructive.segmented_union_all(geometries: vibespatial.geometry.owned.OwnedGeometryArray, group_offsets: numpy.ndarray, *, dispatch_mode: vibespatial.runtime.ExecutionMode | str = ExecutionMode.AUTO, precision: vibespatial.runtime.precision.PrecisionMode | str = PrecisionMode.AUTO) vibespatial.geometry.owned.OwnedGeometryArray¶
Union all geometries within each group. Returns one geometry per group.
Parameters¶
- geometriesOwnedGeometryArray
Input polygons (device- or host-resident).
- group_offsetsarray-like
CSR-style int32/int64 offsets. Group i contains
geometries[group_offsets[i]:group_offsets[i+1]]. Length isn_groups + 1.- dispatch_modeExecutionMode or str
Execution mode hint (AUTO, GPU, CPU).
- precisionPrecisionMode or str
Precision mode. CONSTRUCTIVE kernels stay fp64 per ADR-0002.
Returns¶
- OwnedGeometryArray
One geometry per group. May contain MultiPolygon when union produces disconnected regions. Empty groups produce empty Polygon.
- vibespatial.kernels.constructive.offset_curve_kernel(values: StrokeInput, distance, *, quad_segs: int = 8, join_style: str = 'round', mitre_limit: float = 5.0) vibespatial.constructive.stroke.OffsetCurveKernelResult¶
- vibespatial.kernels.constructive.point_buffer_kernel(values: StrokeInput, distance, *, quad_segs: int = 16) vibespatial.constructive.stroke.BufferKernelResult¶