#6567 add support for writing GeoJSON with Z values - #6602
Open
xfischer wants to merge 1 commit into
Open
Conversation
Contributor
Author
|
@hiSandog thanks for the review! Both scenarios are now covered, and digging into them turned up a related bug beyond just missing test coverage:
Pushed as a new commit on top of the branch. |
Contributor
Author
|
Rebased to match main new file organisation |
Typed Write methods wrote the Z double when a Position had an altitude, but never set the HasZ flag on the EWKB type header, so 3D geometries were serialized with a 2D type tag. Set type |= EwkbGeometryType.HasZ using a "first coordinate decides" assumption to avoid walking the entire geojson tree for an exhaustive check. Extend the existing all-or-none Z consistency validation to MultiPoint/MultiLineString/MultiPolygon/GeometryCollection members, matching what PostGIS enforces server-side (it rejects mixed 2D/3D collections with "Dimensions mismatch in lwcollection"). Point, LineString, and Polygon already guarded intra-geometry consistency; composite types had no equivalent check across members, which could corrupt the EWKB since the reader assumes uniform dimensionality based on the outer flag. Adds tests covering the new guards and a Z-without-M round-trip case.
xfischer
force-pushed
the
feature/6567-geojson-writez
branch
from
July 20, 2026 12:21
6b1dcd3 to
42a4f93
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
As discussed in #6567
Original typed Write methods wrote the Z double when a Position had an altitude, but never set the HasZ flag on the EWKB type header.
So 3D geometries were serialized with a 2D type tag. This change sets type |= EwkbGeometryType.HasZ.
It's a "first coordinate decides" assumption, to avoid going over the entire geojson tree for exhaustive check.