Python实现空间直角坐标转高斯克吕格平面坐标

该代码实现将空间直角坐标XYZ通过WGS84椭球参数转换为大地坐标BLH,并进一步使用高斯克吕格投影将其转换为平面坐标。涉及弧度与角度转换、三角函数以及高斯投影中的参数计算,适用于地理信息系统和测绘领域的坐标转换。

空间直角坐标转高斯克吕格平面坐标

有时需要将点展开到地图上,需要的是平面坐标,而手中只有三维的空间直角坐标XYZ或者BLH时该怎么办呢?这时候就需要将坐标进行投影转换,本文给出的程序代码是用高斯克吕格投影进行坐标转换

原理示意

在这里插入图片描述
在这里插入图片描述

源码

源码中还有其他坐标转换的小函数,也可参考

# -*- coding:utf-8 -*-
"""

created on Wed Apr 29 20:30:25 2021
@author: xymeng

"""
import numpy as np
import math as mt
import matplotlib.pyplot as plt
import sklearn.metrics as ms
import csv
import pandas as pd


'''以下为三角函数调用'''
sqrt = mt.sqrt
sin = mt.sin
cos = mt.cos
atan = mt.atan
tan = mt.tan

'''以下为WGS84椭球参数'''
a = 6378137.0         # 参考椭球的长半轴, 单位 m
b = 6356752.31414     # 参考椭球的短半轴, 单位 m
e = sqrt((a**2-b**2)/(a**2)) #椭球第一偏心率
e1 = sqrt((a**2-b**2)/(b**2)) #椭球第二偏心率

'''以下为高斯投影中的参数'''
A1 = 1 + 3/4 * e**2 + 45/64 * e**4 +175/256 * e**6 +11025/16384 * e**8 +43659/65536 * e**10
B1 =     3/4 * e**2 + 15/16 * e**4 +525/512 * e**6 + 2205/2048 * e**8 + 72765/65536 * e**10
C1 =                  15/64 * e**4 +105/256 * e**6 + 2205/4096 * e**8 + 10395/16384 * e**10
D1 =                                35/512 * e**6  + 315/2048 * e**8 + 31185/131072 * e**10
E1 =                                                 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十八与她

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值