新增doris的部署内容
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
from math import radians, cos, degrees
|
||||
from math import radians, degrees, sin, cos, atan2, sqrt
|
||||
|
||||
|
||||
def convert_to_cartesian(lat, lon, reference_point):
|
||||
"""将经纬度转换为基于参考点的直角坐标,考虑地球椭球模型"""
|
||||
# 地球椭球参数(WGS84)
|
||||
a = 6378137.0 # 长半轴,单位:米
|
||||
f = 1 / 298.257223563 # 扁率
|
||||
e2 = 2 * f - f ** 2 # 第一偏心率平方
|
||||
|
||||
# 提取参考点坐标
|
||||
ref_lat, ref_lon = reference_point
|
||||
|
||||
# 转换成弧度
|
||||
lat_rad = radians(lat)
|
||||
lon_rad = radians(lon)
|
||||
ref_lat_rad = radians(ref_lat)
|
||||
ref_lon_rad = radians(ref_lon)
|
||||
|
||||
# 计算曲率半径
|
||||
N = a / sqrt(1 - e2 * sin(ref_lat_rad) ** 2) # 参考点处的卯酉圈曲率半径
|
||||
|
||||
# 计算基于参考点的平面直角坐标
|
||||
delta_lon = lon_rad - ref_lon_rad
|
||||
X = (N + 0) * cos(ref_lat_rad) * delta_lon
|
||||
Y = (a * (1 - e2)) / (1 - e2 * sin(ref_lat_rad) ** 2) * (lat_rad - ref_lat_rad)
|
||||
|
||||
return X, Y
|
||||
|
||||
|
||||
def convert_to_geodetic(x, y, reference_point):
|
||||
"""将直角坐标转换为经纬度,考虑地球椭球模型"""
|
||||
# 地球椭球参数(WGS84)
|
||||
a = 6378137.0 # 长半轴,单位:米
|
||||
f = 1 / 298.257223563 # 扁率
|
||||
e2 = 2 * f - f ** 2 # 第一偏心率平方
|
||||
|
||||
# 提取参考点坐标
|
||||
ref_lat, ref_lon = reference_point
|
||||
|
||||
# 转换成弧度
|
||||
ref_lat_rad = radians(ref_lat)
|
||||
ref_lon_rad = radians(ref_lon)
|
||||
|
||||
# 计算曲率半径
|
||||
N = a / sqrt(1 - e2 * sin(ref_lat_rad) ** 2) # 参考点处的卯酉圈曲率半径
|
||||
|
||||
# 计算纬度
|
||||
lat_rad = y * (1 - e2 * sin(ref_lat_rad) ** 2) / (a * (1 - e2)) + ref_lat_rad
|
||||
|
||||
# 计算经度
|
||||
if cos(ref_lat_rad) == 0:
|
||||
lon_rad = 0
|
||||
else:
|
||||
lon_rad = x / ((N + 0) * cos(ref_lat_rad)) + ref_lon_rad
|
||||
|
||||
# 转换回角度
|
||||
lat = degrees(lat_rad)
|
||||
lon = degrees(lon_rad)
|
||||
|
||||
return lat, lon
|
||||
Reference in New Issue
Block a user