V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
wylwang
V2EX  ›  Python

请教:如何用已知的经纬度坐标在地图给定半径画圆。

  •  
  •   wylwang · 2018-11-27 16:58:35 +08:00 · 4045 次点击
    这是一个创建于 1975 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近项目上需要在地图上根据商圈经纬度坐标画圆,用来确定两个坐标范围是否有重合,然后再将该圆形区域标记成等面积的 n 块。
    然后遍历数据库里的坐标,判断坐标属于哪个商圈区块。
    现在卡在了,不知道如何利用经纬度在地图上画圆,请教各位大佬,有什么方法能够实现!
    谢谢
    10 条回复    2018-12-06 15:47:01 +08:00
    liuzhedash
        1
    liuzhedash  
       2018-11-27 17:19:15 +08:00
    画圆的目的是判断两个坐标是否重合?还是要在地图上画一个圆形出来?
    feverzsj
        2
    feverzsj  
       2018-11-27 17:23:14 +08:00
    圆上的点到圆心距离是相同的,你每隔一个角度计算出另一端的坐标就可以了,一般用等角线算法,距离很长的话可以用大圆算法
    AifeiI
        3
    AifeiI  
       2018-11-27 17:25:17 +08:00
    图层覆盖物,圆形的直径 /半径预先计算好,然后描绘的时候,将圆形对准坐标点。
    AifeiI
        4
    AifeiI  
       2018-11-27 17:27:02 +08:00
    @AifeiI 画圆就简单了吧,前段用样式或者画布都可以,app 也类似
    across
        5
    across  
       2018-11-27 17:35:26 +08:00
    我做过一个类似 LBS,不过要求不太严格,经纬度要先转化成米的空间尺度计算。经纬度公式、转化代码网上能查到很多。
    画圈嘛,很简单,比如取 60 个采样点的平滑程度,把 360 度 60 等分,有了圆心半径,就知道采样点位置了,每个点连线不就好了。
    across
        6
    across  
       2018-11-27 17:37:09 +08:00
    “经纬度要先转化成米的空间尺度计算”
    补充下这个,就是取个位置点作为空间原点,然后计算其他位置在该相对坐标系下的数值。
    wylwang
        7
    wylwang  
    OP
       2018-11-27 17:38:51 +08:00
    @liuzhedash 在地图上画出圆形
    kzfile
        8
    kzfile  
       2018-11-27 17:40:27 +08:00
    最简单的方法:
    把商铺的经纬度位置放入 redis,存为 geohash,
    然后 redis 的 api 可以根据给定的坐标和半径返回范围内的全部商铺.
    这其实就是根据 geohash 的特性做文章.
    复杂点的就是 postgres+postgis 做空间数据库,直接进行空间查询.
    kzfile
        9
    kzfile  
       2018-11-27 17:47:35 +08:00
    你的需求是在地图上画图?用的什么地图控件?
    wylwang
        10
    wylwang  
    OP
       2018-12-06 15:47:01 +08:00
    @kzfile
    @across
    @feverzsj
    感谢各位,目前这个问题已经通过另外一种方法解决了,曲线救国了.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1110 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 18:52 · PVG 02:52 · LAX 11:52 · JFK 14:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.