Skip to content

Commit d2e1052

Browse files
committed
Updated time dependant tutorial
1 parent 5647333 commit d2e1052

File tree

5 files changed

+184
-5
lines changed

5 files changed

+184
-5
lines changed

docs/index.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ GeodePy includes a variety of :ref:`features <features/index>` for geodesy and g
3333
* Calculating :ref:`geodetic <features/geodesy>` distances and bearings
3434
* Working with :ref:`geoid <features/height>` models
3535
* :ref:`Surveying <features/survey>` calculations
36-
* Various classes for :ref:`angles <features/angles>` , :ref:`corrdinates <features/coord>`, and :ref:`datums <features/constants>`
36+
* Various classes for :ref:`angles <features/angles>` , :ref:`coordinates <features/coord>`, and :ref:`datums <features/constants>`
3737
* :ref:`Statistics <features/statistics>`
3838
* And more!
3939

docs/tutorials/anglestut.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,5 +196,5 @@ The following operators can be preformed on angle objects:
196196
| Round | round() |
197197
+----------------------+------------------+
198198

199-
.. caution:: Basic arthimitc should not be completed on HPA class. These should be converted on decimal degree first.
199+
.. caution:: Basic arthimitc should not be completed on HPA class. These should be converted to decimal degree first.
200200

docs/tutorials/coordtut.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ GeodePy has 3 coordinate classes that can be used to store coordinates and conve
77

88
The three different classes are:
99

10-
- :ref:`CoordCart - Cartesian Corrdinates <tut/cart>`
10+
- :ref:`CoordCart - Cartesian Coordinates <tut/cart>`
1111
- :ref:`CoordGeo - Geographic Coordinates <tut/geo>`
1212
- :ref:`CoordTM - Transverse Mercator Coordinates <tut/tm>`
1313

docs/tutorials/timedeptranstut.rst

Lines changed: 173 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,176 @@
33
Time Dependant Transformations
44
==============================
55

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.

geodepy/height.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,14 @@
1818
# ___________________________________________________________________________#
1919
# Interpolation functions
2020
def interp_file(Lat, Long, file):
21+
"""
22+
Interpolates files at specific Latitude and Longitude. Uses files found in
23+
geodepy.constants and vsicurl to access only part of file.
24+
25+
:param Lat: Latitude in decimal degrees
26+
:param Long: Longitude in decimal degrees
27+
:param file: grid file to be interpolated
28+
"""
2129
# Import the DOVPM file
2230
f = gdal.Open(file)
2331
# load band (akin to a variable in dataset)

0 commit comments

Comments
 (0)