[geos-commits] [SCM] GEOS branch main updated. b50bb516081b9c3193fbc8001c08493d275f8fa2
git at osgeo.org
git at osgeo.org
Thu Jul 9 11:12:51 PDT 2026
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GEOS".
The branch, main has been updated
via b50bb516081b9c3193fbc8001c08493d275f8fa2 (commit)
from 7dfd43b6b5ab718abfc4ebee79834b27eb4bd9b1 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit b50bb516081b9c3193fbc8001c08493d275f8fa2
Author: Paul Ramsey <pramsey at cleverelephant.ca>
Date: Thu Jul 9 11:12:05 2026 -0700
Add in Curve geometry info to WKB section
Closes #1472
diff --git a/web/content/specifications/wkb.md b/web/content/specifications/wkb.md
index 048f96794..57c5ee024 100644
--- a/web/content/specifications/wkb.md
+++ b/web/content/specifications/wkb.md
@@ -85,18 +85,23 @@ with each ordinate value set to an IEEE-754 quiet NaN value
GEOS only supports the seven original simple features geometry types.
```
-enum wkbGeometryType {
+enum wkbType {
wkbPoint = 1,
wkbLineString = 2,
wkbPolygon = 3,
wkbMultiPoint = 4,
wkbMultiLineString = 5,
wkbMultiPolygon = 6,
- wkbGeometryCollection = 7
+ wkbGeometryCollection = 7,
+ wkbCircularString = 8,
+ wkbCompoundCurve = 9,
+ wkbCurvePolygon = 10,
+ wkbMultiCurve = 11,
+ wkbMultiSurface = 12
};
```
-Other systems (eg PostGIS) support a wider range of types (for example, CircularString, CurvePolygon), and hence more geometry type numbers, but GEOS is currently unable to consume those geometries.
+Other systems (eg PostGIS) support a wider range of types (for example, PolyhedralSurface, TIN), and hence even more geometry type numbers, but GEOS is cannot consume those geometries.
```
WKBPoint {
@@ -133,7 +138,7 @@ WKBMultiLineString {
WKBLineString WKBLineStrings[numWkbLineStrings];
}
-wkbMultiPolygon {
+WKBMultiPolygon {
byte byteOrder;
uint32 wkbType; // 6
uint32 numWkbPolygons;
@@ -158,8 +163,59 @@ WKBGeometryCollection {
uint32 numWkbGeometries;
WKBGeometry wkbGeometries[numWkbGeometries];
}
+
+WKBCurve {
+ union {
+ WKBLineString linestring;
+ WKBCircularString circstring;
+ WKBCompoundCurve compound;
+ }
+}
+
+WKBCircularString {
+ byte byteOrder;
+ uint32 wkbType; // 8
+ uint32 numPoints;
+ Point points[numPoints];
+}
+
+WKBCompoundCurve {
+ byte byteOrder;
+ uint32 wkbType; // 9
+ uint32 numCurves;
+ WKBCurve curves[numCurves]; // start/end points must match
+}
+
+WKBCurvePolygon {
+ byte byteOrder;
+ uint32 wkbType; // 10
+ uint32 numRings;
+ WKBCurve rings[numRings]; // rings must be closed
+}
+
+WKBSurface {
+ union {
+ WKBPolygon polygon;
+ WKBCurvePolygon curvepoly;
+ }
+}
+
+WKBMultiCurve {
+ byte byteOrder;
+ uint32 wkbType; // 11
+ uint32 numCurves;
+ WKBCurve curves[numCurves];
+}
+
+WKBMultiSurface {
+ byte byteOrder;
+ uint32 wkbType; // 12
+ uint32 numSurfaces;
+ WKBSurface surfaces[numSurfaces];
+}
```
+
### Example
The following bytes (in hex) make up the WKB for a `LINESTRING(0 0, 1 1, 2 1)`:
-----------------------------------------------------------------------
Summary of changes:
web/content/specifications/wkb.md | 64 ++++++++++++++++++++++++++++++++++++---
1 file changed, 60 insertions(+), 4 deletions(-)
hooks/post-receive
--
GEOS
More information about the geos-commits
mailing list