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

一个让人头大的需求,各位老哥帮忙看看怎么实现

  •  
  •   jiangwei2222 · 2019-12-02 13:43:51 +08:00 · 6305 次点击
    这是一个创建于 1600 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一个热门地点打卡需求,产品希望打卡一个地点后,将这个地点所属的正六边形区域点亮。也就是说我需要将整个地球分割成 N 个正六边形,然后根据经纬度确定点亮哪个六边形。But ! 他妈的地图是墨卡托投影啊,经纬度做成的坐标系跟数学里面的直角坐标系不一样啊。这他丫的该怎么分?

    效果图是这样(每个六边形得完全挨着,不能重叠,不能有缝隙): tu

    目前试了 h3 算法,但是分出来不是正六边形

    5 条回复    2020-10-28 18:26:48 +08:00
    huayumo
        1
    huayumo  
       2019-12-02 22:06:54 +08:00
    试试阿里开源的 g2,没做不,不是很懂,随便说一下
    jiangwei2222
        2
    jiangwei2222  
    OP
       2019-12-03 18:21:27 +08:00
    @huayumo #1 感谢
    jiangwei2222
        3
    jiangwei2222  
    OP
       2019-12-03 18:21:57 +08:00
    自己解决了,解决思路是

    1.先将经纬度坐标系转换成平面直角坐标系
    jiangwei2222
        4
    jiangwei2222  
    OP
       2019-12-03 18:23:33 +08:00
    @jiangwei2222 #3 按快了,发出去了

    接上面

    2.在平面直角坐标系中使用平面几何的方法计算出各个点的坐标

    3.将平面直角坐标系中的点转换成经纬度点

    附坐标系转换方法:

    https://wiki.openstreetmap.org/wiki/Mercator
    flowerwrong
        5
    flowerwrong  
       2020-10-28 18:26:48 +08:00
    @jiangwei2222 地球是一个球体,不能完整分割吧。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2836 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 11:26 · PVG 19:26 · LAX 04:26 · JFK 07:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.