Создать функцию SQL для преобразования ECEF в геодезиюPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Создать функцию SQL для преобразования ECEF в геодезию

Сообщение Anonymous »

У меня есть сценарий Python ниже, который дает результат RAD, который я затем конвертирую в градусы. Он работает нормально, но я заинтересован в создании той же функции в SQL, чтобы я мог использовать ее на значениях Parse ECEF в таблице. < /P>
import math
def xyz2llh(x,y,z):
'''
Function to convert xyz ECEF to llh
convert cartesian coordinate into geographic coordinate
ellipsoid definition: WGS84
a= 6,378,137m
f= 1/298.257

Input
x: coordinate X meters
y: coordinate y meters
z: coordinate z meters
Output
lat: latitude rad
lon: longitude rad
h: height meters
'''
# --- WGS84 constants
a = 6378137.0
f = 1.0 / 298.257223563
# --- derived constants
b = a - f*a
e = math.sqrt(math.pow(a,2.0)-math.pow(b,2.0))/a
clambda = math.atan2(y,x)
p = math.sqrt(pow(x,2.0)+pow(y,2))
h_old = 0.0
# first guess with h=0 meters
theta = math.atan2(z,p*(1.0-math.pow(e,2.0)))
cs = math.cos(theta)
sn = math.sin(theta)
N = math.pow(a,2.0)/math.sqrt(math.pow(a*cs,2.0)+math.pow(b*sn,2.0))
h = p/cs - N
while abs(h-h_old) > 1.0e-6:
h_old = h
theta = math.atan2(z,p*(1.0-math.pow(e,2.0)*N/(N+h)))
cs = math.cos(theta)
sn = math.sin(theta)
N = math.pow(a,2.0)/math.sqrt(math.pow(a*cs,2.0)+math.pow(b*sn,2.0))
h = p/cs - N
llh = {'lon':clambda, 'lat':theta, 'height': h}
return llh


Подробнее здесь: https://stackoverflow.com/questions/794 ... o-geodetic
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»