请教一个关于坐标点生成算法 - 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
chengxiao

请教一个关于坐标点生成算法

  •  
  •   chengxiao Aug 20, 2019 3122 views
    This topic created in 2463 days ago, the information mentioned may be changed or developed.
    现在已知 4 个坐标经纬度围成了一个矩形,如何在这个已知矩形中生成 500 个等距的经纬度坐标点呢?
    Supplement 1    Aug 21, 2019
    sorry 各位,可能描述的不太清楚


    是这样 我这有一个上海市经纬度的小区分布数据,我用 dbscan 聚类了一下,但是不管怎么调整参数,在中心最密集的几个区都会出现空洞,猜测应该是样板分布不均的原因,所以我想在这个区域看用什么方法能生成一个平均分布的点
    15 replies    2019-08-21 10:53:51 +08:00
    xuanbg
        1
    xuanbg  
       Aug 20, 2019
    除非矩形的长宽比是固定的几个值,否则不可能存在解
    no1xsyzy
        2
    no1xsyzy  
       Aug 20, 2019
    等距是怎么个定义法?是矩形排列还是六边形排列?平面距离还是空间距离?是必须包含边界还是不需要?
    你什么都不说别人怎么回答?楼上楼下除了给出 8 个答案的其他都是在瞎猜。
    bilibilifi
        3
    bilibilifi  
       Aug 20, 2019 via iPhone
    经纬度的话涉及到不同国家和地区的参考系,是一个很麻烦的问题
    SeanChense
        4
    SeanChense  
       Aug 20, 2019 via iPhone
    两个点是线段,三个点是等边三角形,四个点是啥
    bilibilifi
        5
    bilibilifi  
       Aug 20, 2019 via iPhone
    同一个参考系的话可以利用库就 ok,不同的话要计算投影
    necomancer data-uid=
        6
    necomancer  
       Aug 20, 2019
    不知道你说的等距是啥概念,如果想求的是均分球面,等价于求 \theta\in(0, \theta), \phi\in(0, \phi) 的 500 个单位向量中,\sum_ij 1/|r_i - r_j| 的最小值,是一个有区域限制的汤普森问题。

    初始化生成 500 个单位向量,在 0<theta<经度, 0<phi<维度 满足你的矩形限制条件下,最小化能量函数 U(r1,r2,...r500)=\sum_{i=1}^500 1/|r_i-r_j|,mathematica 有比较简单的代码。要自己撸需要用梯度下降法,或者参考 scipy.optimize 里的 minimize 函数。
    necomancer
        7
    necomancer  
       Aug 20, 2019
    如果是均分经度、维度,那么 1 楼说了,需要特定的长宽比。上面均分球面算法保证弧线、弦距离相等。
    necomancer
        8
    necomancer  
       Aug 20, 2019
    如果你不需要那么精确的结果,也可以考虑直接用密度,也就是如果你的矩形所占球台面积是 10,那么密度就是 50,如果球面积是 200,那么总点数就是 200x50=10000,Mathematica 有个 SpherePoints 函数,可以生成很均匀的点,大量点精确度会变高而且速度很快,详见 Fejes Tóth 问题。速度很快。你可以生成好以后用矩形去框一下,密度法可能有一定的涨落,如果要求结果不用那么精确的话( 500+-10 ),这个方法是最高效的。
    opengps
        9
    opengps  
       Aug 20, 2019
    这种需求是网格处理方面的算法吗?
    chengxiao
        10
    chengxiao  
    OP
       Aug 21, 2019
    @opengps @necomancer @SeanChense @bilibilifi @xuanbg
    sorry 各位 题目已补充 麻烦大家帮我看一下
    necomancer
        11
    necomancer  
       Aug 21, 2019
    球面均匀点的算法我在之前已经提供了,看起来你并不是绝对需要 500 个点,你可以考虑尝试 Mathematica 的 SpherePoints 函数,等距性很好。我没能理解你的 dbscan 是怎么做的,空洞是什么意思?从图 1 来看感觉所有点都是连在一起的。你是直接对 (经,纬,1 )这样相当于对经纬度分类还是每个小区有不同的权重? dbscan 基于密度,加上权重也许你的问题就能解决了。另外,你可以试试 hdbscan 算法。
    chengxiao
        12
    chengxiao  
    OP
       Aug 21, 2019
    @necomancer 权重是一样的 直接队经纬度进行聚类 图二上能看到上海最密的区域是个空洞 没有 1 个点,但从图 1 可以看出那里是最密集的区域
    chengxiao
        13
    chengxiao  
    OP
       Aug 21, 2019
    @chengxiao 感谢 信息量有点大 我先消化消化
    chengxiao
        14
    chengxiao  
    OP
       Aug 21, 2019
    @necomancer 感谢 信息量有点大 我先消化消化....激动到发错了
    Raymon111111
        15
    Raymon111111  
       Aug 21, 2019
    geohash 块的中心就行
    About     Help     Advertise     Blog     API     FAQ     Solana     2823 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 42ms UTC 14:23 PVG 22:23 LAX 07:23 JFK 10:23
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86