From f361f89dff6465eac6d3b1ba4535e4ed16eeae6d Mon Sep 17 00:00:00 2001 From: KyranCookGA Date: Thu, 26 Feb 2026 06:23:49 +0000 Subject: [PATCH 1/9] Added WGS84 transformation paramters Also fixed iers2trans for accept SD paramters --- geodepy/constants.py | 519 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 519 insertions(+) diff --git a/geodepy/constants.py b/geodepy/constants.py index bb9cf34..62f8c77 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), ) @@ -1874,6 +1930,469 @@ class parameters. itrf89_to_itrf2000 = -itrf2000_to_itrf89 itrf88_to_itrf2000 = -itrf2000_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( + itrf_from="WGS84 (G2296)", + itrf_to="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 +wgs84g2296to_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( + itrf_from="WGS84 (G2139)", + itrf_to="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( + itrf_from="WGS84 (G1762)", + itrf_to="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 + +wgs84g1674_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 +) + +wgs84g1674_to_itrf2008 = Transformation( + itrf_from="WGS84 (G1674)", + itrf_to="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_wgs84g1674 = -wgs84g1674_to_itrf2008 + +#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 +) + +wgs84g1150_to_itrf2000 = Transformation( + itrf_from="WGS84 (G1150)", + itrf_to="ITRF2000", + ref_epoch=date(2001, 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=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_itrf94 = Transformation( + itrf_from="WGS84 (G873)", + itrf_to="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 + +#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( + itrf_from="WGS84 (G730)", + itrf_to="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 +# https://www.unoosa.org/documents/pdf/icg/2023/ICG-17/icg17_wgd_02_02.pdf + +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( + itrf_from="WGS84 (Transit)", + itrf_to="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.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=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( + itrf_from="WGS84 Ensemble", + itrf_to="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/" From aaed6eee580ea958ad2df5a1eb4fa004715f8c69 Mon Sep 17 00:00:00 2001 From: KyranCookGA Date: Wed, 4 Mar 2026 05:06:10 +0000 Subject: [PATCH 2/9] Added extra ITRF transformations and WGS84 --- geodepy/constants.py | 1400 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 1223 insertions(+), 177 deletions(-) diff --git a/geodepy/constants.py b/geodepy/constants.py index 62f8c77..ff5feab 100644 --- a/geodepy/constants.py +++ b/geodepy/constants.py @@ -704,6 +704,58 @@ class parameters. sd_d_rz=0.0001169, ) +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", @@ -821,6 +873,7 @@ class parameters. rx=-0.292, ry=-0.443, rz=-0.277, + tf_sd=agd84_to_gda94_sd ) agd66_to_gda94 = Transformation( @@ -834,6 +887,7 @@ class parameters. rx=-0.303, ry=-0.446, rz=-0.234, + tf_sd=agd66_to_gda94_sd ) agd66_to_gda94_act = Transformation( @@ -847,6 +901,7 @@ class parameters. rx=-0.246, ry=-0.374, rz=-0.329, + tf_sd=agd66_to_gda94_state_sd ) agd66_to_gda94_tas = Transformation( @@ -860,6 +915,7 @@ class parameters. rx=-0.217, ry=0.067, rz=0.129, + tf_sd=agd66_to_gda94_state_sd ) agd66_to_gda94_vicnsw = Transformation( @@ -873,6 +929,7 @@ class parameters. rx=-0.415, ry=-0.260, rz=-0.437, + tf_sd=agd66_to_gda94_state_sd ) agd66_to_gda94_nt = Transformation( @@ -886,6 +943,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 @@ -926,6 +984,23 @@ class parameters. d_rz=0.0, ) +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", @@ -944,6 +1019,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( @@ -1209,6 +1285,23 @@ class parameters. # here: https://www.icsm.gov.au/gda2020-and-gda94-technical-manuals # Ref: http://itrf.ign.fr/doc_ITRF/Transfo-ITRF2014_ITRFs.txt +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", @@ -1227,6 +1320,7 @@ class parameters. d_rx=0, d_ry=0, d_rz=0, + tf_sd=itrf2014_to_itrf2008_sd, ) itrf2014_to_itrf2005 = iers2trans( @@ -1471,6 +1565,23 @@ class parameters. # here: https://www.icsm.gov.au/gda2020-and-gda94-technical-manuals # Ref: http://itrf.ign.fr/doc_ITRF/Transfo-ITRF2008_ITRFs.txt +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", @@ -1712,6 +1823,23 @@ class parameters. # here: https://www.icsm.gov.au/gda2020-and-gda94-technical-manuals # Ref: http://itrf.ensg.ign.fr/ITRF_solutions/2005/tp_05-00.php +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", itrf_to="ITRF2000", @@ -1730,6 +1858,7 @@ class parameters. d_rx=0, d_ry=0, d_rz=0, + tf_sd=itrf2005_to_itrf2000_sd, ) itrf2000_to_itrf2005 = -itrf2005_to_itrf2000 @@ -1930,174 +2059,911 @@ class parameters. itrf89_to_itrf2000 = -itrf2000_to_itrf89 itrf88_to_itrf2000 = -itrf2000_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 -) +# ITRF97 paramters -wgs84g2296_to_itrf2020 = Transformation( - itrf_from="WGS84 (G2296)", - itrf_to="ITRF2020", - ref_epoch=date(2024, 1, 1), - tx=0.0, - ty=0.0, - tz=0.0, - sc=0.0, +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.0, - rz=-0.0, + ry=0, + rz=0, d_tx=0.0, - d_ty=0.0, - d_tz=0.0, + d_ty=0, + d_tz=0, d_sc=0.0, - d_rx=0.0, - d_ry=0.0, + d_rx=0, + d_ry=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, +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.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 + d_ty=0, + d_tz=0, + d_sc=0.0, + d_rx=0, + d_ry=0, + d_rz=0.0, ) -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 +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, ) -itrf2020_to_wgs84g2296 = -wgs84g2296_to_itrf2020 -wgs84g2296to_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 +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, ) -wgs84g2139_to_itrf2014 = Transformation( - itrf_from="WGS84 (G2139)", - itrf_to="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, +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.0, - d_ry=0.0, + d_rx=0, + d_ry=0, d_rz=0.0, - tf_sd=wgs84g2139_to_itrf2014_sd ) -itrf2014_to_wgs84g2139 = -wgs84g2139_to_itrf2014 - -#WGS84 (G1762) parameters +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 + +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 + +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 + +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 + +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 + +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 + +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 + +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 -wgs84g1762_to_itrf2008_sd = TransformationSD( +wgs84g2139_to_itrf2014_sd = TransformationSD( sd_tx=0.02, sd_ty=0.02, sd_tz=0.02, @@ -2114,10 +2980,10 @@ class parameters. sd_d_rz=0.0 ) -wgs84g1762_to_itrf2008 = Transformation( - itrf_from="WGS84 (G1762)", - itrf_to="ITRF2008", - ref_epoch=date(2005, 1, 1), +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, @@ -2132,15 +2998,15 @@ class parameters. d_rx=0.0, d_ry=0.0, d_rz=0.0, - tf_sd=wgs84g1762_to_itrf2008_sd + tf_sd=wgs84g2139_to_itrf2014_sd ) -itrf2008_to_wgs84g1762 = -wgs84g1762_to_itrf2008 +itrf2014_to_wgs84g2139 = -wgs84g2139_to_itrf2014 -#WGS84 (G1674) parameters +#WGS84 (G1762) parameters # https://www.unoosa.org/documents/pdf/icg/2023/ICG-17/icg17_wgd_02_02.pdf -wgs84g1674_to_itrf2008_sd = TransformationSD( +wgs84g1762_to_itrf2008_sd = TransformationSD( sd_tx=0.02, sd_ty=0.02, sd_tz=0.02, @@ -2157,9 +3023,9 @@ class parameters. sd_d_rz=0.0 ) -wgs84g1674_to_itrf2008 = Transformation( - itrf_from="WGS84 (G1674)", - itrf_to="ITRF2008", +wgs84g1762_to_itrf2008 = Transformation( + from_datum="WGS84 (G1762)", + to_datum="ITRF2008", ref_epoch=date(2005, 1, 1), tx=0.0, ty=0.0, @@ -2178,7 +3044,90 @@ class parameters. tf_sd=wgs84g1762_to_itrf2008_sd ) -itrf2008_to_wgs84g1674 = -wgs84g1674_to_itrf2008 +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 @@ -2200,14 +3149,16 @@ class parameters. sd_d_rz=0.0 ) -wgs84g1150_to_itrf2000 = Transformation( +#From Kelly and Dennis (2022) + +wgs84g1150_to_itrf2000 = iers2trans( itrf_from="WGS84 (G1150)", itrf_to="ITRF2000", ref_epoch=date(2001, 1, 1), - tx=0.0, - ty=0.0, - tz=0.0, - sc=0.0, + tx=-7.8, + ty=3.4, + tz=7.7, + sc=3.08, rx=0.0, ry=0.0, rz=-0.0, @@ -2243,9 +3194,85 @@ class parameters. 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( - itrf_from="WGS84 (G873)", - itrf_to="ITRF94", + 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, @@ -2265,6 +3292,8 @@ class parameters. ) 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 @@ -2286,9 +3315,26 @@ class parameters. sd_d_rz=0.0 ) +wgs84g730_to_itrf90_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( - itrf_from="WGS84 (G730)", - itrf_to="ITRF91", + from_datum="WGS84 (G730)", + to_datum="ITRF91", ref_epoch=date(1994, 1, 1), tx=0.0, ty=0.0, @@ -2330,8 +3376,8 @@ class parameters. ) wgs84trans_to_itrf90 = Transformation( - itrf_from="WGS84 (Transit)", - itrf_to="ITRF90", + from_datum="WGS84 (Transit)", + to_datum="ITRF90", ref_epoch=date(1990, 7, 1), tx=-0.06, ty=0.517, @@ -2340,10 +3386,10 @@ class parameters. rx=-0.0183, ry=0.0003, rz=-0.007, - d_tx=0.0, - d_ty=0.0, - d_tz=0.0, - d_sc=0.0, + d_tx=0, + d_ty=0, + d_tz=0, + d_sc=0, d_rx=0.0, d_ry=0.0, d_rz=0.0, @@ -2372,8 +3418,8 @@ class parameters. ) wgs84ensemble_to_itrf2014 = Transformation( - itrf_from="WGS84 Ensemble", - itrf_to="ITRF2014", + from_datum="WGS84 Ensemble", + to_datum="ITRF2014", ref_epoch=date(2014, 1, 1), tx=0.0, ty=0.0, From 0a51fe21cd93cc34f2d5d0f2533262b14292fcc0 Mon Sep 17 00:00:00 2001 From: KyranCookGA Date: Thu, 12 Mar 2026 06:20:08 +0000 Subject: [PATCH 3/9] Added References --- geodepy/constants.py | 82 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 80 insertions(+), 2 deletions(-) diff --git a/geodepy/constants.py b/geodepy/constants.py index ff5feab..380e477 100644 --- a/geodepy/constants.py +++ b/geodepy/constants.py @@ -613,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 = atrf2014_to_gda2020 = 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] @@ -704,6 +744,8 @@ 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, @@ -984,6 +1026,7 @@ 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, @@ -1285,6 +1328,8 @@ 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, @@ -1565,6 +1610,7 @@ 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, @@ -1823,6 +1869,7 @@ class parameters. # 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/itrf2005 itrf2005_to_itrf2000_sd = iers2transSD( sd_tx=0.3, sd_ty=0.3, @@ -1869,6 +1916,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", @@ -1887,6 +1954,7 @@ class parameters. d_rx=0, d_ry=0, d_rz=0.02, + tf_sd=itrf2000_to_itrf97_sd ) itrf2000_to_itrf96 = iers2trans( @@ -1907,6 +1975,7 @@ class parameters. d_rx=0, d_ry=0, d_rz=0.02, + tf_sd=itrf2000_to_itrf97_sd ) itrf2000_to_itrf94 = iers2trans( @@ -1927,6 +1996,7 @@ class parameters. d_rx=0, d_ry=0, d_rz=0.02, + tf_sd=itrf2000_to_itrf97_sd ) itrf2000_to_itrf93 = iers2trans( @@ -2060,6 +2130,7 @@ class parameters. itrf88_to_itrf2000 = -itrf2000_to_itrf88 # ITRF97 paramters +# Ref: https://itrf.ign.fr/en/solutions/transformations itrf97_to_itrf96 = iers2trans( itrf_from="ITRF97", @@ -2231,6 +2302,7 @@ class parameters. itrf88_to_itrf97 = -itrf97_to_itrf88 # itrf96 +# Ref: https://itrf.ign.fr/en/solutions/transformations itrf96_to_itrf94 = iers2trans( itrf_from="ITRF96", @@ -2381,6 +2453,7 @@ class parameters. itrf88_to_itrf96 = -itrf96_to_itrf88 # ITRF94 parameters +# Ref: https://itrf.ign.fr/en/solutions/transformations itrf94_to_itrf93 = iers2trans( itrf_from="ITRF94", @@ -2510,6 +2583,7 @@ class parameters. itrf88_to_itrf94 = -itrf94_to_itrf88 # ITRF93 paramters +# Ref: https://itrf.ign.fr/en/solutions/transformations itrf93_to_itrf92 = iers2trans( itrf_from="ITRF93", @@ -2618,6 +2692,7 @@ class parameters. itrf88_to_itrf93 = -itrf93_to_itrf88 # ITRF92 paramters +# Ref: https://itrf.ign.fr/en/solutions/transformations itrf92_to_itrf91 = iers2trans( itrf_from="ITRF92", @@ -2705,6 +2780,7 @@ class parameters. itrf88_to_itrf92 = -itrf92_to_itrf88 # ITRF91 parameters +# Ref: https://itrf.ign.fr/en/solutions/transformations itrf91_to_itrf90 = iers2trans( itrf_from="ITRF91", @@ -2771,6 +2847,7 @@ class parameters. itrf88_to_itrf91 = -itrf91_to_itrf88 # ITRF90 Parameters +# Ref: https://itrf.ign.fr/en/solutions/transformations itrf90_to_itrf89 = iers2trans( itrf_from="ITRF90", @@ -2816,6 +2893,7 @@ class parameters. itrf88_to_itrf90 = -itrf90_to_itrf88 #ITRF89 Paramters +# Ref: https://itrf.ign.fr/en/solutions/transformations itrf89_to_itrf88 = iers2trans( itrf_from="ITRF89", @@ -3356,7 +3434,7 @@ class parameters. itrf91_to_wgs84g730 = -wgs84g730_to_itrf91 #WGS84 (Transit) parameters -# https://www.unoosa.org/documents/pdf/icg/2023/ICG-17/icg17_wgd_02_02.pdf +# Kelly and Dennis (2022) wgs84trans_to_itrf90_sd = TransformationSD( sd_tx=2.0, @@ -3398,7 +3476,7 @@ class parameters. itrf90_to_wgs84trans = -wgs84trans_to_itrf90 -#WGS84 Ensemble parameters +# WGS84 Ensemble parameters wgs84ensemble_to_itrf2014_sd = TransformationSD( sd_tx=3.0, From d7b9745eab4f5875b6d7c578ca7aa0808c4e1350 Mon Sep 17 00:00:00 2001 From: KyranCookGA Date: Thu, 12 Mar 2026 06:38:57 +0000 Subject: [PATCH 4/9] Added ITRF2005 transformations --- geodepy/constants.py | 190 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 190 insertions(+) diff --git a/geodepy/constants.py b/geodepy/constants.py index 380e477..9479545 100644 --- a/geodepy/constants.py +++ b/geodepy/constants.py @@ -1868,6 +1868,7 @@ 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( @@ -1908,7 +1909,196 @@ class parameters. 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 From d401324ece594473f6a25d3e39b3126ca47df252 Mon Sep 17 00:00:00 2001 From: KyranCookGA Date: Fri, 13 Mar 2026 01:43:32 +0000 Subject: [PATCH 5/9] Fixed error with ATRF2014 to GDA2020 --- geodepy/constants.py | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/geodepy/constants.py b/geodepy/constants.py index 9479545..aad17cc 100644 --- a/geodepy/constants.py +++ b/geodepy/constants.py @@ -630,7 +630,7 @@ class parameters. sd_d_rz=0.00, ) -itrf2014_to_atrf2014 = atrf2014_to_gda2020 = Transformation( +itrf2014_to_atrf2014 = Transformation( from_datum="ITRF2014", to_datum="ATRF2014", ref_epoch=date(2020, 1, 1), @@ -3583,23 +3583,6 @@ class parameters. sd_d_rz=0.0 ) -wgs84g730_to_itrf90_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", From d138c747f2198b9f121f731364a0dd62a5bf2502 Mon Sep 17 00:00:00 2001 From: KyranCookGA Date: Thu, 19 Mar 2026 04:54:20 +0000 Subject: [PATCH 6/9] Removed ITRF transformations for seperate commit --- geodepy/constants.py | 1241 ++---------------------------------------- 1 file changed, 31 insertions(+), 1210 deletions(-) diff --git a/geodepy/constants.py b/geodepy/constants.py index aad17cc..9b8f015 100644 --- a/geodepy/constants.py +++ b/geodepy/constants.py @@ -362,7 +362,6 @@ def iers2trans( d_rx, d_ry, d_rz, - tf_sd=None ): """ Used to convert IERS transformation parameters into GeodePy Transformation @@ -406,7 +405,6 @@ class parameters. round(-d_rx / 1000, 8), round(-d_ry / 1000, 8), round(-d_rz / 1000, 8), - tf_sd=tf_sd ) def iers2transSD( @@ -613,46 +611,6 @@ 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] @@ -744,60 +702,6 @@ 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", @@ -915,7 +819,6 @@ class parameters. rx=-0.292, ry=-0.443, rz=-0.277, - tf_sd=agd84_to_gda94_sd ) agd66_to_gda94 = Transformation( @@ -929,7 +832,6 @@ class parameters. rx=-0.303, ry=-0.446, rz=-0.234, - tf_sd=agd66_to_gda94_sd ) agd66_to_gda94_act = Transformation( @@ -943,7 +845,6 @@ class parameters. rx=-0.246, ry=-0.374, rz=-0.329, - tf_sd=agd66_to_gda94_state_sd ) agd66_to_gda94_tas = Transformation( @@ -957,7 +858,6 @@ class parameters. rx=-0.217, ry=0.067, rz=0.129, - tf_sd=agd66_to_gda94_state_sd ) agd66_to_gda94_vicnsw = Transformation( @@ -971,7 +871,6 @@ class parameters. rx=-0.415, ry=-0.260, rz=-0.437, - tf_sd=agd66_to_gda94_state_sd ) agd66_to_gda94_nt = Transformation( @@ -985,7 +884,6 @@ class parameters. rx=0.008, ry=-0.557, rz=-0.178, - tf_sd=agd66_to_gda94_state_sd ) gda94_to_itrf2008 = -itrf2008_to_gda94 @@ -1026,24 +924,6 @@ 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", @@ -1062,7 +942,6 @@ class parameters. d_rx=0.0, d_ry=0.0, d_rz=0.0, - tf_sd=itrf2020_to_itrf2014_sd, ) itrf2020_to_itrf2008 = iers2trans( @@ -1328,25 +1207,6 @@ 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", @@ -1365,7 +1225,6 @@ class parameters. d_rx=0, d_ry=0, d_rz=0, - tf_sd=itrf2014_to_itrf2008_sd, ) itrf2014_to_itrf2005 = iers2trans( @@ -1610,24 +1469,6 @@ 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", @@ -1868,25 +1709,6 @@ 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", @@ -1906,199 +1728,9 @@ 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 @@ -2106,26 +1738,6 @@ 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", @@ -2144,7 +1756,6 @@ class parameters. d_rx=0, d_ry=0, d_rz=0.02, - tf_sd=itrf2000_to_itrf97_sd ) itrf2000_to_itrf96 = iers2trans( @@ -2165,7 +1776,6 @@ class parameters. d_rx=0, d_ry=0, d_rz=0.02, - tf_sd=itrf2000_to_itrf97_sd ) itrf2000_to_itrf94 = iers2trans( @@ -2186,7 +1796,6 @@ class parameters. d_rx=0, d_ry=0, d_rz=0.02, - tf_sd=itrf2000_to_itrf97_sd ) itrf2000_to_itrf93 = iers2trans( @@ -2319,796 +1928,8 @@ 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 +# WGS84 (G2296) parameters +# https://navi.ion.org/content/72/2/navi.693 wgs84g2139_to_wgs84g2296_sd = iers2transSD( sd_tx=1.5, @@ -3145,9 +1966,9 @@ class parameters. ) wgs84g2296_to_itrf2020_sd = TransformationSD( - sd_tx=0.02, - sd_ty=0.02, - sd_tz=0.02, + sd_tx=0.01, + sd_ty=0.01, + sd_tz=0.01, sd_sc=0.0, sd_rx=0.0, sd_ry=0.0, @@ -3232,9 +2053,9 @@ class parameters. # 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_tx=0.01, + sd_ty=0.01, + sd_tz=0.01, sd_sc=0.0, sd_rx=0.0, sd_ry=0.0, @@ -3275,9 +2096,9 @@ class 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_tx=0.01, + sd_ty=0.01, + sd_tz=0.01, sd_sc=0.0, sd_rx=0.0, sd_ry=0.0, @@ -3319,9 +2140,9 @@ class parameters. # Kelly and Dennis, 2022 wgs84g1674_to_itrf2005_sd = TransformationSD( - sd_tx=0.02, - sd_ty=0.02, - sd_tz=0.02, + sd_tx=0.01, + sd_ty=0.01, + sd_tz=0.01, sd_sc=0.0, sd_rx=0.0, sd_ry=0.0, @@ -3336,9 +2157,9 @@ class parameters. ) wgs84g1674_to_wgs84g1762_sd = TransformationSD( - sd_tx=0.02, - sd_ty=0.02, - sd_tz=0.02, + sd_tx=0.01, + sd_ty=0.01, + sd_tz=0.01, sd_sc=0.0, sd_rx=0.0, sd_ry=0.0, @@ -3383,7 +2204,7 @@ class parameters. sc=-6.9, rx=0.27, ry=-0.27, - rz=-0.38, + rz=0.38, d_tx=0.0, d_ty=0.0, d_tz=0.0, @@ -3401,9 +2222,9 @@ class 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_tx=0.01, + sd_ty=0.01, + sd_tz=0.01, sd_sc=0.0, sd_rx=0.0, sd_ry=0.0, @@ -3426,7 +2247,7 @@ class parameters. tx=-7.8, ty=3.4, tz=7.7, - sc=3.08, + sc=-3.08, rx=0.0, ry=0.0, rz=-0.0, @@ -3626,17 +2447,17 @@ class parameters. sd_d_rz=0.0 ) -wgs84trans_to_itrf90 = Transformation( +wgs84trans_to_itrf90 = iers2trans( 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, + tx=-60, + ty=517, + tz=223, + sc=11, + rx=18.3, + ry=-0.3, + rz=7.0, d_tx=0, d_ty=0, d_tz=0, @@ -3644,7 +2465,6 @@ class parameters. d_rx=0.0, d_ry=0.0, d_rz=0.0, - tf_sd=wgs84trans_to_itrf90_sd ) itrf90_to_wgs84trans = -wgs84trans_to_itrf90 @@ -3691,6 +2511,7 @@ class parameters. 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/" file_DOV_PV = aws_server + "AGQG/DOV_PV.tif" From e13fcdb806e0abbdee66a6b1f060dcf86654f9cc Mon Sep 17 00:00:00 2001 From: KyranCookGA Date: Thu, 19 Mar 2026 04:58:27 +0000 Subject: [PATCH 7/9] Added TransformSD to iers2trans --- geodepy/constants.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/geodepy/constants.py b/geodepy/constants.py index 9b8f015..a9ebe45 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 @@ -385,6 +386,7 @@ class parameters. :param d_rx: Rate of change in Rotation about X (milliarcsec/yr) :param d_ry: Rate of change in Rotation about X (milliarcsec/yr) :param d_rz: Rate of change in Rotation about X (milliarcsec/yr) + :param tf_sd: TransformationSD object :return: Transformation object following the Australian convention """ return Transformation( @@ -405,6 +407,7 @@ class parameters. round(-d_rx / 1000, 8), round(-d_ry / 1000, 8), round(-d_rz / 1000, 8), + tf_sd=tf_sd ) def iers2transSD( From 6f1a8a0564b59617d4a917fcb0c0689d49cef1e1 Mon Sep 17 00:00:00 2001 From: KyranCookGA Date: Thu, 19 Mar 2026 05:03:13 +0000 Subject: [PATCH 8/9] Fixed from_datum issue --- geodepy/constants.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/geodepy/constants.py b/geodepy/constants.py index a9ebe45..622709b 100644 --- a/geodepy/constants.py +++ b/geodepy/constants.py @@ -2451,8 +2451,8 @@ class parameters. ) wgs84trans_to_itrf90 = iers2trans( - from_datum="WGS84 (Transit)", - to_datum="ITRF90", + itrf_from="WGS84 (Transit)", + itrf_to="ITRF90", ref_epoch=date(1990, 7, 1), tx=-60, ty=517, @@ -2492,8 +2492,8 @@ class parameters. ) wgs84ensemble_to_itrf2014 = Transformation( - from_datum="WGS84 Ensemble", - to_datum="ITRF2014", + itrf_from="WGS84 Ensemble", + itrf_to="ITRF2014", ref_epoch=date(2014, 1, 1), tx=0.0, ty=0.0, From ab9a0145aa716b1d6cc71c4f36fdb49c2a165bd1 Mon Sep 17 00:00:00 2001 From: KyranCookGA Date: Thu, 19 Mar 2026 05:05:58 +0000 Subject: [PATCH 9/9] Fixed itrf_from issue --- geodepy/constants.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/geodepy/constants.py b/geodepy/constants.py index 622709b..eb2ada9 100644 --- a/geodepy/constants.py +++ b/geodepy/constants.py @@ -2492,8 +2492,8 @@ class parameters. ) wgs84ensemble_to_itrf2014 = Transformation( - itrf_from="WGS84 Ensemble", - itrf_to="ITRF2014", + from_datum="WGS84 Ensemble", + to_datum="ITRF2014", ref_epoch=date(2014, 1, 1), tx=0.0, ty=0.0,