问题标签 [geohashing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1818 浏览

elasticsearch - Kibana 3 GeoJSON 与 Kibana4 Geohash

当我意识到不可能使用带有来自 kibana3 的索引的 tilemap 时,我正在测试 Kibana 4 beta2。

使用 Kibana3,可以使用包含 Long,Lat (GeoJson) 的数组在“Bettermap”上放置点。

现在 Kibana4 使用了 elasticsearch 的 geohash。

有人知道如何在 kibana4 上使用 geojson 吗?有可能从geojson获得geohash吗?

0 投票
1 回答
182 浏览

mysql - 使用 SQL 和 Node 进行空间索引

我即将启动一个带有大量 POI(兴趣点)的 Node.js,这些 POI 将保存在 SQL 数据库中。

有没有办法使用 SQL 和 Node 轻松进行邻近搜索(即在给定范围内找到给定点附近的所有 POI)?我想为 ORM 使用 geohash 算法 + 书架,但我在 Internet 上找不到任何说明如何开始的文档。

Mongodb 有一个地理空间索引。我想要同样的东西,但使用 SQL。

欢迎任何帮助

0 投票
1 回答
369 浏览

php - 大型记录集的位置/邻近搜索

假设我有一个数据库表,代表可能有数百万条记录的用户(一厢情愿)。此表包含有关每个用户的大量信息,包括有关其位置的信息:

  • 城市
  • 县/州等
  • 国家
  • 纬度
  • 经度
  • 基于纬度/经度值的 Geohash。

我想实现一个功能,登录用户可以搜索附近的其他用户。

理想情况下,我想抓取地理上最接近用户的 20 个用户,然后是接下来的 20 个和接下来的 20 个等等。所以基本上我希望能够按照与某个点的距离对我的 users 表进行排序.

方法一

我以前使用过半正弦公式来计算一个点和几百个其他点之间的距离。这种方法在相对较小的记录集上是理想的,但我担心对于如此大的记录集它会变得非常慢。

方法二

我还对地理散列进行了一些研究,我了解散列是如何计算的,并且我了解了散列如何表示位置以及精度如何因较短的分辨率而损失的理论。我当然可以通过抓取与他们的 geohash 具有相似开头的用户来抓取位于用户地理区域附近的用户(基于我指定的精度 - 并可能查看邻近区域)但这并不能解决问题需要按位置排序。这种方法也不适用于边缘情况,其中 2 个用户可能彼此非常接近,但靠近由 geohash 表示的 2 个区域的边缘。

对此方法的任何想法/建议将不胜感激。我不是特别在寻找代码,但指向好的示例和资源的链接会有所帮助。

谢谢,乔纳森

编辑

方法 3

经过一番思考,我想出了另一个可能的解决方案来考虑。在收到每个用户的位置信息后,我会将有关位置的信息(城镇/城市、地区、国家、纬度、经度、geohash 可能)存储在单独的表中(例如locations)。然后我会通过外键将用户连接到该位置。这会给我一个小得多的数据集来使用。为了找到附近的用户,我可以简单地找到靠近用户位置的其他位置,然后使用他们的 ID 来查找其他用户。然后,也许可以通过存储每个位置的附近位置 ID 列表来实现某种缓存。

0 投票
1 回答
699 浏览

java - 使用 Apache Storm 时的同步问题

我正在尝试使用 Apache Storm 处理 GeoHash 代码流。我正在使用这个库和 Apache Storm 0.9.3。可以在此处输入链接描述中找到 python 的 geohash 详细信息。

目前,我在一个 BOLT 类的执行方法中面临同步问题。我尝试使用单个粗体,这给了我正确的输出。但是当我从一个螺栓螺纹变为两个或更多时。输出搞砸了。

其中一个 BOLT 的代码片段(只有这个有问题)是:

拓扑代码为:

有人可以查看代码并指导我一下。

0 投票
2 回答
1688 浏览

cassandra - 在 cassandra 中拥有多个集群列有什么主要缺点吗?

我正在设计一个 cassandra 表,我需要能够通过它们的 geohash 检索行。我有一些可行的方法,但我想避免范围查询比我目前能够做的更多。

当前的表模式是这样的,geo_key 包含 geohash 字符串的前五个字符。我使用 geo_key 进行查询,然后对完整的 geohash 进行范围过滤,允许我基于 5 或​​更大长度的 geohash 进行前缀搜索:

我的想法是,我可以将 geohash 的字符存储为单独的列,允许我指定任意数量的字符,以便对 geohash 进行前缀匹配。我担心的是使用多个聚类列可能会产生什么影响:

(我并不真正关心分区键的基数 - g1 至少有 30 个值,我也有其他解决方法)

除了分区键的基数和额外的存储要求,如果我使用多簇列方法,我应该注意什么?

0 投票
1 回答
12208 浏览

elasticsearch - 如何在 Elasticsearch 中通过 Java 类使用 geo_point 和 geohash?

我有一个如下所示的 Java 类(GeoPoint 是 Elasticsearch 类型):

我使用的 Elasticsearch 映射是:

尝试对其进行索引时,出现以下异常:

org.elasticsearch.ElasticsearchParseException:字段必须是 lat/lon 或 geohash

从GeoUtils 类的第 381 行抛出异常。它发生在检查映射类中的双纬度和经度字段之后,就像 GeoPoint 属性一样。

我不明白为什么它不起作用,因为我按照ElasticSearch 文档的建议将 geoPoint 的字段类型设置为 geo_point。

更新 1

Java 类。

索引方法。

其中 R 是为另一个类实现的一种泛型类型,在这种情况下是 UserLocation 类,它的序列化如下。

更新 2

现在,Java 类结构工作正常。

}

