forked from vv01f/ccc-map
draft
This commit is contained in:
parent
6cdc08c6c7
commit
014cbc5a8a
|
@ -0,0 +1,34 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import math
|
||||
|
||||
def arc_to_deg(arc):
|
||||
"""convert spherical arc length [m] to great circle distance [deg]"""
|
||||
return float(arc)/6371/1000 * 180/math.pi
|
||||
|
||||
def deg_to_arc(deg):
|
||||
"""convert great circle distance [deg] to spherical arc length [m]"""
|
||||
return float(deg)*6371*1000 * math.pi/180
|
||||
|
||||
def latlon_to_xyz(lat,lon):
|
||||
"""Convert angluar to cartesian coordiantes
|
||||
|
||||
latitude is the 90deg - zenith angle in range [-90;90]
|
||||
lonitude is the azimuthal angle in range [-180;180]
|
||||
"""
|
||||
r = 6371 # https://en.wikipedia.org/wiki/Earth_radius
|
||||
theta = math.pi/2 - math.radians(lat)
|
||||
phi = math.radians(lon)
|
||||
x = r * math.sin(theta) * math.cos(phi) # bronstein (3.381a)
|
||||
y = r * math.sin(theta) * math.sin(phi)
|
||||
z = r * math.cos(theta)
|
||||
return [x,y,z]
|
||||
|
||||
def xyz_to_latlon (x,y,z):
|
||||
"""Convert cartesian to angular lat/lon coordiantes"""
|
||||
r = math.sqrt(x**2 + y**2 + z**2)
|
||||
theta = math.asin(z/r) # https://stackoverflow.com/a/1185413/4933053
|
||||
phi = math.atan2(y,x)
|
||||
lat = math.degrees(theta)
|
||||
lon = math.degrees(phi)
|
||||
return [lat,lon]
|
Loading…
Reference in New Issue