|
3 | 3 | Time Dependant Transformations |
4 | 4 | ============================== |
5 | 5 |
|
6 | | -In this tutorial we will discuss time dependant transformations where the reference epoch needs to be changed. |
7 | | -To see transformations between static datums view the :ref:`datum transformation <tutorials/transform>` tutorial. |
| 6 | +In this tutorial we will discuss time dependant transformations. |
| 7 | +To see transformations between static datums view the :ref:`datum transformation <tutorials/transform>` tutorial. |
| 8 | + |
| 9 | +Time dependant transformation are much more complex then transformation between static datums. First we will complete a simply example. |
| 10 | + |
| 11 | +Common Example |
| 12 | +-------------- |
| 13 | + |
| 14 | +Here we will convert between ATRF2014 and GDA2020. This is transforming from a dynamic datum to a static datum. |
| 15 | + |
| 16 | +In this example we will transform a coordinate in ATRF2014 at epoch 1/1/2011. |
| 17 | + |
| 18 | +First we will import geodepy |
| 19 | + |
| 20 | +.. code:: python |
| 21 | +
|
| 22 | + import geodepy.tranform |
| 23 | + from datetime import date |
| 24 | +
|
| 25 | +Now the function for transforming from ATRF2014 to GDA2020 can be used. |
| 26 | + |
| 27 | +.. code:: python |
| 28 | +
|
| 29 | + x_20, y_20, z_20, vcv = geodepy.transform.transform_atrf2014_to_gda2020(-4050762.770917, 4220880.800229, -2533400.199554, date(2011,1,1)) |
| 30 | + print(x_20, y_20, z_20) |
| 31 | +
|
| 32 | + >>-4050763.124034 4220880.753100 -2533399.713463 |
| 33 | +
|
| 34 | +This is the GDA2020 coordinate. |
| 35 | + |
| 36 | +Transforming between Dynamic and Static Datums |
| 37 | +---------------------------------------------- |
| 38 | + |
| 39 | +The simpliest time dependant transformations go between static and dynamic datums. This is because often the |
| 40 | +transformation paramters are already present. Below we will complete an example that doesnt include a dedicated function. |
| 41 | + |
| 42 | +Here we will transform from GDA2020 to ITRF2008 at 1/1/2007. |
| 43 | + |
| 44 | +.. code:: python |
| 45 | +
|
| 46 | + import geodepy.tranform |
| 47 | + import geodepy.constants |
| 48 | + from datetime import date |
| 49 | +
|
| 50 | +To go from gda2020 to ITRF2008 we need to investigate what transformations are present in GeodePy. This can be found |
| 51 | +in :ref:`this <features/constants/transform>` table. Here it can be seen that to get to ITRF2008 there is a transformation from GDA94. |
| 52 | +As such we need to first covert from GDA2020 to GDA94. As these are two dynamic datums this can be completed using the conform7 function. |
| 53 | + |
| 54 | +.. code:: python |
| 55 | +
|
| 56 | + x, y, z, vcv = geodepy.transform.conform7(-4050763.124034, 4220880.753100, -2533399.713463, geodepy.constants.gda2020_to_gda94) |
| 57 | +
|
| 58 | + print(x, y, z) |
| 59 | +
|
| 60 | + >>-4050762.150962573 4220880.967167697 -2533401.149358874 |
| 61 | +
|
| 62 | +Now we can convert from GDA94 to ITRF2008 |
| 63 | + |
| 64 | +.. code:: python |
| 65 | +
|
| 66 | + x, y, z, vcv = geodepy.transform.conform14(x, y, z, date(2007,1,1), geodepy.constants.gda94_to_itrf2008) |
| 67 | +
|
| 68 | + print(x, y, z) |
| 69 | +
|
| 70 | + >>-4050762.612530 4220880.821783 -2533400.416214 |
| 71 | +
|
| 72 | +This is the ITRF2008 coordinate on 1/1/2007 |
| 73 | + |
| 74 | +Transforming Between Two Dynamic Datums |
| 75 | +--------------------------------------- |
| 76 | + |
| 77 | +Transforming between two dynamic datums is more complex, requiring a few more steps and considerations. |
| 78 | +For tihs example we will transform from ITRF2008 at 1/1/2007 to ITRF2020 at 1/1/2030. |
| 79 | + |
| 80 | +.. code:: python |
| 81 | +
|
| 82 | + import geodepy.constant |
| 83 | + import geodepy.transform |
| 84 | +
|
| 85 | +First the ITRF2008 coordinates need to be converted to ITRF2014. This is completed so that the plate motion |
| 86 | +between 2007 and 2030 can be applied. The plate motion can only be applied to coordinates in ITRF2014 or |
| 87 | +ATRF2014. When completeing this transformation the date of the ITRF2008 epoch is entered. This means the |
| 88 | +resulting ITRF2020 cooridnate will be at the IRTF2008 epoch. |
| 89 | + |
| 90 | +.. code:: python |
| 91 | +
|
| 92 | + x, y, z, vcv = geodepy.transform.conform14(-4050762.612530, 4220880.821783, -2533400.416214, date(2007, 1, 1), geodepy.constants.itrf2008_to_itrf2014) |
| 93 | +
|
| 94 | + print(x, y, z) |
| 95 | +
|
| 96 | + >>-4050762.614575 4220880.820347 -2533400.419192 |
| 97 | +
|
| 98 | +Now we have an ITRF2014 coordinate at 1/1/2007. Now this needs to be moved to the 1/1/2030. This can be |
| 99 | +done using the ITRF2014 to GDA2020 transformation which approximates plate motion in Australia. To complete |
| 100 | +this transformation on another plate a different plate motion model should be used. |
| 101 | +Some carfeul math needs to be completed here. To go from 2007 to 2030, 23 years |
| 102 | +of plate motion needs to be added. The reference epoch of the ITRF2014 to GDA2020 transformation is 2020. |
| 103 | +As such 23 needs to be subtracted from 2020 to get the desired motion. This means the epoch 1/1/1993 should be entered. |
| 104 | + |
| 105 | +.. caution:: |
| 106 | + Transformations using the plate motion model of itrf2014_to_gda2020 should only be completed for epochs between |
| 107 | + 2005 - 2035. For transformations outside of this range refer to the :ref:`next <tutorials/transold>` section. |
| 108 | + |
| 109 | + |
| 110 | +.. code:: python |
| 111 | +
|
| 112 | + x, y, z, vcv = geodepy.transform.conform14(x, y, z, date(1997, 1, 1), geodepy.constants.itrf2014_to_gda2020) |
| 113 | +
|
| 114 | + print(x, y, z) |
| 115 | +
|
| 116 | + >>-4050763.516973 4220880.699906 -2533399.176976 |
| 117 | +
|
| 118 | +This is now the ITRF2014 corrdinate at 1/1/2030. Now we can convert this ITRF2014 cooridnate to ITRF2020. |
| 119 | + |
| 120 | +.. code:: python |
| 121 | +
|
| 122 | + x, y, z, vcv = geodepy.transform.conform14(x, y, z, date(2030,1,1), geodepy.constants.itrf2014_to_itrf2020) |
| 123 | +
|
| 124 | + print(x, y, z) |
| 125 | +
|
| 126 | + >>-4050763.517274 4220880.704079 -2533399.182440 |
| 127 | +
|
| 128 | +This is the final cooridnate in ITRF2020 at 1/1/2030. |
| 129 | + |
| 130 | +.. _tutorials/transold: |
| 131 | + |
| 132 | +Transforming Between Older Dynamic Datums |
| 133 | +----------------------------------------- |
| 134 | + |
| 135 | +The Australia plate motion model should only be used between the years of 2005 to 2035. If a datum older then |
| 136 | +this needs to be transformed a different method should be used. For this example we will tranform from ITRF88 |
| 137 | +at 1/1/1988 to ITRF2014 at 1/1/2030. |
| 138 | + |
| 139 | +.. caution:: This method only works for coordinates within Australia. |
| 140 | + |
| 141 | +.. code:: python |
| 142 | +
|
| 143 | + import geodepy.constant |
| 144 | + import geodepy.transform |
| 145 | +
|
| 146 | +To go from an old dynamic datum to a more current datum, transformations to static datums should be completed first. |
| 147 | +In this case transforming to GDA2020 is most accurate, before then transforming back to ITRF2014. To get to GDA2020 |
| 148 | +the ITRF88 coordinate first needs to be transformed to ITRF2014 at the 1/1/1988. |
| 149 | + |
| 150 | +.. code:: python |
| 151 | +
|
| 152 | + x, y, z, vcv = geodepy.transform.conform14(-4050763.124645, 4220880.752269, -2533399.717044, date(1988,1,1), geodepy.constants.itrf88_to_itrf2014) |
| 153 | +
|
| 154 | + print(x, y, z) |
| 155 | +
|
| 156 | + >>-4050763.116490 4220880.700494 -2533399.614981 |
| 157 | +
|
| 158 | +This is the ITRF2014 coordinate at 1/1/1988. Now this needs to be transformed into GDA2020 |
| 159 | + |
| 160 | +.. code:: python |
| 161 | +
|
| 162 | + x, y, z, vcv = geodepy.transform.conform14(x, y, z, date(1988,1,1), geodepy.constants.itrf2014_to_gda2020) |
| 163 | +
|
| 164 | + print(x, y, z) |
| 165 | +
|
| 166 | + >>-4050764.372112 4220880.532909 -2533397.886526 |
| 167 | +
|
| 168 | +Now this corrinate can be changed to ITRF2014 at 1/1/2023. |
| 169 | + |
| 170 | +.. code:: python |
| 171 | +
|
| 172 | + x, y, z, vcv = geodepy.transform.conform14(x, y, z, date(2030,1,1), geodepy.constants.gda2020_to_itrf2014) |
| 173 | +
|
| 174 | + print(x, y, z) |
| 175 | +
|
| 176 | + >>-4050764.764547 4220880.480531 -2533397.346309 |
| 177 | +
|
| 178 | +This is now the ITRF2014 coordinate at 1/1/2030. |
0 commit comments