[Liblas-devel] Vertical Datum Developments

Frank Warmerdam warmerdam at pobox.com
Mon Sep 20 22:47:29 EDT 2010


I owe you all (and Howard and Mike in particular) a status report on my
vertical datum support efforts for liblas and other client libraries and

First, I will refer you to the RFC I wrote in the spring related to vertical
coordinate system support at:


That was implemented, but recently I have added some additional work, aiming
to actually support applying vertical datum shifts as part of a reprojection
operation with liblas (ie. las2las).

The key elements in this are:

1) PROJ.4 has been upgraded to support a +geoidgrids= parameter which can
reference one or more geoid files relating geoid heights to WGS84 ellipsoidal
heights.  These are used to transform back and forth to/from geoidal vertical
datums like NAVD88.

2) Some geoid files in the .gtx format have been assembled at the following
url, notably US files from NOAA suitable for use for NAVD88 and global
models from NGA suitable for approximating other geoidal coordinate systems
world wide.


3) Libgeotiff's EPSG to csv translation script was upgraded to capture some
information about EPSG vertical coordinate systems, and compound coordinate
systems (in vertcs.csv and compdcs.csv respectively).  The vertcs.csv includes
a column indicating what .gtx transformation files can be used to get from
a given vertical datum to WGS84 ellipsoidal. This has been forcably
populated for NAVD88 and "EGM96 Geoid Height".

4) GDAL/OGR's OGRSpatialReference object has been extended to support
importing vertical and compound coordinate systems with importFromEPSG().
A new EXTENSION node on the VERT_DATUM object can be used to list
geoid grid shift files.

5) GDAL/OGR's OGRSpatialReference::SetFromUserInput() method has been
extended to allow defining a compound coordinate system from any
EPSG vertical coordinate system and any (GCS or PCS) horizontal coordinate
system using the form EPSG:4326+5703 (WGS84 + NAVD88 in this case).

6) OGRSpatialReference's from and to PROJ.4 functions have been updated
to support the +geoidgrids= and corresponding WKT EXTENSION node.

7) The GeoTIFF to WKT translation code now uses definitions from vertcs.csv
when available which also picks up the geoid grid files.

8) liblas has been updated to use the latest geotiff translation code
and to ensure that "eCompoundOK" forms of WKT are used for translation
too and from proj.4 format so we get the geoidgrids.

As a result of the above, if you were to build liblas, GDAL, PROJ.4,
and perhaps libgeotiff from SVN "trunk" of each project, and ensure you
populated your PROJ.4 grid shift file directory (ie. /usr/local/share/proj)
with the appropriate grid shift files you could do:

   las2las -t_srs WGS84 srs_vertcs.las wgs84_ellipsoidal.las

and transform the sample srs_vertcs.las file from NAVD88 geoidal
heights to WGS84 with WGS84 ellipsoidal heights!  That may not seem
that exciting to you but for me it's a milestone.

I have a variety of cleanup, documentation, and validation to do,
but I feel the essentials of my project are now in place.   Testing
and feedback are welcome, though you might want to wait till I have
better documentation in place.

Best regards,
I set the clouds in motion - turn up   | Frank Warmerdam, warmerdam at pobox.com
light and sound - activate the windows | http://pobox.com/~warmerdam
and watch the world go round - Rush    | Geospatial Programmer for Rent

More information about the Liblas-devel mailing list