You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@sedona.apache.org by "jiayuasu (via GitHub)" <gi...@apache.org> on 2026/05/08 05:54:13 UTC

[I] Add Box3D type and 3D bbox SQL surface [sedona]

jiayuasu opened a new issue, #2928:
URL: https://github.com/apache/sedona/issues/2928

   Follow-up to the Phase 1 Box2D epic (#2877).
   
   ## Scope
   
   Add `Box3D` as a separate value type alongside `Box2D`, mirroring PostGIS's `box3d`. Phase 1 deliberately split the types rather than unifying via optional Z fields (rationale captured in #2877 — storage cost on `ST_Extent`, GeoParquet 1.1 covering being 2D-only, static dispatch on `ST_Area` vs `ST_Volume`). When a concrete user lands (point clouds, BIM, voxel data), this issue tracks the 3D variant.
   
   ## Type
   
   `Box3DUDT` is a struct-backed UDT with `sqlType = struct<xmin, ymin, zmin, xmax, ymax, zmax: double>` (all non-nullable). Same NULL-for-absent semantics as `Box2D`. `xmin > xmax` ordering remains reserved for future antimeridian semantics on geography 3D bboxes.
   
   ## SQL surface
   
   | Function | Signature | PostGIS counterpart |
   |---|---|---|
   | `ST_Box3D(geom)` | Geometry → Box3D | `Box3D(geometry)` |
   | `ST_3DMakeBox(p1, p2)` | (Point, Point) → Box3D | `ST_3DMakeBox` |
   | `ST_3DExtent(geom)` | aggregate Geometry → Box3D | `ST_3DExtent` |
   | `ST_ZMin / ZMax(box3d)` | Box3D → Double | accessor overloads |
   | `ST_XMin / XMax / YMin / YMax(box3d)` | Box3D → Double | accessor overloads |
   | `ST_GeomFromBox3D(box)` | Box3D → Polygon Z | inverse cast |
   | `ST_AsText(box3d)` | Box3D → 'BOX3D(x1 y1 z1, x2 y2 z2)' | text serializer |
   
   ## Cross-language
   
   Mirror to Python and Flink, same as the Phase 1 Box2D pattern (#2887, #2888).
   
   ## Out of scope
   
   - 4D / M-bounded boxes — not in PostGIS; skip until a real need.
   - 3D GeoParquet covering. The GeoParquet 1.1 covering spec supports `zmin`/`zmax` optionally; if/when a 3D covering writer ships, add Box3D awareness then. Tracked separately if that becomes a priority.
   
   ## Dependencies
   
   Foundation in #2878 is reusable as a template. The Phase 1 type infrastructure (UDT, Python type, Flink TypeSerializer, InferredExpression mappings) gives a clear path.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@sedona.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [I] Add Box3D type and 3D bbox SQL surface [sedona]

Posted by "jiayuasu (via GitHub)" <gi...@apache.org>.
jiayuasu closed issue #2928: Add Box3D type and 3D bbox SQL surface
URL: https://github.com/apache/sedona/issues/2928


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@sedona.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [I] Add Box3D type and 3D bbox SQL surface [sedona]

Posted by "jiayuasu (via GitHub)" <gi...@apache.org>.
jiayuasu commented on issue #2928:
URL: https://github.com/apache/sedona/issues/2928#issuecomment-4805702773

   This has been resolved.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@sedona.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org