V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
GeoJSON
acros
V2EX  ›  地理信息系统

地理系统里面,计算用到的数值跨度非常大时,是不是有一套特殊的坐标转化系统来处理数值问题的?(比如太空模拟这类)

  •  
  •   acros · 2015-11-13 15:06:12 +08:00 · 8374 次点击
    这是一个创建于 3300 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在做一个和地理相关的程序,有两种视角:地图视角和第一人称视角。
    目前在大地图上都是记录经纬度坐标,比如[120.123456,21.1233456],类似现在的地图 APP 上标志。
    转到第一人称下时,所有物品坐标都以当前视角为原点,依据其经纬度重新计算位置,这个目前也没有问题,隐约觉得哪里没考虑周全。

    看了下一个叫 SpaceEngine 的免费游戏(真不是广告,这个游戏是完全免费的,不开源),玩家可以在宇宙中穿梭,又可以下潜到一个星球表面,这个坐标数值跨度得有 10 的几十次方了吧,然而进出太空还是挺平滑的。像这种程序,如果要求玩家可以降落到星球表面(整个世界完全是 1 : 1 的),人物在表面走路移动的逻辑又要怎么实现呢?因为靠太空坐标系这种精度肯定是完全没法做到细微移动的。或者在一个空间中,随机取一个点作为原点,建立局部坐标系?

    再换个例子,像洲际导弹,军事 GPS 定位精确到米以下的。导弹飞行范围有半个地球, GPS 是整个地球,在三维空间坐标系统下面,这个空间原点怎么取呢?以地球中心为原点吗?如果这样取按目前 C 语言内置 double 类型应该不够处理(要做区域划分?)。

    唔,现在思考的还比较粗略,表达也挺模糊,周末再仔细斟酌下...
    另外...有哪些讨论涉及系统设计的文章或开源软件吗? 有个前人的思路就好,我怕摸黑走到坑里去··

    14 条回复    2015-11-14 22:35:27 +08:00
    xiaofami
        1
    xiaofami  
       2015-11-13 15:52:21 +08:00 via Android   ❤️ 1
    多年前做 GIS 课程设计时用过 QGIS 。给定一张地图将其数字化,首先录入地图上几个边界点的坐标,然后选取坐标系。由于地球是个球体,平面展开会产生拉伸,越靠近边界扭曲越大,所以不同区域有各自的坐标系,要根据测绘区域选取。国内的有北京 54 坐标系,西安 80 坐标系等。
    涉及空间的没做过~
    learnshare
        2
    learnshare  
       2015-11-13 15:59:22 +08:00   ❤️ 1
    https://zh.wikipedia.org/wiki/%E5%A4%A9%E7%90%83%E5%9D%90%E6%A0%87%E7%B3%BB%E7%BB%9F 天球坐标系统

    比较常见的是类似地球经纬度的方式,以地心为参考点,以赤道或黄道面为参考平面,以地球南北极方向为参考轴。
    learnshare
        3
    learnshare  
       2015-11-13 16:01:16 +08:00
    @learnshare 比如在赤道坐标系统里,经度、纬度和距离(类似于地球坐标的海拔),就可以定位一个点
    hitmanx
        4
    hitmanx  
       2015-11-13 17:12:11 +08:00
    你这业务真广啊。。
    loading
        5
    loading  
       2015-11-13 17:17:25 +08:00 via Android
    洲际导弹…似乎确实很难算!以前以为只要燃料够就行了,目前看来,就算美国开放随便我写程序,我也打不中!
    ioth
        6
    ioth  
       2015-11-13 18:14:59 +08:00
    gps 只可能给美军自己用。
    gis 和 gps 是 3s 里面的不同东西。
    太空又不是 3s 的内容了。
    seki
        7
    seki  
       2015-11-13 18:21:02 +08:00   ❤️ 1
    一楼说的是大地坐标系
    仅对于地球表面而言,根据你的项目需要,可以选择等角投影、等距投影,等面积投影等。处理这类坐标转换可以用 gdal ,并且这些投影的相关信息也能够在网上查到
    一楼所说的 beijing 54 和 xian 80 都属于 Gauss Kruger 投影,是一种等角投影。两者的区别在于 datum 定义参数的不同
    acros
        8
    acros  
    OP
       2015-11-13 18:26:41 +08:00
    @hitmanx
    @loading
    @ioth
    @seki
    我就发散好好奇下他们的系统里面怎么处理极大极小值变化的···· 不要以为我在做导弹啊!
    cdxem713
        9
    cdxem713  
       2015-11-13 18:29:31 +08:00 via iPhone
    在地球上用经纬度貌似也没啥问题啊,还有会用莫卡托坐标系,是米制的,做导弹啥的应该会换算成这个坐标。
    飞宇宙上就不知道了,猜想是在宇宙中用通知坐标系,在每个星球用各自的坐标系?
    msg7086
        10
    msg7086  
       2015-11-14 03:39:36 +08:00
    @acros 难道不是在做宇宙飞船的 GPS ?
    Robling
        11
    Robling  
       2015-11-14 10:04:29 +08:00
    浮点数解决不了的精度问题可以用定点数解决。
    acros
        12
    acros  
    OP
       2015-11-14 10:10:53 +08:00
    @Robling 软件实现吗?
    硬件支持的我真没遇见过。
    acros
        13
    acros  
    OP
       2015-11-14 14:19:29 +08:00 via iPhone
    @msg7086 神舟的 gps 给我做的话,估计得拉上整个外交部帮忙擦屁股。😫
    c742435
        14
    c742435  
       2015-11-14 22:35:27 +08:00
    @acros 我不认为一个停在星球表面的飞船需要具有宇宙的绝对坐标系。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3466 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 11:31 · PVG 19:31 · LAX 03:31 · JFK 06:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.