问题标签 [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 回答
932 浏览

elasticsearch - 弹性 GeoHash 查询 - 聚合过滤器

我正在尝试查询一个弹性索引,其中查询的结果是只有一个匹配文档的 geohashes 列表。

我可以使用以下命令获取所有地理哈希及其文档计数的简单列表:

{ "size" : 0, "aggregations" : { "boundingbox" : { "filter" : { "geo_bounding_box" : { "location" : { "top_left" : "34.5, -118.9", "bottom_right" : "33.3, -116." } } }, "aggregations":{ "grid" : { "geohash_grid" : { "field": "location", "precision": 4 } } } } } }

但是我无法找出正确的语法来过滤查询,我能得到的最接近的语法如下:

这失败了 503org.elasticsearch.search.aggregations.bucket.filter.InternalFilter cannot be cast to org.elasticsearch.search.aggregations.InternalMultiBucketAggregation

"aggregations":{ "grid" : { "geohash_grid" : { "field": "location", "precision": 4 } }, "grid_bucket_filter" : { "bucket_selector" : { "buckets_path" :{ "docCount" : "grid" //Also tried `"docCount" : "doc_count"` }, "script" : "params.docCount == 1" } } }

这失败了 400No aggregation found for path [doc_count]

"aggregations":{ "grid" : { "geohash_grid" : { "field": "location", "precision": 4 } }, "grid_bucket_filter" : { "bucket_selector" : { "buckets_path" :{ "docCount" : "doc_count" }, "script" : "params.docCount > 1" } } }

如何根据doc_countgeohash 网格中的 过滤?

0 投票
1 回答
3679 浏览

python - 将 spark 数据框列传递给 geohash 函数 - pyspark。无法将列转换为布尔值:

上述步骤效果很好。下面我正在尝试创建一个数据框:

这成功地创建了一个火花数据框。现在我正在使用 Pygeohash 编码,并抛出如下错误:

0 投票
2 回答
3888 浏览

python-3.x - How to efficiently convert a set of geohashes into a polygon?

I have been looking for a efficient way to convert a set of geohashes into polygons in Python, besides sometimes I obtain multipolygons instead of polygons, probably because some inner geohashes are missing. I am currently using python-geohash and shapely and my approach consists in the following steps:

  1. I convert each geohash into a polygon by extracting its corner coordinates.

    /li>
  2. Then I map over the iterable of geohashes performing previous explained transformation.

    /li>
  3. Finally, I combine all those polygons into a single one, by using polygon's method union.

    /li>

If the set of geohashes is around some thousands it may take few minutes.

0 投票
0 回答
228 浏览

elasticsearch - Kibana geohash 网格聚合中的中位数和百分位数

我有一个由 lat,long,country,value 组成的索引,我想在区域地图和坐标地图中绘制它。

我想要每个桶(区域或网格图块)的中位数或其他百分位数,例如 75%,但我可以从 Kibana 看到的唯一指标聚合是平均值、计数、总和、最大值……但不是我的米找。

你觉得我怎么能做到这一点?

提前致谢。

0 投票
1 回答
694 浏览

javascript - Geohash-16:如何

情况:

我有使用base-32系统创建geohash的 JavaScript 代码。

实际上,我是从ngeohash npm 模块(源代码)中获取的。

问题:

我不擅长数字系统二进制数据等。我不知道如何将编码更改为base-16系统('0123456789abcdef')。如果有人改变它或只是指出我需要改变什么,我会很高兴。谢谢。

0 投票
1 回答
801 浏览

python - 在python中匿名地理位置坐标

我有一个包含名称、交易金额和交易执行地点的精确经度和纬度的 csv。我希望将最终文档匿名化-为此,我需要将其更改为 CSV,其中名称被散列(这应该很容易),并且经度和纬度在 2 公里的半径内被掩盖。即,更改坐标,使其与原始位置的距离不超过 2 公里,但采用随机方式,使其无法通过公式恢复。有谁知道如何以这种方式使用坐标?

0 投票
0 回答
137 浏览

geohashing - 我需要在 tdr706 半径 10 公里内找到 geohashes。我该怎么做?

我需要找到 geohash tdr706 半径 10 公里范围内的所有geohash。我该怎么做?

0 投票
1 回答
959 浏览

geography - 如何计算 Geohash 的面积?

我知道geohash(精度为5)的面积是10平方公里。但我想知道geohash的面积(精度为4),我不知道如何计算。我阅读了有关 Geohash 的 wiki,但我仍然感到困惑。

https://en.wikipedia.org/wiki/Geohash

0 投票
1 回答
923 浏览

geotools - Geotools 可以从纬度和经度创建 Geohash 吗?

最近我一直在使用 Geotools 库(http://docs.geotools.org/latest/javadocs/)来处理一些简单的地理数据。但是,该库非常强大,令我感到惊讶的是,它似乎没有提供从纬度和经度创建 geohash 的能力。谁能为我指明有关如何使用 Geotools 库创建 geohash 的文档的方向?

0 投票
2 回答
390 浏览

websocket - 基于 geohashes 的 pubsub 主题划分的建议,以实现巧妙的 websocket 连接服务

我的问题涉及以下用例:

用例参与者

  • 用户A:设置广播区域并查看带直播帖子的流的用户。
  • 用户 B:在用户 A 设置的广播区域内第一个发送广播消息的用户。
  • 用户 C:在用户 A 设置的广播区域内发送广播消息的第二个用户。

在此处输入图像描述

用例描述

  • 用户A选择一个广播区域,在其边界(半径)内他想要接收直播消息。
  • 用户 A 打开 livefeed 并请求一组初始 livefeed 项目。
  • 用户 B 从用户 A 的广播区域内广播一条消息,而用户 A 的 livefeed 仍处于打开状态。用户 A 的实时源打开时,带有 1 个新实时源项目的标签会显示在其顶部。
  • 当用户 C 从用户 A 的选定广播区域内发布另一个实时馈送帖子时,标签计数器会增加。

用户 A 收到类似于以下 Facebook 示例的通知: 在此处输入图像描述

我想应用的解决方案(我认为 Pubnub 使用)是为每个 geohash 创建一个主题。
在我的情况下,这意味着对于广播消息的每个用户,它都需要发布到 geohash-topic,如果它落在范围内,客户端(应用程序/网站用户)将通过 websocket 使用 geohash-topic定义的区域(半径)。Ably 似乎使用 Web 套接字提供这种可扩展的服务。

我想它会简化成这样:

在此处输入图像描述

因此,这意味着需要从发送广播消息的当前位置提取 geohash。这个 geohash 应该具有足够小的粒度,以便接收用户可以设置或多或少准确的广播区域。(即,如果我们希望允许用户定义接收实时消息的广播区域,geohash 应该具有足够的准确性,这意味着如果我们决定扩展,人们应该期望有相当多的主题)。

选项 2 是为粒度较小(覆盖较大区域)的 geohash 创建主题,并让客户端根据与消息一起发送的 latlng 值来处理准确性。
然后客户端将决定是否丢弃消息。但是,这意味着发送更多消息(更多开销)和更高成本。

我没有这种架构的经验,并且质疑这种方法的可行性/可扩展性。
您能否想到这个问题的替代解决方案以达到预期的结果或提供更多关于如何整体解决此类问题的见解?(我也考虑过使用常规的 req-res 流,但这意味着向服务器发送垃圾邮件,这似乎也不是一个很好的解决方案)。

我确实查过了。
给定一个 161.4 平方公里的区域(如布鲁塞尔区域),geohashes 按字符串长度划分如下:

鉴于我们将允许用户可能有高达 153m 的不准确性(在用户可能希望订阅以接收本地广播消息的区域),这将需要大量的主题,这些主题肯定已经太大,甚至无法仅涵盖布鲁塞尔的整个地区。
所以我目前仍然有点卡在这个水平上。