python怎么编程输入坐标_用python编写的坐标转换程序

python的坐标转换程序

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

"""

Created on Sun Oct 23 18:57:18 2016

@author: Administrator

"""

import numpy as np

PI=3.1415926

a=6378137.0

b=6356752.3142;

e=np.sqrt(a*a-b*b)/a

c=a*a/b

choice=input('choice a coordinate\n[1]geodetic

ccoordinate[2]rectangular coordinate\nnumber=')

if choice==1:

B=input('B=')

L=input('\nL=')

H=input('\nH=')

W=np.sqrt(1-e*e*np.sin(B)*np.sin(B))

N=a/W

X=(N+H)*np.cos(B)*np.cos(L)

Y=(N+H)*np.cos(B)*np.sin(L)

Z=(N*(1-e*e)+H)*np.sin(B)

print('X=',X)

print('\nY=',Y)

print('\nZ=',Z)

else:

X=input('X=\n')

Y=input('Y=\n')

Z=input('Z=\n')

#e1=((a*a-b*b)/b*b)

m=Z/np.sqrt(X*X+Y*Y)

B0=np.arctan(m)

n=Z/np.sqrt(X*X+Y*Y)

P=c*e*e/np.sqrt(X*X+Y*Y)

k=1+(a*a-b*b)/(b*b)

t=m+P*n/np.sqrt(k+n*n)#现在为t1,之后代替t2,t3...

B=np.arctan(t)

W=np.sqrt(1-e*e*np.sin(B)*np.sin(B))

N=a/W

H=Z/np.sin(B) -

N*(1-e*e);

# for

(i=1;fabs(B-B0)>10E-10;i++){c

#

B0=B;

# n=t;

# t=m+P*n/sqrt(k+n*n);#迭代

#B=np.arctan(t)}

#W=sqrt(1-e*e*sin(B)*sin(B))

N=a/W

while(np.fabs(B-B0)>10E-10):

B0=B

n=t

t=m+P*n/np.sqrt(k+n*n)

B=np.arctan(t)

W=np.sqrt(1-e*e*np.sin(B)*np.sin(B))

N=a/W

L=np.arctan2(Y,X)

H=np.sqrt((X*X+Y*Y)/np.cos(B)-N)

B=180.0*B/PI

L=180.0*L/PI

print('B=',B,'\nL=',L,'\nH=',H)

python最近是一门挺火的语言,所以试试了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值