[PROJ] Vertical Transformations?

Even Rouault even.rouault at spatialys.com
Wed Feb 20 08:15:40 PST 2019


> 1. Some transformations absolutely require a grid to work and should fail if
> the grid is not found.
> This behaviour is already in effect if grids are
> not prefixed by @’s in proj-strings. Determing which grids are optional can
> be difficult, but at least any grid that is used to change vertical datum
> from an ellipsoid to a local height system should fail (case in point, in
> Denmark that’s a ~40 m vertical offset)

The same could hold for the horizontal part where a missing grid might involve 
~ 100m horizontal error. The new coordinate operation "computation" module 
will return currently all potential coordinate operations, that is those using 
grids, Helmert transformation, constant offsets, etc. and also synthetic/dummy 
horizontal/vertical transformations. The sorting algorithm tries to sort first 
the more relevant ones given their accuracy and grid availability.

The concept of optional grid with @ is normally not emitted by the new 
computation module (except if you use the legacy nadgrids/geoidgrids terms by 
using a PROJ CRS string), as it considers coordinate operations using a grid 
or not as different coordinate operations

> 
> 2. For transformations with an optional grid usage, a warning should be
> issued stating
> “Grid xxx is missing, install proj-datumgrid-yyy package”.
> Grids not part of a proj-datumgrid package should be linked to if possible,
> otherwise give the user a friendly message saying that they are on their
> own.

The PROJ API has now a proj_coordoperation_is_instanciable(), 
proj_coordoperation_get_grid_used_count() and 
proj_coordoperation_get_grid_used() functions that can be used to know for a 
given coordinate operation which grids are needed and if they are currently 
available, and if not, where to download it when it is listed in the proj.db 
database as a known grid.

> 
> 3. When a transformation is performed without a grid the accuracy of the
> transformation should
> be lowered. Possibly, this is already be done (I
> can’t remember and am too lazy to check). 

Yes, coordinate operations with synthetized/dummy horizontal or vertical 
transformations will have a unknown accuracy.

e.g

$ src/projinfo -s EPSG:7406 -t EPSG:4979
Candidate operations found: 3
Note: using '--spatial-test intersects' would bring more results (64)
-------------------------------------
Operation n°1:

unknown id, NAD27 to WGS 84 (79) + Transformation from NGVD29 height (ftUS) to 
WGS 84 (approximate transformation, without ellipsoid height to vertical 
height correction), unknown accuracy, USA - CONUS including EEZ

PROJ string:
+proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert 
+xy_in=deg +xy_out=rad +step +proj=hgridshift +grids=conus +step 
+proj=unitconvert +xy_in=rad +z_in=us-ft +xy_out=deg +z_out=m +step 
+proj=axisswap +order=2,1


> I have a dream that one day we will replace the datumgrid packages with a
> download service
> where as many grids as possible can be served from. PROJ
> should have the ability to either download grids when the need arises (or
> at least make it easy for users to do so themselves). At this point it is
> just a vision and I am not particularly keen on taking on this task myself
> but I would be very happy to see this happen within the next couple of
> years. 

That would add a libcurl dependency. And/or add a callback mechanism to do the 
download on behalf of PROJ. But as mentionned above, applications built on top 
of PROJ have now what is needed to implement that.

Even

-- 
Spatialys - Geospatial professional services
http://www.spatialys.com


More information about the PROJ mailing list