<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        font-size:10.0pt;
        font-family:"Courier New";}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;}
span.EmailStyle23
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">Hi Even & Kristian,<o:p></o:p></p>
<p class="MsoNormal">It turns out there was another reason, besides translation rates, that was preventing me matching HTDP results:  for the NOAM plate, the z-rotation rate should be -0.0001 as opposed to +0.0001.  The ITRF2008 init file needs to be updated.<o:p></o:p></p>
<p class="MsoNormal">steve<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> Steve Riddell <br>
<b>Sent:</b> Friday, February 11, 2022 3:27 PM<br>
<b>To:</b> Even Rouault <even.rouault@spatialys.com>; proj@lists.osgeo.org<br>
<b>Cc:</b> Kristian Evers <kreve@sdfe.dk><br>
<b>Subject:</b> RE: [PROJ] Plate motion models<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">It did not occur to me initially, but all I had to do was add +dx/dy/dz terms in the Helmert string for NOAM in the init file. It works perfectly.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> Steve Riddell <br>
<b>Sent:</b> Wednesday, February 9, 2022 3:43 PM<br>
<b>To:</b> Even Rouault <<a href="mailto:even.rouault@spatialys.com">even.rouault@spatialys.com</a>>;
<a href="mailto:proj@lists.osgeo.org">proj@lists.osgeo.org</a><br>
<b>Cc:</b> Kristian Evers <<a href="mailto:kreve@sdfe.dk">kreve@sdfe.dk</a>><br>
<b>Subject:</b> RE: [PROJ] Plate motion models<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thank you again for the assistance. That was a huge help. It works as expected, based on the delivered ITRF2008/ITRF2014 init files.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Perhaps it should be noted that the delivered models support only 3-rotation parameters. The paper, “ITRF2008 plate motion model, Z. Altamimi, et al.”, and the HTDP documentation indicates that plates NOAM, PCFC, and CARB, include translation
 rates as well: (0.41,0.22,0.41)mm/yr.  The practical difference then is sub-centimeter, but noticeable when comparing with HTDP (over areas not covered by HTDP’s velocity grids).<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks again,<o:p></o:p></p>
<p class="MsoNormal">steve <o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> Even Rouault <<a href="mailto:even.rouault@spatialys.com">even.rouault@spatialys.com</a>>
<br>
<b>Sent:</b> Monday, February 7, 2022 9:18 AM<br>
<b>To:</b> Steve Riddell <<a href="mailto:sriddell@geocue.com">sriddell@geocue.com</a>>;
<a href="mailto:proj@lists.osgeo.org">proj@lists.osgeo.org</a><br>
<b>Subject:</b> Re: [PROJ] Plate motion models<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p>Hi Steve,<o:p></o:p></p>
<p>Assuming lon=-100 lat=40 z=0,  I believe (not sure! and in particular if that's geodetically meaningful to chain so many transformations) you should use a pipeline like the following one, which will do:<o:p></o:p></p>
<p>- conversion to cartesian coordinate space<o:p></o:p></p>
<p>- apply the ITRF2000 to ITRF2014 transformation preserving observation epoch of 2022.1<o:p></o:p></p>
<p>- 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<o:p></o:p></p>
<p>- force the observation epoch to 2010<o:p></o:p></p>
<p>- apply the ITRF2014 to ITRF2000 transformation (at epoch 2010)<o:p></o:p></p>
<p>- conversion to lat, lon coordinate space<o:p></o:p></p>
<p>echo -100 40 0 2022.1 | cct -d 8 +proj=pipeline \<br>
    +step +proj=cart +ellps+GRS80 \ <br>
    +step +inv +init=ITRF2014:ITRF2000 \<br>
    +step +inv +init=ITRF2014:NOAM +t_epoch=2010 \<br>
    +step +proj=set +v_4=2010 \<br>
    +step +init=ITRF2014:ITRF2000 \<br>
    +step +inv +proj=cart +ellps+GRS80<o:p></o:p></p>
<p>I get:<o:p></o:p></p>
<p style="margin-bottom:12.0pt">-99.99999790     40.00000064    0.00755196     2010.0000<o:p></o:p></p>
<p>If using ITRF2008 instead of ITRF2014, I get:<o:p></o:p></p>
<p>  -99.99999854     40.00000065    0.00909276     2010.0000<o:p></o:p></p>
<p><o:p> </o:p></p>
<p>I've also tried using a plate-fixed CRS as an intermediate using what is available in EPSG<o:p></o:p></p>
<p>First with NAD83(CORS96) since there's a direct transformation for it in EPSG (not quite "direct" since when looking at the comments, it already results from concatenation of ITRF96>97 and IERS ITRF97>2000 transformations)<o:p></o:p></p>
<p>(order is lat, lon here)<o:p></o:p></p>
<p class="MsoNormal" style="margin-bottom:12.0pt">$ echo 40 -100 0 2022.1 | cs2cs -d 8 "ITRF2000" "NAD83(CORS96)" | cct -d 8 +proj=set +v_4=2010 | cs2cs -d 8 "NAD83(CORS96)"  "ITRF2000"<br>
40.00000067    -99.99999766 -0.00447640     2010.0000<o:p></o:p></p>
<p>Or if using NAD83(2011) (there's a transformation between NAD83(2011) and ITRF2008 in EPSG (concatenation of ITRF96>97 and IERS ITRF97>2008 transformations), and PROJ will use the ITRF2008 to ITRF2000 transformation in addition<o:p></o:p></p>
<p class="MsoNormal">$ echo 40 -100 0 2022.1 | cs2cs -d 8 "ITRF2000" "NAD83(2011)" | cct -d 8 +proj=set +v_4=2010 | cs2cs -d 8 "NAD83(2011)"  "ITRF2000"<br>
40.00000066    -99.99999765 -0.00447668     2010.0000<o:p></o:p></p>
<p><br>
So results are somewhat consistent, at least in the lat, lon space (not for z values)<o:p></o:p></p>
<p>Best regards,<o:p></o:p></p>
<p>Even<o:p></o:p></p>
<p><o:p> </o:p></p>
<div>
<p class="MsoNormal">Le 07/02/2022 à 14:49, Steve Riddell a écrit :<o:p></o:p></p>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">The data for the ITFR2008 & ITRF2014 plate motion models are delivered with PROJ as init files. From the documentation, 8.7, I think I see how an +init proj string can be used for
 changing epochs between ITFR frames (e.g. ITRF2000 to ITRF2005), but can someone please give an example of using the plate models? For example, if I have a point in ITRF2000 epoch 2022.1 and I want to use the NOAM plate model to move it to 2010.0, what would
 be the +init string? I’m assuming cct would be an appropriate application for processing this string?<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Thanks for any assistance!<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Steve<o:p></o:p></p>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><o:p> </o:p></p>
<pre>_______________________________________________<o:p></o:p></pre>
<pre>PROJ mailing list<o:p></o:p></pre>
<pre><a href="mailto:PROJ@lists.osgeo.org">PROJ@lists.osgeo.org</a><o:p></o:p></pre>
<pre><a href="https://lists.osgeo.org/mailman/listinfo/proj">https://lists.osgeo.org/mailman/listinfo/proj</a><o:p></o:p></pre>
</blockquote>
<pre>-- <o:p></o:p></pre>
<pre><a href="http://www.spatialys.com">http://www.spatialys.com</a><o:p></o:p></pre>
<pre>My software is free, but my time generally not.<o:p></o:p></pre>
</div>
</body>
</html>