但现在我有另一个问题。

如果拿到文件。

获取/用户/位置/40

geohash 有 12 个字符,但在映射中 geohash 精度设置为 7...

获取 /user/location/_mapping

这意味着它工作错误?

更新 3

当前班级。

它的映射。

搜索。

按距离(工作正常)。

获取 /user/location/_search

通过 geohash(也可以正常工作,超过 7 的精度被忽略,因为它是用“geohash_precision: 7”映射的)。

获取 /user/location/_search

结论

我不明白为什么 org.elasticsearch.common.geo.GeoHashUtils.GeoPoint 类与实际的 Elastic 版本不兼容。

但是,按照@jkbkot 提供的轨迹,我决定实现自己的 GeoPoint 和 Location 类以获得完全兼容性。

0 投票
1 回答
2263 浏览

swift - Use of unresolved identifier when testing a public class

I’m unable to unit my class because Xcode doesn’t see my main class under test target.

My swift module is defined as public

but under my tests target I can’t see the symbol,

My tests target does not include Geohash.swift

enter image description here

The project is at https://github.com/maximveksler/GeohashKit/blob/master/GeohashKitTests/GeohashTests.swift#L13

0 投票
1 回答
889 浏览

elasticsearch - 弹性搜索中未生成 Geohash

我创建了一个索引,如下所示:

它工作正常并创建了一个索引。

我输入了一份样本文件:

这也很好。在这里,我期望 ElasticSearch 会生成一个我可以使用的 geohash 字段/条目。

但是,当我查询时,我得到了这个:

我期待u10hbp查询结果中某处的地理哈希字符串,我可以用它来查询未来的位置点。还是我对 geohash+ES 的概念搞砸了??帮助!!

0 投票
0 回答
502 浏览

elasticsearch - 使用带有地理点的 Kibana4 Tile Map

我正在使用 Logstash 将location属性插入到要进入 ElasticSearch 的日志中:

然后我设置一个映射来告诉 ElasticSearch 它是一个Geo-Point。我不确定这个电话应该是什么样子。这是我到目前为止一直在使用的:

当我在 Kibana 4 中查询匹配记录时,该location字段带有一个小地球仪注释。到目前为止,一切都很好。

当我移动到 Tile Map 可视化时,调出匹配记录,按地理坐标存储桶,Geohash从“聚合”下拉列表中选择,然后locationField下拉列表中选择,然后按“应用”,不返回任何结果。

请求的聚合部分如下所示:

和回应:

出于某种原因,ElasticSearch 没有返回结果,即使看起来 Geo-Point 映射已被识别。有关如何从此处进行故障排除的任何提示?

0 投票
2 回答
441 浏览

geohashing - Geohash:多少哈希长度就足够了

对于需要以 Geohash 形式存储人的地理位置的应用程序,多少哈希长度(以字符为单位)就足够了?

位于此处的代码(参见维基百科关于Geohash的文章)说:

但他们没有提到任何原因。