[PROJ] Creating projection *not* from full init string?

Martin Desruisseaux martin.desruisseaux at geomatys.com
Tue Mar 9 13:27:38 PST 2021


Hello Matthew

Historically, PROJ was a map projection library. It was not designed for 
datum shifts, which is a very different problem than map projections. 
The PROJ4 syntax assumes a one-to-one relationship between the source 
CRS, the target CRS and the mathematical operation doing coordinate 
conversions from source to target. This simple assumption works for map 
projections but doesn't work well for datum shifts. It was nevertheless 
possible to do some datum shifts with PROJ4, for example using +wgs84 
parameters, but it put responsibility on user's shoulders (they have to 
choose the right parameters for the right region) and lure users with a 
false sense of accuracy. For example there is more than 50 sets of 
+towgs84 parameter values for a transformation between NAD27 and WGS84, 
while the PROJ4 definitions gave the false impression that a "one size 
fits all" existed.

PROJ6 has been redesigned on the model defined by ISO 19111, also 
available freely from OGC at 
http://docs.opengeospatial.org/as/18-005r4/18-005r4.html . This 
specification was designed by geodesist experts. It may look overly 
complex but all this complexity exist for a good reason. It is complex 
because the real world is complex.

Whether you need this complexity depends on the accuracy that you need. 
If you are fine with uncertainties ranging from a few meters (typical 
case) up to 3 km (worst case I have seen), then PROJ4 syntax is fine. It 
is certainly possible to reach centimetric precision with PROJ4 for 
advanced users with good understanding of datums, but this is not the 
case of lambda users. With PROJ6 and its database users are more likely 
to get accurate operations, and (most important) they have an estimation 
about the accuracy of the operation they got together with its domain of 
validity.

If an application needs only a few map projections on the same datum and 
never do any datum change, then it may be possible to avoid the need for 
a database, for example by saving a few ProjectedCRS definitions in Well 
Known Text (WKT) format. I do not know if it would make a difference 
regarding the warning emitted by PROJ however.

     Martin




More information about the PROJ mailing list