Java 的 GEO 问题

43 天前
 xlzyxxn

比如有个数据中心列表,怎么找到距离用户输入的省市最近的数据中心,或者得到两地的距离; java 有这样的库或者有什么开源服务能做到?

1412 次点击
所在节点    程序员
10 条回复
xlzyxxn
43 天前
有没有 V 友用过很好用的?
vagusss
43 天前
redis, es
ZField
43 天前
数量少,并发低直接算。
或者转成 GeoHash ,找到最近的再算距离,工具的话 github 上搜一搜有一堆。
wu00
43 天前
数据库都有”point“字段类型的吧
gadfly3173
43 天前
用数据库就是楼上说的,或者参考美团的 https://tech.meituan.com/2014/09/05/lucene-distance.html
tairan2006
43 天前
redis, mysql, pg 都有的
RicardoY
43 天前
这个是典型的附近搜场景,直接用 JTS 就行了
dif
43 天前
一般用 redis 。
codingmiao
43 天前
几种我自己用的方案:
数据量很小时,直接 jts 在内存里遍历判断。
数据量大时,可以考虑在内存里搞一棵 Rtree https://www.khelekore.org/prtree/index.shtml
我自己撸了个变种,把 Rtree 从内存放倒图数据库 https://github.com/codingmiao/neo4j-rtree?tab=readme-ov-file#%E6%9C%80%E9%82%BB%E8%BF%91%E6%90%9C%E7%B4%A2
也可以给 pg 装个 postgis 插件来处理。
redis 用 geohash 来实现空间索引,优点是简单,但 geohash 的不连续性会导致某些坐标的查询性能骤降有点烦。
codingmiao
43 天前
哦对了,mysql 的 geometry 就是个玩具,wgs84 的坐标 x y 非要反着存,linestring 会莫名其妙的不走索引等问题,非常不推荐使用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1041350

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX