问题标签 [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.
hash - 为什么 Geohash 实际上是一种编码算法时将其命名为“xxxhash”?
当我第一次学习它时,我被它的名字弄糊涂了。它与其他算法完全不同hashing
,它保留了位置信息。它实际上不是hashing
算法,而是encoding
算法。
那么算法是如何命名的呢?为什么叫它Geohash
?
注释
要查看两者之间的区别
Encoding
,Hashing
您可以单击此处:编码 vs. 加密 vs. 散列 vs. 混淆要查看 Java 中的 Geohash 算法,您可以单击此处:Geohash 编码和解码算法
python - Geohashing vs SearchAPI 使用数据存储进行地理空间查询
我正在 python 中创建一个 appEngine 应用程序,它需要对数据存储数据执行有效的地理空间查询。一个示例用例是,我需要在当前用户的 10 英里半径范围内找到前 20 个帖子。在对我的选择进行了一些研究后,我发现目前实现此类功能的两种最佳方法是:
- 使用 Python 的 GeoModel 库索引 geoHashed 地理点数据
- 使用 Google 较新的 SearchAPI 创建/删除结构化数据文档
从高层次的角度来看,索引 geohashes 并直接对它们执行查询比必须为每个地理空间查询创建和删除文档成本更低,速度更快,但是我也读到 geohashing 可能非常不准确赤道或沿散列算法创建的“断层线”。我很少看到详细对比最佳方法的帖子,我认为堆栈是进行这种对话的好地方,所以我的问题如下:
- 有没有人实现过类似的功能并且对这两种方法都有过积极的经验?
- 哪种方法更便宜?
- 哪个是更快的选择?
- 我还有另一个重要的方法吗?
提前致谢。
python - Geohashing 为不同的哈希返回相同的位置
我在 python 中使用 Geohash 库。考虑这段代码:
为什么我得到不同哈希的相同结果?我希望我们有不同的最后一个字母,我们会得到不同的矩形。我错过了什么?
ipython - Geohash 模块已安装但导入错误
我在 Windows 10 中使用 ipython Jupyter 笔记本。我在 cmd 中使用 pip install geohash 安装了 Geohash。当我尝试使用 geohash(import geohash) 时出现以下错误:
再次检查 geohash 是否安装,然后在我尝试重新安装时出现以下消息:
我再次卸载 geohash。我从 github 手动安装 geohash 但出现同样的问题:导入错误
node.js - MongoDB:按地理位置给定区域和最大点数对文档进行聚类?
我正在尝试开发一个基于地图的可视化,其中包括子群体的“热图”,基于包含如下文档的 MongoDB 集合:
数据库中有数十万个单独的位置。它们不重叠——即“纽约市”和“曼哈顿”不会有两个单独的条目。
目标是使用 Leaflet.js 和一些插件来呈现这些数据的各种可视化。Leaflet 非常擅长在客户端对数据进行聚类——因此,如果我将一千个具有密度值的位置传递给它,它可以通过处理所有单独的值来呈现相关区域的热图。
问题是,假设我缩小地图以显示整个世界。如果不是不可能的话,将所有这些数据发送给客户端并让它足够快地处理这些信息以实现流畅的可视化,这将是非常低效的。
所以我需要做的是自动集群数据服务器端,我希望可以在 MongoDB 查询中完成。我已经读过geohashing可能是确定哪些点属于哪些集群的一个很好的起点,但我敢肯定有人以前做过这件事,并且可能比这有更好的洞察力。理想情况下,我想向我的 node.js 脚本发送一个查询,如下所示:
这将根据该指定地理区域内有多少个单独的点、给定要返回的最大数据点数或类似的东西来确定聚类需要的粒度;它会像这样返回数据:
...其中“clusterlocation”类似于集群中所有文档位置的平均值,“total_age_6_11”是“Subpopulations.Age.6_11”这些文档值的总和。
这是我可以纯粹在 Mongo 查询中做的事情吗?有没有一种“久经考验”的方法来做好它?
database - 如何在不过滤的情况下完成对地时数据的范围查询?
我想我了解如何存储 (x,y) 或 (lat, log) 以允许在对排序数据使用范围查询时检索某个空间范围内的所有点。Geohash 通过交替 lat(奇数位)和 log(偶数位)来实现这一点,这样随着 x 的分辨率增加,y 的分辨率也会增加。希尔伯特曲线等其他方法也依赖于这一基本原理,提高了两个维度的分辨率。但是,我无法理解添加额外的时间维度会完成什么。例如,GeoMesa 根据他们的网站使用看起来像“YXTTYXTTYX”的索引。我没有得到的是 TT 位如何允许提出诸如“在最小 < t < 最大间隔内获得 X、Y 范围内的所有点”之类的问题。我是否误解了地理空间索引中这些位和额外维度的目的?
我理解它的方式,将这些位放在那里会使时间分辨率随着空间分辨率的增加而增加。假设我们有 Ts 所在的 [10] [00] 之类的位。第一位将空间分成两块,零表示小于一半,1 表示大于一半,因此,对于四千年的假想集合,我们得到0 = year < 2000, 1 = year > 2000
。这[10]
导致2000 < t < 2500
, 下一位0
导致,2000 < t < 2250
和。使用这种方法,我看不到如何在特定空间范围内检索特定时间范围内的所有事件,也不清楚这还能用于什么。到目前为止,我看到的所有地理空间论文和演示文稿主要集中在空间散列上,并没有详细讨论额外维度的使用。0
2000 < t < 2125
geohashing - 从一个点的半径内找到一定长度的地理哈希
我有给定纬度和周围距离的点 - 例如{40.6826048,-74.0288632:20英里,51.5007825,-0.1258957:100英里}。如果我选择一个固定的 geohash 长度(比如说等于 ~ 1x1mile),我如何才能找到每个点具有给定半径的该长度的所有 geohash 条目?
添加一些背景 - 我想要这样做的原因是,我可以保存一个由 geohash id 键入的缓存,其中包含给定 geohash 在半径内的点列表的值(并且还匹配一些自定义资格规则)。然后我可以快速查找用户的位置 geohash 以找到他们周围所有符合条件的点。
elasticsearch - 如何在 elsaticsearch 中为具有 lat lon 和 alt 的地理点编写映射?
My_Json_File
- 请就如何在地理点和 “_id”字段中遇到这个“alt”字段提供建议,并为上述 JSON 文件编写合适的映射。
更新 1
My_Json_File
java - 为什么java字符串hashCode在不同但相似的geohash字符串上有很多冲突?
Geohash 字符串是我的稀疏逻辑回归模型中的一个特征。所以我使用 java string hashCode 在 geohash 字符串上生成 int 值以获得特征 ID。但我发现 hashCode 方法在类似的 geohash 字符串上表现不佳。这会导致不同的特征具有相同的特征 id,即使特征相似,这也可能对模型优化不利。例如,那些相似的 geohash 字符串对具有相同的 hashCode。
我猜geohash生成器方法和java hashCode方法之间有一些关系。那么,任何人都可以向我解释真正的原因以及如何减少 geohash 字符串上的冲突?
pandas - 比较两个熊猫数据框之间的地理哈希
我有 2 个数据框 df1 和 df2 具有不同的纬度和经度以及它们相应的地理哈希。现在对于 df1 中的每个 geohash,我想在数据框 df2 中找到最接近的 geohash。我不确定是否有办法比较geohashes。例如,对于 df1 中的 id 121,df2 中最近的 geohash 将是 9muc3rr,对于 df2 中的 id 122,最近的 geohash 将是 9wv97m1。
数据框 df1
数据框 df2