Hey PROJ community!

I'm a software developer at the National Snow and Ice Data Center (NSIDC). I'm 
working on a software package that eases comparison between various laser 
altimeter datasets over polar regions. This project is still a work in 
progress, but you can take a look here if interested: 
https://github.com/nsidc/iceflow

This new library is based on prior work from several years ago. I actually 
asked a question about how to do ITRF transformations back in 2019 that helped 
out ton: https://lists.osgeo.org/pipermail/proj/2019-May/008509.html. I'm now 
reviewing and updating our prior work for this new library.

One of the things that this library does is provide the ability to perform ITRF 
transformation and coordinate-propagation using plate-motion-models, so that 
datasets collected under different ITRFs and epochs can be directly compared.

We use a `proj` pipeline to do this, and I would greatly appreciate the proj 
community's review to ensure that we are doing the "right thing" here.

Here is an exmaple of a pipeline that we use to convert from ITRF2005 to 
ITRF2014, and then perform coordinate propagation via a plate motion model for 
Antarctica to epoch 2020.0:

+proj=pipeline +ellps=WGS84
+step +proj=unitconvert +xy_in=deg +xy_out=rad
+step +proj=latlon
+step +proj=cart
+step +inv +init=ITRF2014:ITRF2005
+step +init=ITRF2014:ANTA +t_epoch=2020.0
+step +inv +proj=cart
+step +proj=unitconvert +xy_in=rad +xy_out=deg

In practice, here is an example of doing a transformation for a single point 
using this pipeline w/ `cct`:

$ echo "-102.29021699999998 -75.159033 136.42799377441406 2009.8571" | cct -v 
-d 14 +proj=pipeline +ellps=WGS84 +step +proj=unitconvert +xy_in=deg 
+xy_out=rad +step +proj=latlon +step +proj=cart +step +inv 
+init=ITRF2014:ITRF2005 +step +init=ITRF2014:ANTA +t_epoch=2020.0 +step +inv 
+proj=cart +step +proj=unitconvert +xy_in=rad +xy_out=deg
-102.29022288281413  -75.15903346722915  136.42044201772660     2009.8571

I've been reviewing each of the steps in this pipeline and was unsure about a 
couple of things, and in particular about how we construct our plate motion 
model step ("+step +init=ITRF2014:ANTA +t_epoch=2020.0").

* Is the unit conversion from degrees-radians necessary, or a best practice? In 
my testing, it seems like I can exclude the unitconvert steps and get the same 
answers. The documentation for the  conversion to cartesian coordinates and the 
helmert transformation indicate that geodetic coordinates are required (e.g., 
https://proj.org/en/9.5/operations/transformations/helmert.html), but nothing 
about the need for the coordinates to be in radians. I'm guessing that any 
necessary unit conversions are happening under the hood, (I opened this issue 
the other day that hints at this 
https://github.com/OSGeo/PROJ/issues/4283#issuecomment-2427639011).

* Does the "+step +init=ITRF2014:ANTA +t_epoch=2020.0" step, which performs the 
coordinate propagation via plate motion model for Antarctica, look correct? 
Under what conditions should we apply a `+inv` here? I am asking because, when 
we originally implemented this step, we had included that operation. I think 
this was a mistake, but looking back at this thread has me wondering about it: 
https://lists.osgeo.org/pipermail/proj/2022-February/010530.html. Even says:

apply the ITRF2014:NOAM model using a target epoch of 2010 (hence the +inv, as 
naturally the transformation would use +t_epoch as the "source") for a point at 
observation epoch of 2022.1.

Is this just for the case where we go "back in time" from a more recent 
observation epoch to an earlier target epcoh, in this case 2022.1 -> 2010? If 
that's the case, the example above would be correct (it omits the `+inv` 
because we're going from on observation date of 2009.8 to a later target epoch 
of 2020.0).

I appreciate the community's review and any insights or concerns that you may 
have! And please let me know if there is any additional context or information 
I can provide.

Thanks,

Trey Stafford

_______________________________________________
PROJ mailing list
PROJ@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/proj

Reply via email to