V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
just1
V2EX  ›  程序员

求三点定位算法或者库

  •  
  •   just1 · 2015-11-28 01:01:41 +08:00 via Android · 4458 次点击
    这是一个创建于 3313 天前的主题,其中的信息可能已经有所发展或是发生改变。

    已知三个经纬点及点至目标点的距离,求目标点的经纬度。有这样的算法或者库吗库的话最好要 python

    26 条回复    2015-11-28 18:15:18 +08:00
    line
        1
    line  
       2015-11-28 01:39:07 +08:00
    不就是 GPS 吗?
    zjengjie
        2
    zjengjie  
       2015-11-28 02:15:55 +08:00
    一个坐标点和半径可以写出一个圆方程,两个圆方程可以解出两个点,判断哪个点到第三个坐标的距离正确就可以了。
    linhua
        3
    linhua  
       2015-11-28 03:11:58 +08:00
    球面的,还是平面的?经纬点和目标点都在球面上?
    just1
        4
    just1  
    OP
       2015-11-28 08:06:56 +08:00 via Android
    @linhua 球面,是的
    just1
        5
    just1  
    OP
       2015-11-28 08:07:02 +08:00 via Android
    @line
    just1
        6
    just1  
    OP
       2015-11-28 08:12:27 +08:00 via Android
    @zjengjie 感谢,不过有曲面解决办法吗
    firefox12
        7
    firefox12  
       2015-11-28 09:10:40 +08:00 via iPad
    ..... 2 个圆相交不是 2 个点好吗?
    joshz
        8
    joshz  
       2015-11-28 09:36:55 +08:00
    没有闭合解是最麻烦的,需要在空间中搜索次优解,很多论文用最大似然法
    cdlxkill
        9
    cdlxkill  
       2015-11-28 10:00:04 +08:00
    一般都没有闭合解 直接 ls 估计吧
    nevin47
        10
    nevin47  
       2015-11-28 10:49:24 +08:00
    前段时间做一个比赛的时候写了类似的,不过是两点带速度求相遇的。
    我的处理方法是直接列方程,然后 python 调用 scipy.optimize 求解,初始值设置方向正确的话可以求到解的

    不过球面的话不知道需要多考虑什么问题了
    realpg
        11
    realpg  
       2015-11-28 11:09:46 +08:00
    @just1 已知的那个距离是曲面距离么?
    just1
        12
    just1  
    OP
       2015-11-28 13:00:50 +08:00 via Android
    @realpg 是的
    shakespaces
        13
    shakespaces  
       2015-11-28 13:12:47 +08:00
    如果把地球近似看成正球体还是很好算的,就是完全按真实情况的话,地球是椭球就不是那么直观了
    just1
        14
    just1  
    OP
       2015-11-28 13:14:56 +08:00 via Android
    @shakespaces 正圆就可以,不要求太精确,😍求算法
    shakespaces
        15
    shakespaces  
       2015-11-28 13:26:13 +08:00
    @just1 我只是说了一下,手头并没有现成的算法。。。
    linhua
        16
    linhua  
       2015-11-28 13:42:34 +08:00
    经纬度和球坐标系的相互转换比较容易,建议使用球坐标系列方程求解。手算嫌麻烦,可使用 mathematica 软件求解。
    https://zh.wikipedia.org/wiki/%E5%9D%90%E6%A8%99%E7%B3%BB
    realpg
        17
    realpg  
       2015-11-28 14:07:02 +08:00
    @just1
    如果把地球当做正球体,那没太大难度啊
    基本的球坐标系问题
    有一些列基础方程的 可以套
    just1
        18
    just1  
    OP
       2015-11-28 14:21:08 +08:00 via Android
    @realpg 能给一下相关链接吗 TAT 我学识浅薄 TAT 高一
    just1
        19
    just1  
    OP
       2015-11-28 14:21:34 +08:00 via Android
    @linhua 能给一下相关链接吗 TAT 我学识浅薄 TAT 高一
    realpg
        20
    realpg  
       2015-11-28 14:25:47 +08:00
    @just1
    高一你研究这玩意干嘛……老老实实上课去……
    just1
        21
    just1  
    OP
       2015-11-28 14:42:16 +08:00 via Android
    @realpg 高一不会很累,没事就折腾
    imn1
        22
    imn1  
       2015-11-28 15:25:02 +08:00
    @just1
    先学解析几何再折腾
    just1
        23
    just1  
    OP
       2015-11-28 15:28:16 +08:00 via Android
    @imn1 估计学完我就没时间折腾了😣
    linhua
        24
    linhua  
       2015-11-28 16:48:45 +08:00   ❤️ 2
    @just1
    数学专业方面的问题推荐在 Mathematics Stack Exchange 中提问,比较专业,不过你的问题要描述清楚。这个 GPS 定位算法很复杂的。而且通常并不是用软件实现的,而是在 GPS 芯片内部实现的。只是研究者可以通过用算法实现来模拟,像 Software-defined Radio(SDR)(软件定义无线电)一样,这种叫 Software-Defined GNSS Receivers
    可参考:
    https://www.wolfram.com/mathematica/
    http://math.stackexchange.com/
    http://www.cnblogs.com/magicboy110/archive/2010/12/09/1901669.html
    http://gpsworld.com/innovation-python-gnss-receiver/
    https://en.wikipedia.org/wiki/Global_Positioning_System
    http://ocw.mit.edu/courses/earth-atmospheric-and-planetary-sciences/12-540-principles-of-the-global-positioning-system-spring-2012/lecture-notes/
    http://gpsworld.com/software-gnss-receiver-an-answer-for-precise-positioning-research/
    http://gage.upc.edu/forum/gps-data-processing-code-and-phase-algorithms-techniques-and-recipes
    https://en.wikipedia.org/wiki/GNSS_applications
    just1
        26
    just1  
    OP
       2015-11-28 18:15:18 +08:00 via Android
    @linhua 非常感谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5408 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 03:44 · PVG 11:44 · LAX 19:44 · JFK 22:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.