diff --git a/geodepy/constants.py b/geodepy/constants.py index bb9cf34..aad17cc 100644 --- a/geodepy/constants.py +++ b/geodepy/constants.py @@ -362,6 +362,7 @@ def iers2trans( d_rx, d_ry, d_rz, + tf_sd=None ): """ Used to convert IERS transformation parameters into GeodePy Transformation @@ -405,6 +406,61 @@ class parameters. round(-d_rx / 1000, 8), round(-d_ry / 1000, 8), round(-d_rz / 1000, 8), + tf_sd=tf_sd + ) + +def iers2transSD( + sd_tx=None, + sd_ty=None, + sd_tz=None, + sd_sc=None, + sd_rx=None, + sd_ry=None, + sd_rz=None, + sd_d_tx=None, + sd_d_ty=None, + sd_d_tz=None, + sd_d_sc=None, + sd_d_rx=None, + sd_d_ry=None, + sd_d_rz=None, +): + """ + Used to convert IERS transformation standard deviation parameters into GeodePy TransformationSD + class parameters. + Note: All rotation and delta rotation terms have the sign change applied. + + :param sd_tx: one-sigma uncertainty of tx (mm) + :param sd_ty: one-sigma uncertainty of ty (mm) + :param sd_tz: one-sigma uncertainty of tz (mm) + :param sd_sc: one-sigma uncertainty of sc (ppb) + :param sd_rx: one-sigma uncertainty of rx (milliarcsec) + :param sd_ry: one-sigma uncertainty of ry (milliarcsec) + :param sd_rz: one-sigma uncertainty of rz (milliarcsec) + :param sd_d_tx: one-sigma uncertainty of d_tx (mm/yr) + :param sd_d_ty: one-sigma uncertainty of d_ty (mm/yr) + :param sd_d_tz: one-sigma uncertainty of d_tz (mm/yr) + :param sd_d_sc: one-sigma uncertainty of d_sc (ppb/yr) + :param sd_d_rx: one-sigma uncertainty of d_rx (milliarcsec/yr) + :param sd_d_ry: one-sigma uncertainty of d_ry (milliarcsec/yr) + :param sd_d_rz: one-sigma uncertainty of d_rz (milliarcsec/yr) + :return: TransformationSD object following the Australian convention + """ + return TransformationSD( + round(sd_tx / 1000, 8), + round(sd_ty / 1000, 8), + round(sd_tz / 1000, 8), + round(sd_sc / 1000, 8), + round(-sd_rx / 1000, 8), + round(-sd_ry / 1000, 8), + round(-sd_rz / 1000, 8), + round(sd_d_tx / 1000, 8), + round(sd_d_ty / 1000, 8), + round(sd_d_tz / 1000, 8), + round(sd_d_sc / 1000, 8), + round(-sd_d_rx / 1000, 8), + round(-sd_d_ry / 1000, 8), + round(-sd_d_rz / 1000, 8), ) @@ -557,6 +613,46 @@ class parameters. tf_sd=atrf2014_to_gda2020_sd, ) +itrf2014_to_atrf2014_sd = TransformationSD( + sd_tx=0.00, + sd_ty=0.00, + sd_tz=0.00, + sd_sc=0.00, + sd_rx=0.00, + sd_ry=0.00, + sd_rz=0.00, + sd_d_tx=0.00, + sd_d_ty=0.00, + sd_d_tz=0.00, + sd_d_sc=0.00, + sd_d_rx=0.00, + sd_d_ry=0.00, + sd_d_rz=0.00, +) + +itrf2014_to_atrf2014 = Transformation( + from_datum="ITRF2014", + to_datum="ATRF2014", + ref_epoch=date(2020, 1, 1), + tx=0, + ty=0, + tz=0, + sc=0, + rx=0, + ry=0, + rz=0, + d_tx=0, + d_ty=0, + d_tz=0, + d_sc=0, + d_rx=0.00, + d_ry=0.00, + d_rz=0.00, + tf_sd=itrf2014_to_atrf2014_sd, +) + +gda2020_to_atrf2014 = -atrf2014_to_gda2020 +atrf2014_to_itrf2014 = -itrf2014_to_atrf2014 # GDA94 to ITRF transformation parameters [Dawson and Woods (2010)] # AGD66 and AGD84 to GDA94 transformation parameters [GDA94 Tech Manual v2.4] @@ -648,6 +744,60 @@ class parameters. sd_d_rz=0.0001169, ) +#Found here https://espace.curtin.edu.au/bitstream/handle/20.500.11937/22267/20908_downloaded_stream_364.pdf?sequence=2&isAllowed=y + +agd84_to_gda94_sd = TransformationSD( + sd_tx=1.0, + sd_ty=1.0, + sd_tz=1.0, + sd_sc=0.0, + sd_rx=0.0, + sd_ry=0.0, + sd_rz=0.0, + sd_d_tx=0.0, + sd_d_ty=0.0, + sd_d_tz=0.0, + sd_d_sc=0.0, + sd_d_rx=0.0, + sd_d_ry=0.0, + sd_d_rz=0.0 +) + +agd66_to_gda94_sd = TransformationSD( + sd_tx=2.0, + sd_ty=2.0, + sd_tz=2.0, + sd_sc=0.0, + sd_rx=0.0, + sd_ry=0.0, + sd_rz=0.0, + sd_d_tx=0.0, + sd_d_ty=0.0, + sd_d_tz=0.0, + sd_d_sc=0.0, + sd_d_rx=0.0, + sd_d_ry=0.0, + sd_d_rz=0.0 +) + +agd66_to_gda94_state_sd = TransformationSD( + sd_tx=1.0, + sd_ty=1.0, + sd_tz=1.0, + sd_sc=0.0, + sd_rx=0.0, + sd_ry=0.0, + sd_rz=0.0, + sd_d_tx=0.0, + sd_d_ty=0.0, + sd_d_tz=0.0, + sd_d_sc=0.0, + sd_d_rx=0.0, + sd_d_ry=0.0, + sd_d_rz=0.0 +) + + # Transformations itrf2008_to_gda94 = Transformation( from_datum="ITRF2008", @@ -765,6 +915,7 @@ class parameters. rx=-0.292, ry=-0.443, rz=-0.277, + tf_sd=agd84_to_gda94_sd ) agd66_to_gda94 = Transformation( @@ -778,6 +929,7 @@ class parameters. rx=-0.303, ry=-0.446, rz=-0.234, + tf_sd=agd66_to_gda94_sd ) agd66_to_gda94_act = Transformation( @@ -791,6 +943,7 @@ class parameters. rx=-0.246, ry=-0.374, rz=-0.329, + tf_sd=agd66_to_gda94_state_sd ) agd66_to_gda94_tas = Transformation( @@ -804,6 +957,7 @@ class parameters. rx=-0.217, ry=0.067, rz=0.129, + tf_sd=agd66_to_gda94_state_sd ) agd66_to_gda94_vicnsw = Transformation( @@ -817,6 +971,7 @@ class parameters. rx=-0.415, ry=-0.260, rz=-0.437, + tf_sd=agd66_to_gda94_state_sd ) agd66_to_gda94_nt = Transformation( @@ -830,6 +985,7 @@ class parameters. rx=0.008, ry=-0.557, rz=-0.178, + tf_sd=agd66_to_gda94_state_sd ) gda94_to_itrf2008 = -itrf2008_to_gda94 @@ -870,6 +1026,24 @@ class parameters. d_rz=0.0, ) +# Ref: https://itrf.ign.fr/en/solutions/itrf2020 +itrf2020_to_itrf2014_sd = iers2transSD( + sd_tx=0.2, + sd_ty=0.2, + sd_tz=0.2, + sd_sc=0.03, + sd_rx=0.007, + sd_ry=0.006, + sd_rz=0.007, + sd_d_tx=0.2, + sd_d_ty=0.2, + sd_d_tz=0.2, + sd_d_sc=0.03, + sd_d_rx=0.007, + sd_d_ry=0.006, + sd_d_rz=0.007 +) + itrf2020_to_itrf2014 = iers2trans( itrf_from="ITRF2020", itrf_to="ITRF2014", @@ -888,6 +1062,7 @@ class parameters. d_rx=0.0, d_ry=0.0, d_rz=0.0, + tf_sd=itrf2020_to_itrf2014_sd, ) itrf2020_to_itrf2008 = iers2trans( @@ -1153,6 +1328,25 @@ class parameters. # here: https://www.icsm.gov.au/gda2020-and-gda94-technical-manuals # Ref: http://itrf.ign.fr/doc_ITRF/Transfo-ITRF2014_ITRFs.txt + +# Ref: https://itrf.ign.fr/en/solutions/itrf2014 +itrf2014_to_itrf2008_sd = iers2transSD( + sd_tx=0.2, + sd_ty=0.1, + sd_tz=0.1, + sd_sc=0.01, + sd_rx=0.006, + sd_ry=0.006, + sd_rz=0.006, + sd_d_tx=0.2, + sd_d_ty=0.1, + sd_d_tz=0.1, + sd_d_sc=0.02, + sd_d_rx=0.006, + sd_d_ry=0.006, + sd_d_rz=0.006 +) + itrf2014_to_itrf2008 = iers2trans( itrf_from="ITRF2014", itrf_to="ITRF2008", @@ -1171,6 +1365,7 @@ class parameters. d_rx=0, d_ry=0, d_rz=0, + tf_sd=itrf2014_to_itrf2008_sd, ) itrf2014_to_itrf2005 = iers2trans( @@ -1415,6 +1610,24 @@ class parameters. # here: https://www.icsm.gov.au/gda2020-and-gda94-technical-manuals # Ref: http://itrf.ign.fr/doc_ITRF/Transfo-ITRF2008_ITRFs.txt +# Ref: https://itrf.ign.fr/en/solutions/itrf2008 +itrf2008_to_itrf2005_sd = iers2transSD( + sd_tx=0.2, + sd_ty=0.2, + sd_tz=0.2, + sd_sc=0.03, + sd_rx=0.008, + sd_ry=0.008, + sd_rz=0.008, + sd_d_tx=0.2, + sd_d_ty=0.2, + sd_d_tz=0.2, + sd_d_sc=0.03, + sd_d_rx=0.008, + sd_d_ry=0.008, + sd_d_rz=0.008 +) + itrf2008_to_itrf2005 = iers2trans( itrf_from="ITRF2008", itrf_to="ITRF2005", @@ -1655,6 +1868,25 @@ class parameters. # For more information, see the GDA2020 tech manual section 2.2.1 available # here: https://www.icsm.gov.au/gda2020-and-gda94-technical-manuals # Ref: http://itrf.ensg.ign.fr/ITRF_solutions/2005/tp_05-00.php +# Ref: https://itrf.ign.fr/en/solutions/transformations + +# Ref: https://itrf.ign.fr/en/solutions/itrf2005 +itrf2005_to_itrf2000_sd = iers2transSD( + sd_tx=0.3, + sd_ty=0.3, + sd_tz=0.3, + sd_sc=0.05, + sd_rx=0.012, + sd_ry=0.012, + sd_rz=0.012, + sd_d_tx=0.3, + sd_d_ty=0.3, + sd_d_tz=0.3, + sd_d_sc=0.05, + sd_d_rx=0.012, + sd_d_ry=0.012, + sd_d_rz=0.012 +) itrf2005_to_itrf2000 = iers2trans( itrf_from="ITRF2005", @@ -1674,9 +1906,199 @@ class parameters. d_rx=0, d_ry=0, d_rz=0, + tf_sd=itrf2005_to_itrf2000_sd, +) + +itrf2005_to_itrf97 = iers2trans( + itrf_from="ITRF2005", + itrf_to="ITRF97", + ref_epoch=date(2000, 1, 1), + tx=6.8, + ty=3.5, + tz=-28.5, + sc=1.98, + rx=0, + ry=0, + rz=0.06, + d_tx=-0.2, + d_ty=-0.5, + d_tz=-3.2, + d_sc=0.09, + d_rx=0, + d_ry=0, + d_rz=0.02, +) + +itrf2005_to_itrf96 = iers2trans( + itrf_from="ITRF2005", + itrf_to="ITRF96", + ref_epoch=date(2000, 1, 1), + tx=6.8, + ty=3.5, + tz=-28.5, + sc=1.98, + rx=0, + ry=0, + rz=0.06, + d_tx=-0.2, + d_ty=-0.5, + d_tz=-3.2, + d_sc=0.09, + d_rx=0, + d_ry=0, + d_rz=0.02, +) + +itrf2005_to_itrf94 = iers2trans( + itrf_from="ITRF2005", + itrf_to="ITRF94", + ref_epoch=date(2000, 1, 1), + tx=6.8, + ty=3.5, + tz=-28.5, + sc=1.98, + rx=0, + ry=0, + rz=0.06, + d_tx=-0.2, + d_ty=-0.5, + d_tz=-3.2, + d_sc=0.09, + d_rx=0, + d_ry=0, + d_rz=0.02, +) + +itrf2005_to_itrf93 = iers2trans( + itrf_from="ITRF2005", + itrf_to="ITRF93", + ref_epoch=date(2000, 1, 1), + tx=-22.0, + ty=3.3, + tz=-33.9, + sc=2.47, + rx=-1.71, + ry=-1.48, + rz=-0.3, + d_tx=-3.1, + d_ty=-0.1, + d_tz=-2.4, + d_sc=0.09, + d_rx=-0.11, + d_ry=-0.19, + d_rz=0.07, +) + +itrf2005_to_itrf92 = iers2trans( + itrf_from="ITRF2005", + itrf_to="ITRF92", + ref_epoch=date(2000, 1, 1), + tx=14.8, + ty=5.5, + tz=-36.5, + sc=1.27, + rx=0, + ry=0, + rz=0.06, + d_tx=-0.2, + d_ty=-0.5, + d_tz=-3.2, + d_sc=0.09, + d_rx=0, + d_ry=0, + d_rz=0.02, +) + +itrf2005_to_itrf91 = iers2trans( + itrf_from="ITRF2005", + itrf_to="ITRF91", + ref_epoch=date(2000, 1, 1), + tx=26.8, + ty=19.5, + tz=-42.5, + sc=2.67, + rx=0, + ry=0, + rz=0.06, + d_tx=-0.2, + d_ty=-0.5, + d_tz=-3.2, + d_sc=0.09, + d_rx=0, + d_ry=0, + d_rz=0.02, +) + +itrf2005_to_itrf90 = iers2trans( + itrf_from="ITRF2005", + itrf_to="ITRF90", + ref_epoch=date(2000, 1, 1), + tx=24.8, + ty=15.5, + tz=-58.5, + sc=2.97, + rx=0, + ry=0, + rz=0.06, + d_tx=-0.2, + d_ty=-0.5, + d_tz=-3.2, + d_sc=0.09, + d_rx=0, + d_ry=0, + d_rz=0.02, +) + +itrf2005_to_itrf89 = iers2trans( + itrf_from="ITRF2005", + itrf_to="ITRF89", + ref_epoch=date(2000, 1, 1), + tx=29.8, + ty=39.5, + tz=-96.5, + sc=6.37, + rx=0, + ry=0, + rz=0.06, + d_tx=-0.2, + d_ty=-0.5, + d_tz=-3.2, + d_sc=0.09, + d_rx=0, + d_ry=0, + d_rz=0.02, +) + +itrf2005_to_itrf88 = iers2trans( + itrf_from="ITRF2005", + itrf_to="ITRF88", + ref_epoch=date(2000, 1, 1), + tx=24.8, + ty=3.5, + tz=-120.5, + sc=9.47, + rx=0.1, + ry=0, + rz=0.06, + d_tx=-0.2, + d_ty=-0.5, + d_tz=-3.2, + d_sc=0.09, + d_rx=0, + d_ry=0, + d_rz=0.02, ) itrf2000_to_itrf2005 = -itrf2005_to_itrf2000 +itrf97_to_itrf2005 = -itrf2005_to_itrf97 +itrf96_to_itrf2005 = -itrf2005_to_itrf96 +itrf94_to_itrf2005 = -itrf2005_to_itrf94 +itrf93_to_itrf2005 = -itrf2005_to_itrf93 +itrf92_to_itrf2005 = -itrf2005_to_itrf92 +itrf91_to_itrf2005 = -itrf2005_to_itrf91 +itrf90_to_itrf2005 = -itrf2005_to_itrf90 +itrf89_to_itrf2005 = -itrf2005_to_itrf89 +itrf88_to_itrf2005 = -itrf2005_to_itrf88 # ITRF2000 parameters # ftp://ftp.iers.org/products/reference-systems/terrestrial/itrf/ITRF.TP @@ -1684,6 +2106,26 @@ class parameters. # transformations are shown in millimetres. # NOTE: All translations and rates of translation shown below have been # converted to millimetres. +# Ref: https://itrf.ign.fr/en/solutions/transformations + +# Ref: https://agupubs.onlinelibrary.wiley.com/doi/10.1029/2001JB000561 +itrf2000_to_itrf97_sd = iers2transSD( + sd_tx=0.3, + sd_ty=0.3, + sd_tz=0.3, + sd_sc=0.05, + sd_rx=0.012, + sd_ry=0.012, + sd_rz=0.014, + sd_d_tx=0.3, + sd_d_ty=0.3, + sd_d_tz=0.3, + sd_d_sc=0.05, + sd_d_rx=0.012, + sd_d_ry=0.012, + sd_d_rz=0.014 +) + itrf2000_to_itrf97 = iers2trans( itrf_from="ITRF2000", itrf_to="ITRF97", @@ -1702,6 +2144,7 @@ class parameters. d_rx=0, d_ry=0, d_rz=0.02, + tf_sd=itrf2000_to_itrf97_sd ) itrf2000_to_itrf96 = iers2trans( @@ -1722,6 +2165,7 @@ class parameters. d_rx=0, d_ry=0, d_rz=0.02, + tf_sd=itrf2000_to_itrf97_sd ) itrf2000_to_itrf94 = iers2trans( @@ -1742,6 +2186,7 @@ class parameters. d_rx=0, d_ry=0, d_rz=0.02, + tf_sd=itrf2000_to_itrf97_sd ) itrf2000_to_itrf93 = iers2trans( @@ -1874,6 +2319,1377 @@ class parameters. itrf89_to_itrf2000 = -itrf2000_to_itrf89 itrf88_to_itrf2000 = -itrf2000_to_itrf88 +# ITRF97 paramters +# Ref: https://itrf.ign.fr/en/solutions/transformations + +itrf97_to_itrf96 = iers2trans( + itrf_from="ITRF97", + itrf_to="ITRF96", + ref_epoch=date(2000, 1, 1), + tx=0, + ty=0, + tz=0, + sc=0, + rx=0.0, + ry=0, + rz=0, + d_tx=0.0, + d_ty=0, + d_tz=0, + d_sc=0.0, + d_rx=0, + d_ry=0, + d_rz=0.0, +) + +itrf97_to_itrf94 = iers2trans( + itrf_from="ITRF97", + itrf_to="ITRF94", + ref_epoch=date(2000, 1, 1), + tx=0, + ty=0, + tz=0, + sc=0, + rx=0.0, + ry=0, + rz=0, + d_tx=0.0, + d_ty=0, + d_tz=0, + d_sc=0.0, + d_rx=0, + d_ry=0, + d_rz=0.0, +) + +itrf97_to_itrf93 = iers2trans( + itrf_from="ITRF97", + itrf_to="ITRF93", + ref_epoch=date(2000, 1, 1), + tx=-28.8, + ty=-0.2, + tz=-5.4, + sc=0.49, + rx=-1.71, + ry=-1.48, + rz=-0.36, + d_tx=-2.9, + d_ty=0.4, + d_tz=0.8, + d_sc=0.0, + d_rx=-0.11, + d_ry=-0.19, + d_rz=0.05, +) + +itrf97_to_itrf92 = iers2trans( + itrf_from="ITRF97", + itrf_to="ITRF92", + ref_epoch=date(2000, 1, 1), + tx=8, + ty=2, + tz=-8.0, + sc=-0.71, + rx=0, + ry=0, + rz=0, + d_tx=0, + d_ty=0, + d_tz=0, + d_sc=0.0, + d_rx=0, + d_ry=0, + d_rz=0.0, +) + +itrf97_to_itrf91 = iers2trans( + itrf_from="ITRF97", + itrf_to="ITRF91", + ref_epoch=date(2000, 1, 1), + tx=20, + ty=16, + tz=-14, + sc=0.69, + rx=0, + ry=0, + rz=0, + d_tx=0, + d_ty=0, + d_tz=0, + d_sc=0.0, + d_rx=0, + d_ry=0, + d_rz=0.0, +) + +itrf97_to_itrf90 = iers2trans( + itrf_from="ITRF97", + itrf_to="ITRF90", + ref_epoch=date(2000, 1, 1), + tx=18, + ty=12, + tz=-30, + sc=0.99, + rx=0, + ry=0, + rz=0, + d_tx=0, + d_ty=0, + d_tz=0, + d_sc=0.0, + d_rx=0, + d_ry=0, + d_rz=0.0, +) + +itrf97_to_itrf89 = iers2trans( + itrf_from="ITRF97", + itrf_to="ITRF89", + ref_epoch=date(2000, 1, 1), + tx=23, + ty=36, + tz=-68, + sc=4.39, + rx=0, + ry=0, + rz=0, + d_tx=0, + d_ty=0, + d_tz=0, + d_sc=0.0, + d_rx=0, + d_ry=0, + d_rz=0.0, +) + +itrf97_to_itrf88 = iers2trans( + itrf_from="ITRF97", + itrf_to="ITRF88", + ref_epoch=date(2000, 1, 1), + tx=18, + ty=0, + tz=-92, + sc=7.49, + rx=0.1, + ry=0, + rz=0, + d_tx=0, + d_ty=0, + d_tz=0, + d_sc=0.0, + d_rx=0, + d_ry=0, + d_rz=0.0, +) + +itrf96_to_itrf97 = -itrf97_to_itrf96 +itrf94_to_itrf97 = -itrf97_to_itrf94 +itrf93_to_itrf97 = -itrf97_to_itrf93 +itrf92_to_itrf97 = -itrf97_to_itrf92 +itrf91_to_itrf97 = -itrf97_to_itrf91 +itrf90_to_itrf97 = -itrf97_to_itrf90 +itrf89_to_itrf97 = -itrf97_to_itrf89 +itrf88_to_itrf97 = -itrf97_to_itrf88 + +# itrf96 +# Ref: https://itrf.ign.fr/en/solutions/transformations + +itrf96_to_itrf94 = iers2trans( + itrf_from="ITRF96", + itrf_to="ITRF94", + ref_epoch=date(2000, 1, 1), + tx=0, + ty=0, + tz=0, + sc=0, + rx=0.0, + ry=0, + rz=0, + d_tx=0.0, + d_ty=0, + d_tz=0, + d_sc=0.0, + d_rx=0, + d_ry=0, + d_rz=0.0, +) + +itrf96_to_itrf93 = iers2trans( + itrf_from="ITRF96", + itrf_to="ITRF93", + ref_epoch=date(2000, 1, 1), + tx=-28.8, + ty=-0.2, + tz=-5.4, + sc=0.49, + rx=-1.71, + ry=-1.48, + rz=-0.36, + d_tx=-2.9, + d_ty=0.4, + d_tz=0.8, + d_sc=0.0, + d_rx=-0.11, + d_ry=-0.19, + d_rz=0.05, +) + +itrf96_to_itrf92 = iers2trans( + itrf_from="ITRF96", + itrf_to="ITRF92", + ref_epoch=date(2000, 1, 1), + tx=8.0, + ty=2.0, + tz=-8, + sc=0.71, + rx=0.0, + ry=0, + rz=0, + d_tx=0.0, + d_ty=0, + d_tz=0, + d_sc=0.0, + d_rx=0, + d_ry=0, + d_rz=0.0, +) + +itrf96_to_itrf91 = iers2trans( + itrf_from="ITRF96", + itrf_to="ITRF91", + ref_epoch=date(2000, 1, 1), + tx=20, + ty=16, + tz=-14, + sc=0.69, + rx=0, + ry=0, + rz=0, + d_tx=0, + d_ty=0, + d_tz=0, + d_sc=0.0, + d_rx=0, + d_ry=0, + d_rz=0.0, +) + +itrf96_to_itrf90 = iers2trans( + itrf_from="ITRF96", + itrf_to="ITRF90", + ref_epoch=date(2000, 1, 1), + tx=18, + ty=12, + tz=-30, + sc=0.99, + rx=0, + ry=0, + rz=0, + d_tx=0, + d_ty=0, + d_tz=0, + d_sc=0.0, + d_rx=0, + d_ry=0, + d_rz=0.0, +) + +itrf96_to_itrf89 = iers2trans( + itrf_from="ITRF96", + itrf_to="ITRF89", + ref_epoch=date(2000, 1, 1), + tx=23, + ty=36, + tz=-68, + sc=4.39, + rx=0, + ry=0, + rz=0, + d_tx=0, + d_ty=0, + d_tz=0, + d_sc=0.0, + d_rx=0, + d_ry=0, + d_rz=0.0, +) + +itrf96_to_itrf88 = iers2trans( + itrf_from="ITRF96", + itrf_to="ITRF88", + ref_epoch=date(2000, 1, 1), + tx=18, + ty=0, + tz=-92, + sc=7.49, + rx=0.1, + ry=0, + rz=0, + d_tx=0, + d_ty=0, + d_tz=0, + d_sc=0.0, + d_rx=0, + d_ry=0, + d_rz=0.0, +) + +itrf94_to_itrf96 = -itrf96_to_itrf94 +itrf93_to_itrf96 = -itrf96_to_itrf93 +itrf92_to_itrf96 = -itrf96_to_itrf92 +itrf91_to_itrf96 = -itrf96_to_itrf91 +itrf90_to_itrf96 = -itrf96_to_itrf90 +itrf89_to_itrf96 = -itrf96_to_itrf89 +itrf88_to_itrf96 = -itrf96_to_itrf88 + +# ITRF94 parameters +# Ref: https://itrf.ign.fr/en/solutions/transformations + +itrf94_to_itrf93 = iers2trans( + itrf_from="ITRF94", + itrf_to="ITRF93", + ref_epoch=date(2000, 1, 1), + tx=-28.8, + ty=-0.2, + tz=-5.4, + sc=0.49, + rx=-1.71, + ry=-1.48, + rz=-0.36, + d_tx=-2.9, + d_ty=0.4, + d_tz=0.8, + d_sc=0.0, + d_rx=-0.11, + d_ry=-0.19, + d_rz=0.05, +) + +itrf94_to_itrf92 = iers2trans( + itrf_from="ITRF94", + itrf_to="ITRF92", + ref_epoch=date(2000, 1, 1), + tx=8.0, + ty=2.0, + tz=-8, + sc=0.71, + rx=0.0, + ry=0, + rz=0, + d_tx=0.0, + d_ty=0, + d_tz=0, + d_sc=0.0, + d_rx=0, + d_ry=0, + d_rz=0.0, +) + +itrf94_to_itrf91 = iers2trans( + itrf_from="ITRF94", + itrf_to="ITRF91", + ref_epoch=date(2000, 1, 1), + tx=20, + ty=16, + tz=-14, + sc=0.69, + rx=0, + ry=0, + rz=0, + d_tx=0, + d_ty=0, + d_tz=0, + d_sc=0.0, + d_rx=0, + d_ry=0, + d_rz=0.0, +) + +itrf94_to_itrf90 = iers2trans( + itrf_from="ITRF94", + itrf_to="ITRF90", + ref_epoch=date(2000, 1, 1), + tx=18, + ty=12, + tz=-30, + sc=0.99, + rx=0, + ry=0, + rz=0, + d_tx=0, + d_ty=0, + d_tz=0, + d_sc=0.0, + d_rx=0, + d_ry=0, + d_rz=0.0, +) + +itrf94_to_itrf89 = iers2trans( + itrf_from="ITRF94", + itrf_to="ITRF89", + ref_epoch=date(2000, 1, 1), + tx=23, + ty=36, + tz=-68, + sc=4.39, + rx=0, + ry=0, + rz=0, + d_tx=0, + d_ty=0, + d_tz=0, + d_sc=0.0, + d_rx=0, + d_ry=0, + d_rz=0.0, +) + +itrf94_to_itrf88 = iers2trans( + itrf_from="ITRF94", + itrf_to="ITRF88", + ref_epoch=date(2000, 1, 1), + tx=18, + ty=0, + tz=-92, + sc=7.49, + rx=0.1, + ry=0, + rz=0, + d_tx=0, + d_ty=0, + d_tz=0, + d_sc=0.0, + d_rx=0, + d_ry=0, + d_rz=0.0, +) + +itrf93_to_itrf94 = -itrf94_to_itrf93 +itrf92_to_itrf94 = -itrf94_to_itrf92 +itrf91_to_itrf94 = -itrf94_to_itrf91 +itrf90_to_itrf94 = -itrf94_to_itrf90 +itrf89_to_itrf94 = -itrf94_to_itrf89 +itrf88_to_itrf94 = -itrf94_to_itrf88 + +# ITRF93 paramters +# Ref: https://itrf.ign.fr/en/solutions/transformations + +itrf93_to_itrf92 = iers2trans( + itrf_from="ITRF93", + itrf_to="ITRF92", + ref_epoch=date(2000, 1, 1), + tx=36.8, + ty=2.2, + tz=-2.6, + sc=-1.2, + rx=1.71, + ry=1.48, + rz=0.36, + d_tx=2.9, + d_ty=-0.4, + d_tz=-0.8, + d_sc=0.0, + d_rx=0.11, + d_ry=0.19, + d_rz=-0.05, +) + +itrf93_to_itrf91 = iers2trans( + itrf_from="ITRF93", + itrf_to="ITRF91", + ref_epoch=date(2000, 1, 1), + tx=48.8, + ty=16.2, + tz=-8.6, + sc=0.2, + rx=1.71, + ry=1.48, + rz=0.36, + d_tx=2.9, + d_ty=-0.4, + d_tz=-0.8, + d_sc=0.0, + d_rx=0.11, + d_ry=0.19, + d_rz=-0.05, +) + +itrf93_to_itrf90 = iers2trans( + itrf_from="ITRF93", + itrf_to="ITRF91", + ref_epoch=date(2000, 1, 1), + tx=46.8, + ty=12.2, + tz=-24.6, + sc=0.5, + rx=1.71, + ry=1.48, + rz=0.36, + d_tx=2.9, + d_ty=-0.4, + d_tz=-0.8, + d_sc=0.0, + d_rx=0.11, + d_ry=0.19, + d_rz=-0.05, +) + +itrf93_to_itrf89 = iers2trans( + itrf_from="ITRF93", + itrf_to="ITRF91", + ref_epoch=date(2000, 1, 1), + tx=51.8, + ty=36.2, + tz=-62.6, + sc=3.9, + rx=1.71, + ry=1.48, + rz=0.36, + d_tx=2.9, + d_ty=-0.4, + d_tz=-0.8, + d_sc=0.0, + d_rx=0.11, + d_ry=0.19, + d_rz=-0.05, +) + +itrf93_to_itrf88 = iers2trans( + itrf_from="ITRF93", + itrf_to="ITRF88", + ref_epoch=date(2000, 1, 1), + tx=46.8, + ty=0.2, + tz=-86.6, + sc=7.0, + rx=1.81, + ry=1.48, + rz=0.36, + d_tx=2.9, + d_ty=-0.4, + d_tz=-0.8, + d_sc=0.0, + d_rx=0.11, + d_ry=0.19, + d_rz=-0.05, +) + +itrf92_to_itrf93 = -itrf93_to_itrf92 +itrf91_to_itrf93 = -itrf93_to_itrf91 +itrf90_to_itrf93 = -itrf93_to_itrf90 +itrf89_to_itrf93 = -itrf93_to_itrf89 +itrf88_to_itrf93 = -itrf93_to_itrf88 + +# ITRF92 paramters +# Ref: https://itrf.ign.fr/en/solutions/transformations + +itrf92_to_itrf91 = iers2trans( + itrf_from="ITRF92", + itrf_to="ITRF91", + ref_epoch=date(2000, 1, 1), + tx=12.0, + ty=14.0, + tz=-6.0, + sc=1.4, + rx=0, + ry=0, + rz=0, + d_tx=0, + d_ty=0, + d_tz=0, + d_sc=0.0, + d_rx=0, + d_ry=0, + d_rz=0.0, +) + +itrf92_to_itrf90 = iers2trans( + itrf_from="ITRF92", + itrf_to="ITRF90", + ref_epoch=date(2000, 1, 1), + tx=10.0, + ty=10.0, + tz=-22.0, + sc=1.7, + rx=0, + ry=0, + rz=0, + d_tx=0, + d_ty=0, + d_tz=0, + d_sc=0.0, + d_rx=0, + d_ry=0, + d_rz=0.0, +) + +itrf92_to_itrf89 = iers2trans( + itrf_from="ITRF92", + itrf_to="ITRF89", + ref_epoch=date(2000, 1, 1), + tx=15.0, + ty=34.0, + tz=-60.0, + sc=5.1, + rx=0, + ry=0, + rz=0, + d_tx=0, + d_ty=0, + d_tz=0, + d_sc=0.0, + d_rx=0, + d_ry=0, + d_rz=0.0, +) + +itrf92_to_itrf88 = iers2trans( + itrf_from="ITRF92", + itrf_to="ITRF88", + ref_epoch=date(2000, 1, 1), + tx=10.0, + ty=-2.0, + tz=-84.0, + sc=8.2, + rx=0.1, + ry=0, + rz=0, + d_tx=0, + d_ty=0, + d_tz=0, + d_sc=0.0, + d_rx=0, + d_ry=0, + d_rz=0.0, +) + +itrf91_to_itrf92 = -itrf92_to_itrf91 +itrf90_to_itrf92 = -itrf92_to_itrf90 +itrf89_to_itrf92 = -itrf92_to_itrf89 +itrf88_to_itrf92 = -itrf92_to_itrf88 + +# ITRF91 parameters +# Ref: https://itrf.ign.fr/en/solutions/transformations + +itrf91_to_itrf90 = iers2trans( + itrf_from="ITRF91", + itrf_to="ITRF90", + ref_epoch=date(2000, 1, 1), + tx=-2.0, + ty=-4.0, + tz=-16.0, + sc=0.3, + rx=0.0, + ry=0, + rz=0, + d_tx=0, + d_ty=0, + d_tz=0, + d_sc=0.0, + d_rx=0, + d_ry=0, + d_rz=0.0, +) + +itrf91_to_itrf89 = iers2trans( + itrf_from="ITRF91", + itrf_to="ITRF89", + ref_epoch=date(2000, 1, 1), + tx=3.0, + ty=20.0, + tz=-54.0, + sc=3.7, + rx=0.0, + ry=0, + rz=0, + d_tx=0, + d_ty=0, + d_tz=0, + d_sc=0.0, + d_rx=0, + d_ry=0, + d_rz=0.0, +) + +itrf91_to_itrf88 = iers2trans( + itrf_from="ITRF91", + itrf_to="ITRF88", + ref_epoch=date(2000, 1, 1), + tx=-2.0, + ty=-16.0, + tz=-78.0, + sc=6.8, + rx=0.1, + ry=0, + rz=0, + d_tx=0, + d_ty=0, + d_tz=0, + d_sc=0.0, + d_rx=0, + d_ry=0, + d_rz=0.0, +) + +itrf90_to_itrf91 = -itrf91_to_itrf90 +itrf89_to_itrf91 = -itrf91_to_itrf89 +itrf88_to_itrf91 = -itrf91_to_itrf88 + +# ITRF90 Parameters +# Ref: https://itrf.ign.fr/en/solutions/transformations + +itrf90_to_itrf89 = iers2trans( + itrf_from="ITRF90", + itrf_to="ITRF89", + ref_epoch=date(2000, 1, 1), + tx=5.0, + ty=24.0, + tz=-38.0, + sc=3.4, + rx=0.0, + ry=0, + rz=0, + d_tx=0, + d_ty=0, + d_tz=0, + d_sc=0.0, + d_rx=0, + d_ry=0, + d_rz=0.0, +) + +itrf90_to_itrf88 = iers2trans( + itrf_from="ITRF90", + itrf_to="ITRF88", + ref_epoch=date(2000, 1, 1), + tx=0, + ty=-12, + tz=-62, + sc=6.5, + rx=0.1, + ry=0, + rz=0, + d_tx=0, + d_ty=0, + d_tz=0, + d_sc=0.0, + d_rx=0, + d_ry=0, + d_rz=0.0, +) + +itrf89_to_itrf90 = -itrf90_to_itrf89 +itrf88_to_itrf90 = -itrf90_to_itrf88 + +#ITRF89 Paramters +# Ref: https://itrf.ign.fr/en/solutions/transformations + +itrf89_to_itrf88 = iers2trans( + itrf_from="ITRF89", + itrf_to="ITRF88", + ref_epoch=date(2000, 1, 1), + tx=-5.0, + ty=-36, + tz=-24, + sc=3.1, + rx=0.1, + ry=0, + rz=0, + d_tx=0, + d_ty=0, + d_tz=0, + d_sc=0.0, + d_rx=0, + d_ry=0, + d_rz=0.0, +) + +itrf88_to_itrf89 = -itrf89_to_itrf88 + +# WGS84 (G2296) parameters +# https://navi.ion.org/content/72/2/navi.693 + +wgs84g2139_to_wgs84g2296_sd = iers2transSD( + sd_tx=1.5, + sd_ty=1.5, + sd_tz=1.5, + sd_sc=0.23, + sd_rx=0.06, + sd_ry=0.06, + sd_rz=0.06, + sd_d_tx=0.3, + sd_d_ty=0.3, + sd_d_tz=0.3, + sd_d_sc=0.04, + sd_d_rx=0.01, + sd_d_ry=0.01, + sd_d_rz=0.01 +) + +wgs84g1762_to_wgs84g2296_sd = iers2transSD( + sd_tx=3.6, + sd_ty=3.6, + sd_tz=3.6, + sd_sc=0.56, + sd_rx=0.15, + sd_ry=0.15, + sd_rz=0.13, + sd_d_tx=0.6, + sd_d_ty=0.6, + sd_d_tz=0.6, + sd_d_sc=0.09, + sd_d_rx=0.02, + sd_d_ry=0.03, + sd_d_rz=0.02 +) + +wgs84g2296_to_itrf2020_sd = TransformationSD( + sd_tx=0.02, + sd_ty=0.02, + sd_tz=0.02, + sd_sc=0.0, + sd_rx=0.0, + sd_ry=0.0, + sd_rz=0.0, + sd_d_tx=0.0, + sd_d_ty=0.0, + sd_d_tz=0.0, + sd_d_sc=0.0, + sd_d_rx=0.0, + sd_d_ry=0.0, + sd_d_rz=0.0 +) + +wgs84g2296_to_itrf2020 = Transformation( + from_datum="WGS84 (G2296)", + to_datum="ITRF2020", + ref_epoch=date(2024, 1, 1), + tx=0.0, + ty=0.0, + tz=0.0, + sc=0.0, + rx=0.0, + ry=0.0, + rz=-0.0, + d_tx=0.0, + d_ty=0.0, + d_tz=0.0, + d_sc=0.0, + d_rx=0.0, + d_ry=0.0, + d_rz=0.0, + tf_sd=wgs84g2296_to_itrf2020_sd +) + +wgs84g2139_to_wgs84g2296 = iers2trans( + itrf_from="WGS84 (G2139)", + itrf_to="WGS84 (G2296)", + ref_epoch=date(2024, 1, 1), + tx=2.6, + ty=5.4, + tz=-0.9, + sc=0.06, + rx=-0.01, + ry=-0.07, + rz=0.0, + d_tx=0.0, + d_ty=0.8, + d_tz=0.1, + d_sc=-0.01, + d_rx=0.0, + d_ry=-0.02, + d_rz=-0.02, + tf_sd=wgs84g2139_to_wgs84g2296_sd +) + +wgs84g1762_to_wgs84g2296 = iers2trans( + itrf_from="WGS84 (G1762)", + itrf_to="WGS84G2296", + ref_epoch=date(2024, 1, 1), + tx=4.2, + ty=-3.0, + tz=5.6, + sc=-4.24, + rx=-0.14, + ry=0.05, + rz=0.43, + d_tx=0.8, + d_ty=0.0, + d_tz=-0.1, + d_sc=0.04, + d_rx=0.0, + d_ry=-0.02, + d_rz=0.01, + tf_sd=wgs84g1762_to_wgs84g2296_sd +) + +itrf2020_to_wgs84g2296 = -wgs84g2296_to_itrf2020 +wgs84g2296_to_wgs84g2139 = -wgs84g2139_to_wgs84g2296 +wgs84g2296_to_wgs84g1762 = -wgs84g1762_to_wgs84g2296 + +#WGS84 (G2139) paramters +# https://www.unoosa.org/documents/pdf/icg/2023/ICG-17/icg17_wgd_02_02.pdf + +wgs84g2139_to_itrf2014_sd = TransformationSD( + sd_tx=0.02, + sd_ty=0.02, + sd_tz=0.02, + sd_sc=0.0, + sd_rx=0.0, + sd_ry=0.0, + sd_rz=0.0, + sd_d_tx=0.0, + sd_d_ty=0.0, + sd_d_tz=0.0, + sd_d_sc=0.0, + sd_d_rx=0.0, + sd_d_ry=0.0, + sd_d_rz=0.0 +) + +wgs84g2139_to_itrf2014 = Transformation( + from_datum="WGS84 (G2139)", + to_datum="ITRF2014", + ref_epoch=date(2016, 1, 1), + tx=0.0, + ty=0.0, + tz=0.0, + sc=0.0, + rx=0.0, + ry=0.0, + rz=-0.0, + d_tx=0.0, + d_ty=0.0, + d_tz=0.0, + d_sc=0.0, + d_rx=0.0, + d_ry=0.0, + d_rz=0.0, + tf_sd=wgs84g2139_to_itrf2014_sd +) + +itrf2014_to_wgs84g2139 = -wgs84g2139_to_itrf2014 + +#WGS84 (G1762) parameters +# https://www.unoosa.org/documents/pdf/icg/2023/ICG-17/icg17_wgd_02_02.pdf + +wgs84g1762_to_itrf2008_sd = TransformationSD( + sd_tx=0.02, + sd_ty=0.02, + sd_tz=0.02, + sd_sc=0.0, + sd_rx=0.0, + sd_ry=0.0, + sd_rz=0.0, + sd_d_tx=0.0, + sd_d_ty=0.0, + sd_d_tz=0.0, + sd_d_sc=0.0, + sd_d_rx=0.0, + sd_d_ry=0.0, + sd_d_rz=0.0 +) + +wgs84g1762_to_itrf2008 = Transformation( + from_datum="WGS84 (G1762)", + to_datum="ITRF2008", + ref_epoch=date(2005, 1, 1), + tx=0.0, + ty=0.0, + tz=0.0, + sc=0.0, + rx=0.0, + ry=0.0, + rz=-0.0, + d_tx=0.0, + d_ty=0.0, + d_tz=0.0, + d_sc=0.0, + d_rx=0.0, + d_ry=0.0, + d_rz=0.0, + tf_sd=wgs84g1762_to_itrf2008_sd +) + +itrf2008_to_wgs84g1762 = -wgs84g1762_to_itrf2008 + +#WGS84 (G1674) parameters +# https://www.unoosa.org/documents/pdf/icg/2023/ICG-17/icg17_wgd_02_02.pdf and +# Kelly and Dennis, 2022 + +wgs84g1674_to_itrf2005_sd = TransformationSD( + sd_tx=0.02, + sd_ty=0.02, + sd_tz=0.02, + sd_sc=0.0, + sd_rx=0.0, + sd_ry=0.0, + sd_rz=0.0, + sd_d_tx=0.0, + sd_d_ty=0.0, + sd_d_tz=0.0, + sd_d_sc=0.0, + sd_d_rx=0.0, + sd_d_ry=0.0, + sd_d_rz=0.0 +) + +wgs84g1674_to_wgs84g1762_sd = TransformationSD( + sd_tx=0.02, + sd_ty=0.02, + sd_tz=0.02, + sd_sc=0.0, + sd_rx=0.0, + sd_ry=0.0, + sd_rz=0.0, + sd_d_tx=0.0, + sd_d_ty=0.0, + sd_d_tz=0.0, + sd_d_sc=0.0, + sd_d_rx=0.0, + sd_d_ry=0.0, + sd_d_rz=0.0 +) + +itrf2005_to_wgs84g1674 = iers2trans( + itrf_from="ITRF2005", + itrf_to="WGS84 (G1674)", + ref_epoch=date(2005, 1, 1), + tx=4.5, + ty=-2.1, + tz=0.7, + sc=5.96, + rx=-0.27, + ry=0.27, + rz=-0.38, + d_tx=-0.3, + d_ty=0.0, + d_tz=0.0, + d_sc=0.0, + d_rx=0.0, + d_ry=0.0, + d_rz=0.0, + tf_sd=wgs84g1674_to_itrf2005_sd +) + +wgs84g1674_to_wgs84g1762 = iers2trans( + itrf_from="WGS84 (G1674)", + itrf_to="WGS84 (G1762)", + ref_epoch=date(2005, 1, 1), + tx=-4, + ty=3, + tz=4, + sc=-6.9, + rx=0.27, + ry=-0.27, + rz=-0.38, + d_tx=0.0, + d_ty=0.0, + d_tz=0.0, + d_sc=0.0, + d_rx=0.0, + d_ry=0.0, + d_rz=0.0, + tf_sd=wgs84g1674_to_itrf2005_sd +) + +wgs84g1674_to_itrf2005 = -itrf2005_to_wgs84g1674 +wgs84g1762_to_wgs84g1674 = -wgs84g1674_to_wgs84g1762 + +#WGS84 (G1150) parameters +# https://www.unoosa.org/documents/pdf/icg/2023/ICG-17/icg17_wgd_02_02.pdf + +wgs84g1150_to_itrf2000_sd = TransformationSD( + sd_tx=0.02, + sd_ty=0.02, + sd_tz=0.02, + sd_sc=0.0, + sd_rx=0.0, + sd_ry=0.0, + sd_rz=0.0, + sd_d_tx=0.0, + sd_d_ty=0.0, + sd_d_tz=0.0, + sd_d_sc=0.0, + sd_d_rx=0.0, + sd_d_ry=0.0, + sd_d_rz=0.0 +) + +#From Kelly and Dennis (2022) + +wgs84g1150_to_itrf2000 = iers2trans( + itrf_from="WGS84 (G1150)", + itrf_to="ITRF2000", + ref_epoch=date(2001, 1, 1), + tx=-7.8, + ty=3.4, + tz=7.7, + sc=3.08, + rx=0.0, + ry=0.0, + rz=-0.0, + d_tx=0.0, + d_ty=0.0, + d_tz=0.0, + d_sc=0.0, + d_rx=0.0, + d_ry=0.0, + d_rz=0.0, + tf_sd=wgs84g1150_to_itrf2000_sd +) + +itrf2000_to_wgs84g1150 = -wgs84g1150_to_itrf2000 + +#WGS84 (G873) parameters +# https://www.unoosa.org/documents/pdf/icg/2023/ICG-17/icg17_wgd_02_02.pdf + +wgs84g873_to_itrf94_sd = TransformationSD( + sd_tx=0.05, + sd_ty=0.05, + sd_tz=0.05, + sd_sc=0.0, + sd_rx=0.0, + sd_ry=0.0, + sd_rz=0.0, + sd_d_tx=0.0, + sd_d_ty=0.0, + sd_d_tz=0.0, + sd_d_sc=0.0, + sd_d_rx=0.0, + sd_d_ry=0.0, + sd_d_rz=0.0 +) + +wgs84g873_to_itrf96_sd = TransformationSD( + sd_tx=0.05, + sd_ty=0.05, + sd_tz=0.05, + sd_sc=0.0, + sd_rx=0.0, + sd_ry=0.0, + sd_rz=0.0, + sd_d_tx=0.0, + sd_d_ty=0.0, + sd_d_tz=0.0, + sd_d_sc=0.0, + sd_d_rx=0.0, + sd_d_ry=0.0, + sd_d_rz=0.0 +) + +wgs84g873_to_itrf97_sd = TransformationSD( + sd_tx=0.05, + sd_ty=0.05, + sd_tz=0.05, + sd_sc=0.0, + sd_rx=0.0, + sd_ry=0.0, + sd_rz=0.0, + sd_d_tx=0.0, + sd_d_ty=0.0, + sd_d_tz=0.0, + sd_d_sc=0.0, + sd_d_rx=0.0, + sd_d_ry=0.0, + sd_d_rz=0.0 +) + +wgs84g873_to_itrf94 = Transformation( + from_datum="WGS84 (G873)", + to_datum="ITRF94", + ref_epoch=date(1997, 1, 1), + tx=0.0, + ty=0.0, + tz=0.0, + sc=0.0, + rx=0.0, + ry=0.0, + rz=-0.0, + d_tx=0.0, + d_ty=0.0, + d_tz=0.0, + d_sc=0.0, + d_rx=0.0, + d_ry=0.0, + d_rz=0.0, + tf_sd=wgs84g873_to_itrf94_sd +) + +wgs84g873_to_itrf96 = Transformation( + from_datum="WGS84 (G873)", + to_datum="ITRF94", + ref_epoch=date(1997, 1, 1), + tx=0.0, + ty=0.0, + tz=0.0, + sc=0.0, + rx=0.0, + ry=0.0, + rz=-0.0, + d_tx=0.0, + d_ty=0.0, + d_tz=0.0, + d_sc=0.0, + d_rx=0.0, + d_ry=0.0, + d_rz=0.0, + tf_sd=wgs84g873_to_itrf94_sd +) + +wgs84g873_to_itrf97 = Transformation( + from_datum="WGS84 (G873)", + to_datum="ITRF94", + ref_epoch=date(1997, 1, 1), + tx=0.0, + ty=0.0, + tz=0.0, + sc=0.0, + rx=0.0, + ry=0.0, + rz=-0.0, + d_tx=0.0, + d_ty=0.0, + d_tz=0.0, + d_sc=0.0, + d_rx=0.0, + d_ry=0.0, + d_rz=0.0, + tf_sd=wgs84g873_to_itrf94_sd +) + +itrf94_to_wgs84g873 = -wgs84g873_to_itrf94 +itrf96_to_wgs84g873 = -wgs84g873_to_itrf96 +itrf97_to_wgs84g873 = -wgs84g873_to_itrf97 + +#WGS84 (G730) parameters +# https://www.unoosa.org/documents/pdf/icg/2023/ICG-17/icg17_wgd_02_02.pdf + +wgs84g730_to_itrf91_sd = TransformationSD( + sd_tx=0.1, + sd_ty=0.1, + sd_tz=0.1, + sd_sc=0.0, + sd_rx=0.0, + sd_ry=0.0, + sd_rz=0.0, + sd_d_tx=0.0, + sd_d_ty=0.0, + sd_d_tz=0.0, + sd_d_sc=0.0, + sd_d_rx=0.0, + sd_d_ry=0.0, + sd_d_rz=0.0 +) + +wgs84g730_to_itrf91 = Transformation( + from_datum="WGS84 (G730)", + to_datum="ITRF91", + ref_epoch=date(1994, 1, 1), + tx=0.0, + ty=0.0, + tz=0.0, + sc=0.0, + rx=0.0, + ry=0.0, + rz=-0.0, + d_tx=0.0, + d_ty=0.0, + d_tz=0.0, + d_sc=0.0, + d_rx=0.0, + d_ry=0.0, + d_rz=0.0, + tf_sd=wgs84g730_to_itrf91_sd +) + +itrf91_to_wgs84g730 = -wgs84g730_to_itrf91 + +#WGS84 (Transit) parameters +# Kelly and Dennis (2022) + +wgs84trans_to_itrf90_sd = TransformationSD( + sd_tx=2.0, + sd_ty=2.0, + sd_tz=2.0, + sd_sc=0.0, + sd_rx=0.0, + sd_ry=0.0, + sd_rz=0.0, + sd_d_tx=0.0, + sd_d_ty=0.0, + sd_d_tz=0.0, + sd_d_sc=0.0, + sd_d_rx=0.0, + sd_d_ry=0.0, + sd_d_rz=0.0 +) + +wgs84trans_to_itrf90 = Transformation( + from_datum="WGS84 (Transit)", + to_datum="ITRF90", + ref_epoch=date(1990, 7, 1), + tx=-0.06, + ty=0.517, + tz=0.223, + sc=0.011, + rx=-0.0183, + ry=0.0003, + rz=-0.007, + d_tx=0, + d_ty=0, + d_tz=0, + d_sc=0, + d_rx=0.0, + d_ry=0.0, + d_rz=0.0, + tf_sd=wgs84trans_to_itrf90_sd +) + +itrf90_to_wgs84trans = -wgs84trans_to_itrf90 + +# WGS84 Ensemble parameters + +wgs84ensemble_to_itrf2014_sd = TransformationSD( + sd_tx=3.0, + sd_ty=3.0, + sd_tz=3.0, + sd_sc=0.0, + sd_rx=0.0, + sd_ry=0.0, + sd_rz=0.0, + sd_d_tx=0.0, + sd_d_ty=0.0, + sd_d_tz=0.0, + sd_d_sc=0.0, + sd_d_rx=0.0, + sd_d_ry=0.0, + sd_d_rz=0.0 +) + +wgs84ensemble_to_itrf2014 = Transformation( + from_datum="WGS84 Ensemble", + to_datum="ITRF2014", + ref_epoch=date(2014, 1, 1), + tx=0.0, + ty=0.0, + tz=0.0, + sc=0.0, + rx=0.0, + ry=0.0, + rz=-0.0, + d_tx=0.0, + d_ty=0.0, + d_tz=0.0, + d_sc=0.0, + d_rx=0.0, + d_ry=0.0, + d_rz=0.0, + tf_sd=wgs84ensemble_to_itrf2014_sd +) + +itrf2014_to_wgs84ensemble = -wgs84ensemble_to_itrf2014 # The locations of files used in the height module aws_server = "/vsicurl/https://geoid.s3-ap-southeast-2.amazonaws.com/"