[gdal-dev] 2.5D vs Z in ogrConstants
Greg Troxel
gdt at lexort.com
Fri Jun 19 16:37:36 PDT 2026
tl;dr:
Why is "3D-ness" variantly written "25D" and "Z", in wkbPoint*
constants? Is this just a historical accident?
I just noticed ogrConstants for geometry types are not consistent. I
have always thought of (logically) Point as a base type, with the option
to add height, to add a measure field, or both. At first I thought this
was POINTZ, POINTM and POINTZM (as ogrinfo prints it), with "3D" and
"Measured" in the humanized description.
I then found out that wkbPoint25D was what one needed to use in python,
and didn't dig in, figuring that 2.5D was a 2D coordinate with a height
as attribute vs a point in 3 dimensional space, as a subtle
maybe-accurate maybe-off-base distinction, and I'd figure that out
later.
Today I wrote wkbPoint25DM and realized that was wrong and read the
python code installed at
/usr/pkg/lib/python3.13/site-packages/osgeo/ogr.py
which refers to likely C constants of the same names
wkbPoint = _ogr.wkbPoint
wkbPointM = _ogr.wkbPointM
wkbPointZM = _ogr.wkbPointZM
wkbPoint25D = _ogr.wkbPoint25D
But, a newer geometry type
wkbMultiCurve = _ogr.wkbMultiCurve
wkbMultiCurveZ = _ogr.wkbMultiCurveZ
wkbMultiCurveM = _ogr.wkbMultiCurveM
wkbMultiCurveZM = _ogr.wkbMultiCurveZM
just uses Z. The WKT wikipedia article uses "3D" and "2.5D"/"25D" do
not appear.
Why are the (presumably original) types "25D" instead of Z? Is this
meaningful, or just arbitrary naming?
Sorry if I should have figured this out from reading docs - I did try.
Really I'm asking if I'm failing to understand something I should
understand.
More information about the gdal-dev
mailing list