我可以在没有高程的情况下将经度/纬度 (x,y) 坐标转换为笛卡尔 (x,y,z) 坐标吗?我检查了一些讨论将经度/纬度转换为笛卡尔坐标的表格,这是 python 中的代码。
R = numpy.float64(6371000) # in meters
longitude = numpy.float64(lon)
latitude = numpy.float64(lat)
X = R * math.cos(longitude) * math.sin(latitude)
Y = R * math.sin(latitude) * math.sin(longitude)
Z = R * math.cos(latitude)
问题陈述:我从不同地点收集了数据。但是,这些位置采用经度和纬度格式。这两个属性是否足以将位置转换为笛卡尔格式?上面的代码正确吗?
您需要距地球中心的距离才能将纬度+经度转换为 X、Y、Z(地心、地球固定或地心惯性)。地心惯性也需要时间从经度转换为角度。
原因很简单:因为它是 3D 坐标系,所以需要三个自变量。纬度和经度只是两个变量,您需要距中心的距离(上面方程中的
R
)才能做到这一点。
如果您正在寻找地面坐标,您可以使用 Google Elevation API 在上面的方程中获取 R。但无论哪种方式,您都需要此信息来进行坐标变换。
是的,我猜那是Python。 您可以使用这些方程将生成的世界向东或向西旋转,但您需要将此方程添加到其末尾以向北或向南旋转: Z = (Y * sin(旋转)) + (Z * cos(旋转))。 这是向量与矩阵相乘的 z 线。 您可以使用以下命令将其转换为适合 1920 x 1080 屏幕:
Conversion = 500.0 / 6371000.0;
x = (int)(960.0 + (X * Conversion));'
y = (int)(510.0 + (Z * 转换));'