[Proj] PROJ.4 4.9.2 and transformation of points outside datum shift grid
Even Rouault
even.rouault at spatialys.com
Tue Feb 2 08:11:34 EST 2016
Le mardi 02 février 2016 11:52:52, Even Rouault a écrit :
> Hi Bas,
>
> Reverting
> https://github.com/OSGeo/proj.4/commit/5d2af3a8 on top of current master
> didn't change the behaviour and still resulted in the vertical grid being
> (erroneously) applied as in official 4.9.2. The reason is that cs2cs.c
> always calls pj_transform() with a non-null z pointer (z=0 if not
> specified), so this changeset has no effect on that.
>
> Investigating more, I found the following commit to be the cause :
> https://github.com/OSGeo/proj.4/commit/338ea581
> " apply patch from #271 to use GTX null value 88.88880f for vertical
> shifts" (message should read -88.88880f by the way to reflect the code)
>
> Looking at the grid (downloaded from
> https://github.com/NaturalGIS/ntv2_transformations_grids_and_sample_data/bl
> ob/master/nl/naptrans2008.gtx ), it appears it doesn't use the official
> null value -88.88880f but various big negative values like -2147479936,
> -2147479808 and several others as well.
>
> So I think we need probably a mix of both codes for wider compatibility.
> Something like :
>
> /* nodata? */
> /* GTX official nodata value if -88.88880f, but some grids also use other
> */ /* big values for nodata (e.g naptrans2008.gtx has nodata values like
> /* -2147479936), so test them too */
> if( value > 1000 || value < -1000 || value == -88.88880f )
>
> Checking >1000 or <-1000 is somewhat arbitrary, but I'm not aware of vgrids
> that have such big offsets (at least on Earth), so it is likely safe. The
> original ticket https://github.com/OSGeo/proj.4/issues/271 doesn't report
> that they can cause problems in practice.
>
> Howard ?
I've prepared https://github.com/OSGeo/proj.4/pull/349 with above fix
--
Spatialys - Geospatial professional services
http://www.spatialys.com
More information about the Proj
mailing list