是否有任何现有的Java库允许您从纬度/经度快速在内存中查找zipcodes(奖金、州和城市)?

是否有任何现有的Java库允许您从纬度/经度快速在内存中查找zipcodes(奖金、州和城市)?,java,latitude-longitude,reverse-geocoding,mkreversegeocoder,Java,Latitude Longitude,Reverse Geocoding,Mkreversegeocoder,我见过许多用各种语言编写的所谓“反向地理编码”库;所有这些都依赖于通过REST或类似方法调用外部提供者。但是,如果必须每秒处理数千个请求,则不能调用REST提供程序 另一方面,问题应该很容易解决——基于CSV的数据库可以免费获得这些信息。问题在于编写一个高效且经过良好测试的内存搜索实现所需的时间和成本,而不是下载或购买现有的实现 我看了很多遍都找不到,但我不敢相信没有。有没有预先编写的库可以这样做 这个问题: 是最接近的,但本质上表明了如何编写解决方案,而不是有现成的解决方案。但肯定有一些每个

我见过许多用各种语言编写的所谓“反向地理编码”库;所有这些都依赖于通过REST或类似方法调用外部提供者。但是,如果必须每秒处理数千个请求,则不能调用REST提供程序

另一方面,问题应该很容易解决——基于CSV的数据库可以免费获得这些信息。问题在于编写一个高效且经过良好测试的内存搜索实现所需的时间和成本,而不是下载或购买现有的实现

我看了很多遍都找不到,但我不敢相信没有。有没有预先编写的库可以这样做

这个问题:

是最接近的,但本质上表明了如何编写解决方案,而不是有现成的解决方案。但肯定有一些每个人都用的图书馆。每天一定有十几个人有这个问题

空间数据库(例如带有PostGis的Postgresql)使用的算法能够快速查找给定纬度/经度信息的数据。当您想要使用Java库并将其存储在内存中时,您可以查看。我从未使用过它,所以我不能评论它的性能


编辑:嗯,仔细看看我提供的链接,这是一个计划中的功能。。。就我个人而言,我只是简单地使用Postgresql/PostGis(有或没有Java作为服务器前端)并完成它。如果您的服务器有足够的内存,它仍然可以满足“内存中”的要求。当然,它不符合Java库的要求。但是,还有一些可以在内存中使用,也可以与Java一起使用。

@birryrree,注释用于注释。如果要将问题添加到书签中,请使用“最喜爱的问题”功能(单击星号)。在我的情况下,仅为解决此问题而设置和维护postgres是不可能的:(JSI看起来很有希望!每个人都有免费的ZIP/city/state/等列表,带有他们的lat/long坐标,而不是矩形,所以点对点而不是点对矩形搜索并不太合适。它可能可以适应……但仍然……必须适应这样的事情,制作数千个小矩形?是吗市场上真的没有预包装的解决方案吗?我很惊讶,我(显然也没有其他人)都找不到。好吧,JSI库可以很好地处理点,只需使用一个零大小的矩形(即设置minY=maxY和minX=maxX)。事实上,它最初的目的是添加对点的“本机”支持,但使用矩形时性能已经足够好了,这是不需要的。感谢您将我指向JSI。您也可以搜索quadtree或rtree和java。+我做了一些工作,但我现在知道我可以做得更好,而且还没有时间实现这些功能ks: