[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