<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p>Thanks to Kristian and Even for some very thorough answers. That
      was somewhat heavy reading (for me at least) on such an ordinary
      Wednesday :-)</p>
    <p>I'll guess that QGIS (or the underlying transformation library)
      is using some of the "earlier" realizations for both ETR89 and
      WGS84 datums since the  ETR89/UTM32N and WGS84/UTM32N coordinates
      of a given location is so close to each other (0.1 mm)  <br>
    </p>
    <p>Actually the answer was more than I had hoped for. I'm currently
      teaching some students at the  Forestry College, University of
      Copenhagen some <i>elementary</i> knowledge of projections as a
      part of their GIS education. <br>
    </p>
    <p>I'll try to incorporate this knowledge into the curriculum -
      hopefully without exploding their brains (or mine) !    <br>
    </p>
    <pre class="moz-signature" cols="72">-- 
Med venlig hilsen / Kind regards

Bo Victor Thomsen</pre>
    <div class="moz-cite-prefix">Den 25-09-2019 kl. 10:12 skrev Kristian
      Evers:<br>
    </div>
    <blockquote type="cite"
      cite="mid:a3123e852cc3450aaa0601581ff3fe1c@sdfe.dk">
      <pre class="moz-quote-pre" wrap="">For funsies, let's try to do this using the transformations I linked in my previous email. Here I have used a coordinate that is actually in Denmark. Using what is currently the best transformation between ITRF2014 and the local Danish realization of ETRS89 (<a class="moz-txt-link-abbreviated" href="mailto:ETRF92@1994.704">ETRF92@1994.704</a> for those who might find that interesting). I get a horizontal difference between the two of 75.1 cm

echo 12 55 0 2019.0 | cct -d 10 +proj=pipeline +step +proj=cart +ellps=GRS80 +step +init=NKG:ITRF2014 +inv +step +init=NKG:DK
 11.9999917811   54.9999951856  -0.0116067529     2019.0000

echo 55 12 54.9999951856 11.9999917811 | geod -I +ellps=GRS80 +units=cm
-135d32'21.267" 44d27'38.709"   75.092

Unless you care about cm to mm accuracy you will be fine using the transformations that projinfo suggests :-)

/Kristian


-----Original Message-----
From: QGIS-Developer <a class="moz-txt-link-rfc2396E" href="mailto:qgis-developer-bounces@lists.osgeo.org"><qgis-developer-bounces@lists.osgeo.org></a> On Behalf Of Even Rouault
Sent: 25. september 2019 09:52
To: <a class="moz-txt-link-abbreviated" href="mailto:qgis-developer@lists.osgeo.org">qgis-developer@lists.osgeo.org</a>
Subject: Re: [QGIS-Developer] CRS problems with WGS84 and ETRS89

</pre>
      <blockquote type="cite">
        <pre class="moz-quote-pre" wrap="">How come ? Or is the error-source sitting ca. 70 cm in front of the
screen ?? (I have a 34" large flatscreen :-)
</pre>
      </blockquote>
      <pre class="moz-quote-pre" wrap="">
Because the data for such a transform isn't in the EPSG database.

I believe the main reason is that both WGS84 and ETRS89 are in fact datum ensembles, that is a short and convenient nickname for a number of more well-defined datum realizations. For WGS84, you have 6 different realizations from Transit to G1762. And ETRS89 has 11 realizations from ETRF89 to ETRF2014
So to get accurate data, you must research tranformations between those direct realizations. And in EPSG, accurate transformations tend not being given in terms of WGS84 realizations but from their equivalent ITRF realizations (WGS84(G1762) is identical to ITRF2014 within ~1cm),

so, while playing with PROJ' projinfo utility,

$ projinfo -s ITRF2014 -t ETRF2014

I see 2 potential coordinate transformations, and the one that makes probably more sense today is the one using epoch 2010 for the transformation:

unknown id, Conversion from ITRF2014 (geog2D) to ITRF2014 (geocentric) + ITRF2014 to ETRF2014 (2) + Conversion from ETRF2014 (geocentric) to ETRF2014 (geog2D), 0 m, Europe - ETRS89

PROJ string:
+proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=cart +ellps=GRS80 +step +proj=helmert +x=0 +y=0 +z=0 +rx=0.001785 +ry=0.011151 +rz=-0.01617 +s=0 +dx=0 +dy=0 +dz=0 +drx=8.5e-05 +dry=0.000531 +drz=-0.00077 +ds=0 +t_epoch=2010 +convention=position_vector +step +inv +proj=cart +ellps=GRS80 +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1

And you need of course to specify the coordinate epoch of your coordinates as ITRF/WGS84 are Earth-fixed/dynamic datums.

echo "49 2 0 2019.6" | cct -d 10 +proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=cart +ellps=GRS80 +step +proj=helmert +x=0 +y=0 +z=0 +rx=0.001785 +ry=0.011151 +rz=-0.01617 +s=0 +dx=0 +dy=0 +dz=0 +drx=8.5e-05 +dry=0.000531 +drz=-0.00077 +ds=0 +t_epoch=2010 +convention=position_vector +step +inv +proj=cart +ellps=GRS80 +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1

48.9999955186   1.9999924499  -0.0016582003     2019.6000

Actually using the first proposal using an epoch at 1989, I get exactly the same results

echo "49 2 0 2019.6" | cct -d 10 +proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=cart +ellps=GRS80 +step +proj=helmert +x=0 +y=0 +z=0 +rx=0 +ry=0 +rz=0 +s=0 +dx=0 +dy=0 +dz=0 +drx=8.5e-05 +dry=0.000531 +drz=-0.00077 +ds=0 +t_epoch=1989 +convention=position_vector +step +inv +proj=cart +ellps=GRS80 +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1

48.9999955186   1.9999924499  -0.0016582003     2019.6000

That's a 74cm horizontal shift

</pre>
    </blockquote>
    <pre class="moz-signature" cols="72">
</pre>
  </body>
</html>