[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