我们可以将经度和纬度转换为没有高程的笛卡尔坐标吗?

问题描述 投票:0回答:2

我可以在没有高程的情况下将经度/纬度 (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)

问题陈述:我从不同地点收集了数据。但是,这些位置采用经度和纬度格式。这两个属性是否足以将位置转换为笛卡尔格式?上面的代码正确吗?

python python-2.7 coordinate-systems coordinate-transformation
2个回答
1
投票

您需要距地球中心的距离才能将纬度+经度转换为 X、Y、Z(地心、地球固定地心惯性)。地心惯性也需要时间从经度转换为角度。

原因很简单:因为它是 3D 坐标系,所以需要三个自变量。纬度和经度只是两个变量,您需要距中心的距离(上面方程中的

R
)才能做到这一点。

如果您正在寻找地面坐标,您可以使用 Google Elevation API 在上面的方程中获取 R。但无论哪种方式,您都需要此信息来进行坐标变换。


0
投票

是的,我猜那是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 * 转换));'

© www.soinside.com 2019 - 2024. All rights reserved.