[PROJ] Strange values with NAVD88
Even Rouault
even.rouault at spatialys.com
Sat Oct 31 05:50:16 PDT 2020
> First, I don't mean to contradict Even, but I will caution you that Even
> is speaking from the viewpoint of proj and the EPSG databse,which is a
> highly sensible place to be speaking from, especially on this lst. I am
> coming from a farther-from-proj perspective that might be described as
> NGS-like. (I do not speak for NGS; I'm just a reader of their
> publications. But I think if you asked them, they might say similar
> things.)
Exchanges and brainstorming are welcome. I'm perfectly aware that there are
many limitations to the approach taken and that humans can come up with more
relevant transforms. That's why projinfo output should be examined to look at
all alternatives that PROJ could find and potentially pick up something
different than the "best" / default transformation.
Using cs2cs is a bit like searching an information in your favorite search
engine and always trusting the top result to be the one you need.
I'm not sure how to overcome those limitations while keeping a data-driven
approach with as generic as possible heuristics to make the best use of it.
Perhaps adding some auxiliary table(s) in the database that would influence
how PROJ ranks its results to override its default heuristics, but maintaining
that could become complicated.
> I therefore expect a null transform from 4979 to 4269, both in lat-lon
> and in HAE.
> I cannot explain the horizontal difference. As I understand proj
> doctrine, no transform is supportable here.
Here's what PROJ come from for that case:
Inverse of NAD83(HARN) to WGS 84 (3) + NAD83(HARN) to NAVD88 height (8) +
Inverse of NAD83 to NAD83(HARN) (46)
+proj=pipeline
+step +proj=axisswap +order=2,1
+step +proj=unitconvert +xy_in=deg +xy_out=rad
+step +proj=cart +ellps=WGS84
+step +inv +proj=helmert +x=-0.991 +y=1.9072 +z=0.5129
+rx=-0.0257899075194932
+ry=-0.0096500989602704 +rz=-0.0116599432323421 +s=0
+convention=coordinate_frame
+step +inv +proj=cart +ellps=GRS80
+step +inv +proj=vgridshift +grids=us_noaa_g1999u08.tif +multiplier=1
+step +inv +proj=hgridshift +grids=us_noaa_pahpgn.tif
+step +proj=unitconvert +xy_in=rad +xy_out=deg
+step +proj=axisswap +order=2,1
So chaining:
- Helmert between WGS 84 and NAD83(HARN) done in 3D. The remarks of this
transformation mention that it comes from 'ITRF96 to NAD83(CORS96) (1)'
"ignoring time-dependent parameters and assuming ITRF96(1997.0) and WGS 84,
plus NAD83(CORS96) and NAD83(HARN), can be considered the same within the
accuracy of the transformation"
- NAD83(HARN) to NAVD88 height (8) using Geoid1999
- NAD83 to NAD83(HARN) (46) using NADCON4 grid for Pennsylvania
This is convoluted and questionable. The irony is that we use Geoid1999,
because the "NAD83 to NAVD88 height" transformations using Geoid2003 have been
deprecated (probably because NAD83(86) ellipsoidal height is not defined.
Those transformations using Geoid2003 have been superseded by one between
NAD83(FBN) and NAVD88), so PROJ needs to find another datum that has
transformations to NAVD88
projinfo also proposes alternatives using NAD83(NSRS2007) instead of
NAD83(HARN), and NAD83(NSRS2007) to NAVD88 height uses Geoid2009. But when
PROJ "computes" the overall accuracy of that alternative, it is slightly worse
than the one using NAD83(HARN) : 1.2m vs 1.1m ...
But as we've underlined, anything involving "WGS 84" datum ensemble to NAD83
(something) is going to be fuzzily defined, since that WGS 84 is always
approximated to another datum, and which datum it is approximated to isn't
necessarily the same depending on the transformation.
>
> > b) echo 40.69 -75.04 0 | PROJ_NETWORK=ON cs2cs EPSG:4979 EPSG:4152+5703 -d
> > 9>
> > 40.689991800 -75.039998369 35.046181369
>
> 4152 is NAD83(HARN).
> It's a really good question what's going on here about different
> horizontal coords.
See above and my previous answer. There are 2 candidate transformations in
EPSG between WGS 84 and NAD83(HARN). One that is a null transformation ("For
many purposes NAD83(HARN) can be considered to be coincident with WGS 84.")
and another one, used in the first step of a) that is a Helmert transformation
coming from ITRF96 to NAD83(CORS96)
> > transformations between NAD83(HARN) and NAD83(2011)
> There should be a grid transform. See NCAT that I linked above. It is
> entirely possible that this precision of NGS transform is not yet
> incorporated in proj.
Yep, as mentionned in my previous email, NADCON5 grids which offer
transformations between all successive "generations" of NAD83 are not yet
used.
--
Spatialys - Geospatial professional services
http://www.spatialys.com
More information about the PROJ
mailing list