vibespatial.kernels.constructive¶
Submodules¶
- vibespatial.kernels.constructive.clip_rect
- vibespatial.kernels.constructive.extract_unique_points
- vibespatial.kernels.constructive.grouped_mixed_union
- vibespatial.kernels.constructive.line_merge
- vibespatial.kernels.constructive.make_valid
- vibespatial.kernels.constructive.nonpolygon_binary
- vibespatial.kernels.constructive.nonpolygon_binary_source
- vibespatial.kernels.constructive.polygon_difference
- vibespatial.kernels.constructive.polygon_intersection
- vibespatial.kernels.constructive.polygon_intersection_source
- vibespatial.kernels.constructive.polygon_rect_intersection
- vibespatial.kernels.constructive.polygon_simple_intersection
- vibespatial.kernels.constructive.segmented_union
- vibespatial.kernels.constructive.shortest_line
- vibespatial.kernels.constructive.stroke
Functions¶
MultiPoint-Polygon difference with device-resident point selection. |
|
MultiPoint-Polygon intersection with device-resident point selection. |
|
|
|
|
|
|
Classify aligned segment relations and assemble exact mixed results. |
Subtract aligned polygonal rows through shared split topology. |
|
|
Intersect aligned lineal and polygonal rows through shared topology. |
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.multipoint_polygon_difference(multipoints: vibespatial.geometry.owned.OwnedGeometryArray, polygons: vibespatial.geometry.owned.OwnedGeometryArray) vibespatial.geometry.owned.OwnedGeometryArray¶
MultiPoint-Polygon difference with device-resident point selection.
- vibespatial.kernels.constructive.multipoint_polygon_intersection(multipoints: vibespatial.geometry.owned.OwnedGeometryArray, polygons: vibespatial.geometry.owned.OwnedGeometryArray) vibespatial.geometry.owned.OwnedGeometryArray¶
MultiPoint-Polygon intersection with device-resident point selection.
- 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_native(left: vibespatial.geometry.owned.OwnedGeometryArray, right: vibespatial.geometry.owned.OwnedGeometryArray, *, crs=None)¶
Classify aligned segment relations and assemble exact mixed results.
Physical shape: same-row segment candidate pages become point and overlap capacities. Points are deduplicated by output row, overlap spans are noded and deduplicated as atomic lines, and points covered by those lines are removed. Mixed rows remain a native geometry composition until export.
- vibespatial.kernels.constructive.linestring_polygon_difference(linestrings: vibespatial.geometry.owned.OwnedGeometryArray, polygons: vibespatial.geometry.owned.OwnedGeometryArray) vibespatial.geometry.owned.OwnedGeometryArray | None¶
Subtract aligned polygonal rows through shared split topology.
- vibespatial.kernels.constructive.linestring_polygon_intersection(linestrings: vibespatial.geometry.owned.OwnedGeometryArray, polygons: vibespatial.geometry.owned.OwnedGeometryArray, *, crs=None)¶
Intersect aligned lineal and polygonal rows through shared topology.
- 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.polygon_rect_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¶
- vibespatial.kernels.constructive.segmented_union_all(geometries: vibespatial.geometry.owned.OwnedGeometryArray, group_offsets: Any, *, 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¶