gpt4 book ai didi

java - Geohash-Java 搜索附近的 LatLongs

转载 作者:行者123 更新时间:2023-11-29 08:34:37 32 4
gpt4 key购买 nike

我一直在到处寻找如何使用 ch.hsr.geohash 的清晰示例搜索附近的位置。我的意思是,我只需要实现以下情况:

1 - 我有经纬度和经度。2 - 将此纬度/经度转换为散列。 (我相信这是通过使用“GeoHash.withBitPrecision(纬度,经度,64)”完成的,但我不确定这里的精度是多少。我想 64 位将具有相同的精度,只要3 - 检索 100 公里距离内的纬度/经度列表(我什至不知道如何使用 geohash 启动它)4 - 使用纬度/经度结果列表查询对象化对象。

但是我找不到关于该库的任何文档,也找不到任何明确的示例。请有人给我建议或给我任何搜索的起点吗?有没有人已经使用这个库来实现我正在寻找的相同结果?非常感谢!

最佳答案

我以以下方法结束:

Geohash geohash = Geohash。 withCharacterPrecision(纬度,经度,12);String geohashString = geohash.toBase32();

然后根据我想要的距离使用 geohashString。我的意思是,根据字符串的精度匹配字符串的前缀。例如,

数据库:

Name | geohash | id

Model 1 | gc7x9813vx2r | 1
Model 2 | gc7x8840suhr | 2
Model 3 | gc30psvp0zgr | 3

然后我想得到这个点(53.244664,-6.140530)100公里半径范围内的所有模型。

Geohash geohash = Geohash. withCharacterPrecision(53.244664, -6.140530, 12);
String geohashString = geohash.toBase32().substring(0, 3); //3 characters for around 100km of precision

ofy().load().type(Model.class).filter("geohash >=", geoHashString).filter("geohash <", geoHashString + "\uFFFD");

然后它将仅匹配以“gc7”开头的模型 1 和模型 2,因此它们大约在 100 公里半径内。

为了精确起见,请遵循此表: https://en.wikipedia.org/wiki/Geohash

我实际上可以将步骤简化为:

String geohashString = Geohash. withCharacterPrecision(53.244664, -6.140530, 3).toBase32();

虽然我还没有进行任何性能测试,但我认为它不会变慢很多。无论如何,如果性能测试“失败”,我将执行相同的操作,但改用 binaryString。

关于java - Geohash-Java 搜索附近的 LatLongs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45091236/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com