pyacs.lib.coordinates module¶
Coordinates library.
– Local/Geocentric frame conversion
– Geodetic/Geocentric frame conversion
– Spherical/Geocentric conversion
– Geodetic/Flat Earth conversion
-
pyacs.lib.coordinates.
mat_rot_general_to_local
(lam, phi, unit='radians')[source]¶ Generates the conversion matrix R from general geocentric cartesian coordinates (XYZ) to local cartesian coordinates (ENU):
- Parameters
lam,phi – longitude
unit – ‘radians’ or ‘dec_deg’ (default is ‘radians’)
- Returns
R as a 2D numpy array
- Note
R = [[-sin(lambda) cos(lambda) 0 ],
[-sin(phi)*cos(lambda) , -sin(phi)*sin(lamda) , cos(phi)],
[ cos(phi)*cos(lambda) , cos(phi)*sin(lamda) , sin(phi)]]
-
pyacs.lib.coordinates.
mat_rot_local_to_general
(lam, phi, unit='radians')[source]¶ Generates the conversion matrix R from local cartesian coordinates (ENU) to general geocentric cartesian coordinates (XYZ):
- Parameters
lam,phi – longitude in radians
unit – ‘radians’ or ‘dec_deg’ (default is ‘radians’)
- Returns
R as a 2D numpy array
- Note
Since R is orthogonal, it is the inverse and also the transpose of the conversion matrix from general geocentric cartesian coordinates (XYZ) to local cartesian coordinates (ENU)
-
pyacs.lib.coordinates.
denu_at_x0y0z0_to_xyz
(de, dn, du, x0, y0, z0)[source]¶ Converts a local vector [dn,de,du] at [x0,y0,z0] in geocentric cartesian coordinates into X,Y,Z geocentric cartesian coordinates
- Parameters
de,dn,du – east,north, up components of the local vector in meters
x0,x0,z0 – reference point for the local vector in geocentric cartesian coordinates
- Returns
x,y,z in geocentric cartesian coordinates
-
pyacs.lib.coordinates.
xyz2geo
(x, y, z, A=6378137.0, E2=0.006694380022903, unit='radians')[source]¶ Converts geocentric cartesian coordinates (XYZ) to geodetic coordinates (lambda,phi,h)
- Parameters
x,y,z – XYZ coordinates in meters
unit – ‘radians’ or ‘dec_deg’ (default is ‘radians’)
- Returns
long,lat,he: longitude and latitude in radians, he in meters above the ellipsoid
- Note
Default ellipsoid is GRS80 used for WGS84 with
A = 6378137. # semi major axis = equatorial radius
E2 = 0.00669438003 # eccentricity and then
F = 1.0 - sqrt(1-E2) # flattening
- Ref
Bowring, 1985, The accuracy of geodetic latitude and height equations, Survey Review, 28, 202-206.
-
pyacs.lib.coordinates.
geo2xyz
(llambda, phi, he, unit='radians', A=6378137.0, E2=0.006694380022903)[source]¶ Converts geodetic coordinates (long,lat,he) to geocentric cartesian coordinates (XYZ)
- Parameters
llambda,phi – longitude, latitude
he – ellipsoidal height in meters
unit – ‘radians’ or ‘dec_deg’ for llambda and phi (default is ‘radians’)
- Returns
x,y,z in meters
- Note
Default ellipsoid is GRS80 used for WGS84 with
A = 6378137. # semi major axis = equatorial radius
E2 = 0.00669438003 # eccentricity and then
F = 1.0 - sqrt(1-E2) # flattening
-
pyacs.lib.coordinates.
wnorm
(phi, A=6378137.0, E2=0.006694380022903)[source]¶ Calculates the geodetic radius normal to the ellipsoid
-
pyacs.lib.coordinates.
xyz2geospheric
(x, y, z, unit='radians')[source]¶ Converts geocentric cartesian coordinates (XYZ) to geo-spherical coordinates (longitude,latitude,radius).
- Parameters
x,y,z – geocentric cartesian coordinates in meters
unit – ‘radians’ or ‘dec_deg’ (default is ‘radians’)
- Returns
longitude,latitude (in radians), radius from the Earth’s center in meters
- Note
Be aware that the obtained coordinates are not what is usually taken as spherical coordinates, which uses co-latitude
-
pyacs.lib.coordinates.
xyz_spherical_distance
(x1, y1, z1, x2, y2, z2, Rt=6371000.0)[source]¶ Returns the spherical distance between two points of XYZ coordinates x1,y1,z1 and x2,y2,z2
- Parameters
x1,y1,z1,x2,y2,z2 – in meters
Rt – mean Earth’s radius in meters (default 6 371 000.0 m)
- Returns
distance in meters
-
pyacs.lib.coordinates.
geo_spherical_distance
(lon1, lat1, h1, lon2, lat2, h2, unit='radians', Rt=6371000.0)[source]¶ Returns the spherical distance between two points of geodetic coordinates lon1,lat1,lon2,lat2
- Parameters
lon1,lat1,h1,lon2,lat2,h2 – longitude, latitude, radius
unit – ‘radians’ or ‘dec_deg’ for lon & lat (default is ‘radians’)
Rt – mean Earth’s radius in meters (default 6 371 000.0 m)
- Returns
distance in meters
-
pyacs.lib.coordinates.
azimuth_to_en
(azimuth)[source]¶ converts an azimuth (clockwise from north) to east and north unit vector
- Parameters
azimuth – azimuth in decimal degrees
- Return east,north
unit vector
- Note
calculation is made using the sphere
-
pyacs.lib.coordinates.
geo2flat_earth
(longitude, latitude)[source]¶ Converts geographical coordinates to flat earth approximation using GMT project -N -Q -Fpq command
- Parameters
longitude,latitude – geographical (ellipsoid) coordinates in decimal degrees. Also works with 1D numpy arrays
- Returns x,y
in km
-
pyacs.lib.coordinates.
spherical_baseline_length_rate
(slon, slat, sve, svn, elon, elat, eve, evn, sigma=None, verbose=False)[source]¶ calculates the baseline (great circle) length rate of change between two points
- Parameters
slon,slat – coordinates of profile start point (decimal degrees)
sve,svn – east and north components of start point (mm/yr)
elon,elat – coordinates of profile end point (decimal degrees)
eve,evn – east and north components of end point (mm/yr)
sigma – list of velocities uncertainties: [sig_sve, sig_svn, corr_sven, sig_eve, sig_evn, corr_even]
:return : length, rate, 1D strain rate