首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java数据结构来存储经纬度点,并按区域检索它们。

Java数据结构来存储经纬度点,并按区域检索它们。
EN

Software Recommendation用户
提问于 2015-12-29 07:27:35
回答 2查看 1.5K关注 0票数 4

我想记住地理点,以便快速检索:

  1. 我存储了一些{纬度、经度、Java对象}
  2. 我查询包含在特定纬度、经度n公里范围内的所有对象。

要求:

  • 免费开放源码
  • 纯Java
  • “矩形”中的查询(由lat1、long1 1-lat2、long2定义)也是可以的,但循环优先。
  • 好的,特别是,应用程序不会在两极附近使用。
  • 不需要坚持
  • 轻量级的。这个罐子不应该超过一个兆字节,希望比这个小得多。

非解决办法:

  • GeoRedis不是嵌入的,也不是用Java实现的。
  • 地学树不在Java中
  • GeoTools太大了
  • JTS的文档来看,它不允许查询所有的点。
EN

回答 2

Software Recommendation用户

回答已采纳

发布于 2016-06-19 21:45:17

您已经几个月没有发布请求了,但是如果您还需要,请考虑FeSimpleGeoProx

我认为它满足了您所有的要求: FeSimpleGeoProx是一个用户提供的地理点的轻量级集合,它支持在半径内或矩形内进行快速接近搜索。

  • 免费开放源码(ApacheVersion2.0许可证)
  • 纯Java
  • 支持圆内的查询(起始点和半径)
  • 支持“矩形”内的查询(由lat1、long2 1-lat2、long2定义)
  • 多个对象可以存储在相同的纬度/经度,而不需要解决办法。
  • 轻量级的。jars (它所依赖的FeProxiMap和LatLng )在一起不到100 K。

在性能/权重谱中,它介于线性搜索(轻量级但慢速:对于合理的搜索而言,这是100到1000倍的速度)和GeoRedis (速度非常快但重量更重)之间。此外,GeoRedis上的文档说,它的答案是近似的,而这些答案与LatLng给出的精确程度一样精确。

免责声明:我是FeSimpleGeoProx的作者。此外,它还依赖于优秀的(也是自由和开放源码软件) SimpleLatLng,必须单独下载。

票数 3
EN

Software Recommendation用户

发布于 2016-01-01 16:04:20

四叉树是可用的:

..。但它也有一些缺点:

  • 搜索不是半径,而是矩形。
  • 平面图,不会在两极附近工作。
  • 两个不同的对象不能存储在相同的纬度/经度。这可以通过使每个对象成为一个对象列表来解决。
票数 4
EN
页面原文内容由Software Recommendation提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwarerecs.stackexchange.com/questions/27569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档