Geohash-Java 搜索附近的 LatLongs
Geohash-Java Search Nearby LatLongs
我一直在到处搜索如何使用 ch.hsr.geohash 搜索附近位置的清晰示例。我的意思是,我只需要实现以下情况:
1 - 我有一个长纬度和一个长经度。
2 - 将此 latitude/longitude 转换为散列。 (我相信这是通过使用 "GeoHash.withBitPrecision(latitude, longitude, 64)" 完成的,但我不确定这里的精度是多少。我想 64 位将具有相同的精度,只要
3 - 检索 100 公里范围内 latitudes/longitudes 的列表(我什至不知道如何使用 geohash 启动它)
4 - 使用 latitudes/longitudes 结果列表查询对象化对象。
但我找不到关于该库的任何文档,也找不到任何明确的示例。
请有人给我建议或给我任何搜索的起点吗?有没有人已经使用这个库来实现我正在寻找的相同结果?
非常感谢!
我采用以下方法结束:
Geohash geohash = Geohash。 withCharacterPrecision(纬度,经度,12);
字符串 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公里半径内。
遵循此 table 以获得精确度:
https://en.wikipedia.org/wiki/Geohash
实际上我可以将步骤简化为:
String geohashString = Geohash. withCharacterPrecision(53.244664, -6.140530, 3).toBase32();
尽管我还没有进行任何性能测试,但我认为它不会变得更慢。无论如何,如果性能测试 "fails" 我将实现相同但使用 binaryString 代替。
我一直在到处搜索如何使用 ch.hsr.geohash 搜索附近位置的清晰示例。我的意思是,我只需要实现以下情况:
1 - 我有一个长纬度和一个长经度。 2 - 将此 latitude/longitude 转换为散列。 (我相信这是通过使用 "GeoHash.withBitPrecision(latitude, longitude, 64)" 完成的,但我不确定这里的精度是多少。我想 64 位将具有相同的精度,只要 3 - 检索 100 公里范围内 latitudes/longitudes 的列表(我什至不知道如何使用 geohash 启动它) 4 - 使用 latitudes/longitudes 结果列表查询对象化对象。
但我找不到关于该库的任何文档,也找不到任何明确的示例。 请有人给我建议或给我任何搜索的起点吗?有没有人已经使用这个库来实现我正在寻找的相同结果? 非常感谢!
我采用以下方法结束:
Geohash geohash = Geohash。 withCharacterPrecision(纬度,经度,12); 字符串 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公里半径内。
遵循此 table 以获得精确度: https://en.wikipedia.org/wiki/Geohash
实际上我可以将步骤简化为:
String geohashString = Geohash. withCharacterPrecision(53.244664, -6.140530, 3).toBase32();
尽管我还没有进行任何性能测试,但我认为它不会变得更慢。无论如何,如果性能测试 "fails" 我将实现相同但使用 binaryString 代替。