我正在尝试将笛卡尔x,y,z位置的gps位置相对于python中的第二个gps位置进行转换。我正在根据在其他论坛上找到的其他信息使用标准三角函数,并期望x,y,z以米为单位。
#Get cartesian coordinates relative to a center
import math
centerLat = 0.7127
centerLon = -1.2906
centerAlt = -32.406
pointLat = float(input("Enter latitude in degrees for the new point")) * 3.141592653589 / 180
pointLon = float(input("Enter longitude in degrees for the new point")) * 3.141592653589 / 180
pointAlt = float(input("Enter altitude in meters for the new point"))
r = centerAlt + 6378137
xCenter = r * math.cos(centerLat) * math.cos(centerLon)
yCenter = r * math.cos(centerLat) * math.sin(centerLon)
zCenter = r * math.sin(centerLat)
r = pointAlt + 6378137
xPoint = r * math.cos(pointLat) * math.cos(pointLon)
yPoint = r * math.cos(pointLat) * math.sin(pointLon)
zPoint = r * math.sin(pointLat)
x = xPoint - xCenter
y = yPoint - yCenter
z = zPoint - zCenter`enter code here`
由于某种原因,转换后的这两点现在相距较远。如果有人可以就我做错的事给我建议,那就太好了。
编辑: 这是我要转换的要点。 纬度:40.767870 朗:-73.885160 Alt:48.463201
我正在使用虚幻引擎中的景观作为参考,我已经使用this tutorial从GIS数据中导入了景观,并意识到自发布此后,景观就不在我认为的中心位置。我已经对它们进行了调整,结果现在更加接近,但仍然没有排队。我想知道这可能是规模或轮换问题。
所有公式和常量都在以下链接中找到 https://stackoverflow.com/questions/8981943/lat-long-to-x-y-z-position-in-js-not-working