python求投影距离_python实现高斯投影正反算方式
#!/ usr/bin/python
# -*- coding:utf-8 -*-
import math
def LatLon2XY(latitude, longitude):
a = 6378137.0
# b = 6356752.3142
# c = 6399593.6258
# alpha = 1 / 298.257223563
e2 = 0.0066943799013
# epep = 0.00673949674227
#将经纬度转换为弧度
latitude2Rad = (math.pi / 180.0) * latitude
beltNo = int((longitude + 1.5) / 3.0) #计算3度带投影度带号
L = beltNo * 3 #计算中央经线
l0 = longitude - L #经差
tsin = math.sin(latitude2Rad)
tcos = math.cos(latitude2Rad)
t = math.tan(latitude2Rad)
m = (math.pi / 180.0) * l0 * tcos
et2 = e2 * pow(tcos, 2)
et3 = e2 * pow(tsin, 2)
X = 111132.9558 * latitude - 16038.6496 * math.sin(2 * latitude2Rad) + 16.8607 * math.sin(
4 * latitude2Rad) - 0.0220 * math.sin(6 * latitude2Rad)
N = a / math.sqrt(1 - et3)
x = X + N * t * (0.5 * pow(m, 2) + (5.0 - pow(t, 2) + 9.0 * et2 + 4 * pow(et2, 2)) * pow(m, 4) / 24.0 + (
61.0 - 58.0 * pow(t, 2) + pow(t, 4)) * pow(m, 6) / 720.0)
y = 500000 + N * (m + (1.0 - pow(t, 2) + et2) * pow(m, 3) / 6.0 + (
5.0 - 18.0 * pow(t, 2) + pow(t, 4) + 14.0 * et2 - 58.0 * et2 * pow(t, 2)) * pow(m, 5) / 120.0)
return x, y
def XY2LatLon(X, Y, L0):
iPI = 0.0174532925199433
a = 6378137.0
f= 0.00335281006247
ZoneWide = 3 #按3度带进行投影
ProjNo = int(X / 1000000)
L0 = L0 * iPI
X0 = ProjNo * 1000000 + 500000
Y0 = 0
xval = X - X0
yval = Y - Y0
e2 = 2 * f - f * f #第一偏心率平方
e1 = (1.0 - math.sqrt(1 - e2)) / (1.0 + math.sqrt(1 - e2))
ee = e2 / (1 - e2) #第二偏心率平方
M = yval
u = M / (a * (1 - e2 / 4 - 3 * e2 * e2 / 64 - 5 * e2 * e2 * e2 / 256))
fai = u \
+ (3 * e1 / 2 - 27 * e1 * e1 * e1 / 32) * math.sin(2 * u) \
+ (21 * e1 * e1 / 16 - 55 * e1 * e1 * e1 * e1 / 32) * math.sin(4 * u) \
+ (151 * e1 * e1 * e1 / 96) * math.sin(6 * u)\
+ (1097 * e1 * e1 * e1 * e1 / 512) * math.sin(8 * u)
C = ee * math.cos(fai) * math.cos(fai)
T = math.tan(fai) * math.tan(fai)
NN = a / math.sqrt(1.0 - e2 * math.sin(fai) * math.sin(fai))
R = a * (1 - e2) / math.sqrt(
(1 - e2 * math.sin(fai) * math.sin(fai)) * (1 - e2 * math.sin(fai) * math.sin(fai)) * (1 - e2 * math.sin(fai) * math.sin(fai)))
D = xval / NN
#计算经纬度(弧度单位的经纬度)
longitude1 = L0 + (D - (1 + 2 * T + C) * D * D * D / 6 + (
5 - 2 * C + 28 * T - 3 * C * C + 8 * ee + 24 * T * T) * D * D * D * D * D / 120) / math.cos(fai)
latitude1 = fai - (NN * math.tan(fai) / R) * (
D * D / 2 - (5 + 3 * T + 10 * C - 4 * C * C - 9 * ee) * D * D * D * D / 24 + (
61 + 90 * T + 298 * C + 45 * T * T - 256 * ee - 3 * C * C) * D * D * D * D * D * D / 720)
#换换为deg
longitude = longitude1 / iPI
latitude = latitude1 / iPI
return latitude, longitude
#
# print LatLon2XY(40.07837722329, 116.23514827596)
# print XY2LatLon(434760.7611718801, 4438512.040474475, 117.0)
python求投影距离_python实现高斯投影正反算方式相关推荐
- matlab高斯正反算程序6,基于matlab的高斯投影正反算与相邻带坐标换算程序设计...
第 卷 第 期 在 月 中 国 水 运 基于 的高斯投影正反算与相邻带坐标换 算程 序设计 徐 翰 ,周 强 波 (核 工 业 二 三 研 究所 ,湖 南 长 沙 ) 摘 要 :地 图投影方法众多 , ...
- 高斯投影正反算C语言程序代码,高斯投影正反算c代码
<高斯投影正反算c代码>由会员分享,可在线阅读,更多相关<高斯投影正反算c代码(11页珍藏版)>请在人人文库网上搜索. 1.高斯投影正反算程序设计一程序设计流程本程序的设计思路 ...
- matlab高斯投影坐标,基于matlab的高斯投影正反算与相邻带坐标换算程序设计
第 15 卷 第 2 期 中 国 水 运 Vol.15 No.2 2015 年 2 月 China Water Transport February 2015 收稿日期:2014-01-15 作者简介 ...
- C# 大地测量高斯投影正反算公式计算程序
C# 大地测量高斯投影正反算公式程序 C# 大地测量高斯投影正反算公式计算程序 一.编程作业要求: 编写能够进行高斯投影正反算公式计算的程序. 二.实验效果: 三.部分代码实现 1.选择界面 usin ...
- 高斯投影正反算C语言程序代码,一个老师给的高斯投影正反算c++源码.doc
一个老师给的高斯投影正反算c源码 //高斯投影正.反算 //6度带宽?? 54年北京坐标系 //高斯投影由经纬度 Unit:DD 反算大地坐标 含带号,Unit:Metres void GaussPr ...
- 高斯投影正反算的代码
2008-05-28 16:03:29 | 高斯投影正反算的代码 //高斯投影正.反算 //6度带宽 54年北京坐标系 //高斯投影由经纬度(UnitD)反算大地坐标(含带号,Unit:Metre ...
- GPS定位(五)-高斯投影正反算C程序
基本思想 斯投影正算公式就是由大地坐标(L,B)求解高斯平面坐标(x,y),而高斯投影反算公式则是由高斯平面坐标(x,y)求解大地坐标(L,B). 计算模型 高斯投影正算 这里输入的经纬度应该转化为度 ...
- python求积分_python 求定积分和不定积分示例
求f(x) = sin(x)/x 的不定积分和负无穷到正无穷的定积分 sin(x)/x 的不定积分是信号函数sig ,负无穷到正无穷的定积分为pi import math import numpy a ...
- python求圆面积_python如何求圆的面积
首先我们要知道圆的面积计算公式:S = πr²,公式中S为所求圆的面积,π为圆周率,r为圆的半径. 示例: # 定义一个方法来计算圆的面积 def findArea(r): PI = 3.142 re ...
最新文章
- cap理论与分布式事务的解决方案
- Android中资源文件夹res/raw和assets的使用
- 从终端命令行运行 AppleScript 脚本
- KMP子串匹配算法(Knuth–Morris–Pratt algorithm)
- c语言for循环++_C ++程序使用循环查找数字的幂
- mfc 如何判断excel软件是否打开_如何从无到有地搭建一套完整的测试系统(上)...
- TreeSet简单介绍与使用方法
- 过滤DataTable中的指定字段重复的行
- redhat5.4上安装oracle9i
- 使用Eclipse Babel语言包汉化eclipse
- python图表制作方法_python图表制作
- 计算机添加usb网络打印机,路由器openWrt固件使用USB打印机设置电脑添加网络USB打印机方法...
- QQ大厅游戏 大家来找茬辅助
- MacBook 快捷键个人总结和设置
- Java—初识Java与开发环境的安装
- 这些好看的皮肤,这不嗖的一下,统统都到电脑里了~
- python 汉字与拼音的转换--pypinyin
- NetBIOS、WINS、DNS的联系和区别
- 使用ROS-I接口通过MoveIt包安装和操作ABB机器人
- 三国志11武将资料整理版
热门文章
- 会议冲突!临时更新客户端!这些在线视频会议痛点统统解决掉!
- 激光雷达 win10
- 链表-删除链表中的重复元素
- 两个字符串之间的复制,不使用strcopy()函数
- pandas进行数据处理常用方法与属性
- Random在for以及foreach循环中产生相同随机数问题
- docker 从harbor 拉取镜像慢_Harbor丨使用的正确姿势
- c++做界面_为什么80%的毕业设计做的都是滨水?
- YOLO在升级 | PP-YOLO v2开源致敬YOLOV4携带Tricks又准又快地归来(附论文与源码)...
- 如何从失焦的图像中恢复景深并将图像变清晰?