我写了一个将笛卡尔坐标转换为椭圆坐标的代码,它可以工作,但是有些变量的单位是度,有些变量的单位是米。我必须显示差异,但我不知道如何。
def ell2xyz(latitude,longitude,ellHeight):
import math
a=6378137.0000
b=6356752.3141
e=(math.sqrt(((a**2)-(b**2))/(a**2)))
N=a/math.sqrt((1-((e**2)*(math.sin(latitude)**2))))
x=(float((N+ellHeight)*math.cos(latitude)*math.cos(longitude)))
y=(float(N+ellHeight)*math.cos(latitude)*math.sin(longitude))
z=(float((1-e**2)*(N+ellHeight))*math.sin(latitude))
return x,y,z
latitude,longitude,ellHeight=ell2xyz(41.00000000,29.00000000,500.0000)
print(latitude,longitude,ellHeight)
答案 0 :(得分:2)
我建议您使用format方法
print("{} degrees {} degrees {} meters".format(latitude,longitude,ellHeight))
答案 1 :(得分:1)
问题是您所有的变量(纬度,经度和ellHeight)都是浮点数,它们只是数字。单位是对我们人类有意义的抽象,但是您的代码无法知道您希望使用哪些单位。我相信您只想在屏幕上显示单位。为此,您必须手动告诉什么是什么。
以下任何一项都可以使用:
print(latitude, "degrees,", longitude, "degrees,", ellHeight, "meters")
print("{} degrees, {} degrees, {} meters".format(latitude, longitude, ellHeight))
print(str(latitude) + " degrees, " + str(longitude) + " degrees, " + str(ellHeight) + " meters")
结果将是:
4711572.482946889度,4179837.81128292度,-1005107.7207451101米
答案 2 :(得分:-1)
您可以使用列表,因此将同时具有浮点数和字符串:
def ell2xyz(latitude,longitude,ellHeight):
import math
a=6378137.0000
b=6356752.3141
e=(math.sqrt(((a**2)-(b**2))/(a**2)))
N=a/math.sqrt((1-((e**2)*(math.sin(latitude)**2))))
x=(float((N+ellHeight)*math.cos(latitude)*math.cos(longitude)))
y=(float(N+ellHeight)*math.cos(latitude)*math.sin(longitude))
z=(float((1-e**2)*(N+ellHeight))*math.sin(latitude))
if x > 0:
x = [x,"N"]
else:
x = [x,"S"]
if y > 0:
y = [y,"E"]
else:
y= [y,"W"]
z = [z, "m"]
return x,y,z
latitude,longitude,ellHeight=ell2xyz(41.00000000,29.00000000,500.0000)
print(latitude,longitude,ellHeight)
结果:
[4711572.4829468895, 'N'] [4179837.81128292, 'E'] [-1005107.7207451101, 'm']