This topic created in 4359 days ago, the information mentioned may be changed or developed.
=..= 哼哼,我来说下实际情况:
数据表中含有a城市的8000条景点和7000个景点。每条数据都有lon和lat(百度坐标你们懂得)。
假设正在访问景点a,要获得该景点lat和lon附近,最近的其他5个景点。
=,= 尼玛这个是不是特别慢……首先需要全表查询,有没有什么最优办法?
16 replies • 2014-07-14 15:13:39 +08:00
 |
|
1
xiaojj Jul 13, 2014
where lon>当前景点lon-附近范围距离 and lon<当前景点lon+附近范围距离 and lat>当前景点lat-附近范围距离 and lat<附近范围距离+lat
|
 |
|
2
nighca Jul 13, 2014
kd-tree~
|
 |
|
3
nighca Jul 13, 2014
当然,如果需求以及数据库基本不会变动的话,直接把所有点的最近5个点事先算出来,查的时候就是O(1)。。
|
 |
|
4
againstodds Jul 13, 2014
把景点数据放到elasticsearch 然后用geo query找出附近的景点
|
 |
|
5
zhzhwcn Jul 13, 2014 via Android
我想到了Ingress
|
 |
|
7
fasling Jul 13, 2014 via Android
你需要postgis
|
 |
|
8
Ricepig Jul 13, 2014 via Android
推荐一个库,叫ANN
你遇到的是一类典型问题:the k-th nearest neighbours
|
 |
|
9
Ricepig Jul 13, 2014 via Android
另外,经纬度之间算距离是没有意义的,如果要精确,还需要对坐标进行投影。
如果仅仅需要距离排序,直接用经纬度勉强可以。
|
 |
|
10
shiny Jul 13, 2014
最简单的做法就是geohash
|
 |
|
11
min Jul 13, 2014
自己算是个笨办法,应该去找支持geography的数据库
|
 |
|
13
NCE Jul 13, 2014 via iPhone
sql server专门有类型支持这个
|
 |
|
15
lamtin Jul 13, 2014
geohash
|