【问题标题】:Longitude and Latitude to location on sphere in UnityUnity中球体上位置的经度和纬度
【发布时间】:2017-12-06 04:01:33
【问题描述】:

大家好,

我正在尝试将基于经度和纬度的位置转换为 vector3 位置,该位置将放置在 Unity 中的球体上。但是,该位置似乎一直处于关闭状态(与实际位置相比)。

我目前使用以下代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class testPosLatLong : MonoBehaviour {

    public float longi;
    public float lati;
    public float radius;
    public Transform marker;

    // Use this for initialization
    void Start () {

        // Transfer to Radians from Degrees
        float templongi = longi * Mathf.PI / 180;
        float templati = lati * Mathf.PI / 180;

        float Xpos = radius * Mathf.Cos(templati) * Mathf.Cos(templongi);
        float Ypos = radius * Mathf.Cos(templati) * Mathf.Sin(templongi);
        float Zpos = radius * Mathf.Sin(templati);

        Debug.Log ("X, Y, Z" + Xpos + " " + Ypos + " " + Zpos);

        // Set the X,Y,Z pos from the long and lat
        Instantiate(marker);
        marker.position = new Vector3 (Xpos, Zpos, Ypos);

    }

    // Update is called once per frame
    void Update () {

    }
}

我尝试将经度和纬度设置为零,看起来它在球体上的位置正确:

但是,例如,当我尝试阿姆斯特丹的经度和纬度时,它会给出以下结果(左侧),而它应该是右侧的结果。

我是否遗漏了什么或这里出了什么问题?我尝试了很多谷歌搜索,但找不到任何可以解释我当前问题的东西。项目本身可以在这里找到:https://wetransfer.com/downloads/31303bd353fd9fde874e92338e68573120171205170107/1208ac%3E

希望有人可以提供帮助。

【问题讨论】:

  • 你的表面纹理包裹方式和地图图像的投影方式一样吗?
  • 你能确认你的经纬度是错误的吗?我问这个问题是因为您比较了纹理上的坐标位置与 Google 地图上的位置。也许问题在于纹理是如何包裹在球体上的,或者是纹理代表行星的准确性。
  • 顺便说一句,使用Mathf.Deg2Rad 而不是Mathf.PI/180
  • 是的,我想到了纹理和球体格式。但我不确定。我在这里添加了我的整个项目:wetransfer.com/downloads/…(只有球体和位置)。

标签: unity3d position mapping latitude-longitude


【解决方案1】:

我认为你的地球仪有问题。从你的图像很难看出,但对我来说,赤道看起来有点错误,北极看起来太拥挤了格陵兰岛。我怀疑这与您用于将地球图像粘贴到球体上的投影有关。

通常有非常复杂的方法可以将 2D 地图/图像投影到 3D 表面上。关于如何准确地做到这一点,有一个完整的地理空间分析领域。这是一个棘手的问题。

另外,实际的地球并不完全是一个球体,所以这也可能会给您带来错误,但我猜这些会导致比您描述的错误要小得多。精确的地图将 3D 地球再现为“大地水准面”。为了获得局部准确的地图,人们通常会在小区域内以不同的方式投影数据,以最大限度地提高局部范围内的准确性。否则你会看到很大的失真。因此,当您放大全球地图时,投影实际上会发生显着变化。

测试问题出处的一种可能方法是在地图图像和地球上设置已知坐标的控制点,然后测试它们是否对齐。就像在阿姆斯特丹应该在地球上的位置以及实际图像上的位置放置一个突出世界的尖峰。如果这两个不排队,那么你可以很确定你的问题出在哪里。这称为“地理参考”。

我认为对于 3D 投影,您可能需要至少 4 个这样的“控制点”。您可以查看 stackexchange 上的地理空间社区,了解有关投影地图和在坐标系之间交换的更多详细信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-06
    • 1970-01-01
    • 1970-01-01
    • 2012-11-08
    • 1970-01-01
    • 1970-01-01
    • 2017-11-10
    • 1970-01-01
    相关资源
    最近更新 更多