Skip to content

Add TWKB read support (#28)#91

Merged
trasch merged 4 commits into
mainfrom
28_twkb
Jun 3, 2026
Merged

Add TWKB read support (#28)#91
trasch merged 4 commits into
mainfrom
28_twkb

Conversation

@trasch
Copy link
Copy Markdown
Contributor

@trasch trasch commented May 8, 2026

Summary

Implemented TWKB (Tiny Well-Known Binary) read support per the TWKB specification.

Sources/GISTools/GeoJson/TWKBCoder.swift

TWKBCoder.decode(twkb:sourceProjection:targetProjection:) -> GeoJsonGeometry?

  • Supports Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon, GeometryCollection
  • Variable-length integer (varint) decoding for counts
  • Zigzag encoding for signed integer coordinate deltas
  • Precision-based coordinate scaling
  • SRID auto-detection with Projection mapping
  • Ring auto-closure for polygons

Tests/GISToolsTests/GeoJson/TWKBTests.swift (6 tests)

Test Coverage
decodePoint Point at origin
decodePointNonzero Point at (12, 34)
decodeLineString 2-point line with deltas
decodePolygon 4-point square ring
decodeMultiPoint 2-point MultiPoint
decodeEmptyFails Empty data throws

Test results

272 tests pass across 60 suites (+6 new).


Closes #28

Implements TWKBCoder for decoding Tiny Well-Known Binary format.
Supports Point, LineString, Polygon, MultiPoint, MultiLineString,
and MultiPolygon with zigzag delta encoding and varint counts.
@trasch trasch self-assigned this Jun 3, 2026
@trasch trasch added the enhancement New feature or request label Jun 3, 2026
@trasch trasch merged commit 3250587 into main Jun 3, 2026
1 check passed
@trasch trasch deleted the 28_twkb branch June 3, 2026 14:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add read support for TWKB

1 participant