WKB - Well-Known Binary
Well-Known Binary (WKB) is a binary version of Well-known Text
Overview
Well-known binary (WKB) representations are typically shown in hexadecimal strings.
Variations
- EKWB - Adds spatial reference systems
- TWKB
Alternatives
- WKT
- GeoJSON Geometry
- GML Geometry
Format | Support | Description |
---|---|---|
WKB | ❌ | |
TWKB | ❌ | WKB variant reduces binary size ~2x. |
TWKB uses varints, precision truncation and zigzag point encoding to reduce binary size ~2x (however compressed size reduction is less)
Version History
TBA.
Ecosystem Support
- PostGIS offers a function to return geometries in TWKB format: ST_AsTWKB.
Format Details
The first byte indicates the byte order for the data:
- 00 : big endian
- 01 : little endian
The next 4 bytes are a 32-bit unsigned integer for the geometry type, as described below:
Type | Supported | 2D | Z | M | ZM |
---|---|---|---|---|---|
Geometry | ✅ | 0000 | 1000 | 2000 | 3000 |
Point | ✅ | 0001 | 1001 | 2001 | 3001 |
LineString | ✅ | 0002 | 1002 | 2002 | 3002 |
Polygon | ✅ | 0003 | 1003 | 2003 | 3003 |
MultiPoint | ✅ | 0004 | 1004 | 2004 | 3004 |
MultiLineString | ✅ | 0005 | 1005 | 2005 | 3005 |
MultiPolygon | ✅ | 0006 | 1006 | 2006 | 3006 |
GeometryCollection | ✅ * | 0007 | 1007 | 2007 | 3007 |
CircularString | ❌ | 0008 | 1008 | 2008 | 3008 |
CompoundCurve | ❌ | 0009 | 1009 | 2009 | 3009 |
CurvePolygon | ❌ | 0010 | 1010 | 2010 | 3010 |
MultiCurve | ❌ | 0011 | 1011 | 2011 | 3011 |
MultiSurface | ❌ | 0012 | 1012 | 2012 | 3012 |
Curve | ❌ | 0013 | 1013 | 2013 | 3013 |
Surface | ❌ | 0014 | 1014 | 2014 | 3014 |
PolyhedralSurface | ❌ | 0015 | 1015 | 2015 | 3015 |
TIN | ❌ | 0016 | 1016 | 2016 | 3016 |
Triangle | ❌ | 0017 | 1017 | 2017 | 3017 |
Circle | ❌ | 0018 | 1018 | 2018 | 3018 |
GeodesicString | ❌ | 0019 | 1019 | 2019 | 3019 |
EllipticalCurve | ❌ | 0020 | 1020 | 2020 | 3020 |
NurbsCurve | ❌ | 0021 | 1021 | 2021 | 3021 |
Clothoid | ❌ | 0022 | 1022 | 2022 | 3022 |
SpiralCurve | ❌ | 0023 | 1023 | 2023 | 3023 |
CompoundSurface | ❌ | 0024 | 1024 | 2024 | 3024 |
BrepSolid | ❌ | 1025 | |||
AffinePlacement | ❌ | 102 | 1102 |
Remarks:
- Many implementations, including loaders.gl, only handle the core GeoJSON geometry equivalents (points, line strings, polygons and to a varying degrees geometry collections of the same).
GeometryCollection
can be difficult for some clients to handle.