问题标签 [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.
mongodb - 使用 mongodb 或 cassandra 的空间数据
我正在考虑一个概念证明来处理大于 10 G 的大量数据,这需要每秒至少 200 次以上的写入和每秒大约 50 次以上的空间相关数据读取。这也是一个不断增长的系统。目前,出于性能原因,我正在考虑将这些大容量数据移动到 NoSql 大表类型的数据库中。
我已经考虑并仔细研究了 MongoDB 和 cassandra。就我的阅读而言,
Mongodb: - 似乎有写入器锁定问题 - 如果不需要多个服务器,stackoverflow 中的一篇文章建议使用此数据库 - 索引保存在内存中。因此,索引增长越大,据说性能会下降 - 优势是 Mongodb 直接支持空间数据和索引以及查找附近位置等功能 - 我看到这篇文章Cassandra Or MongoDB For Our Location Based Application建议使用 mongodb作为最佳选择
Cassandra:
- 似乎是相关数据库中最好的 - 似乎具有出色的写入和读取性能 - 本身不支持空间索引,但这可以通过 geohashing 扩展
我真的很喜欢 mongodb,因为它有良好的文档和对空间数据的直接支持。有没有人在这么大的系统上使用 mongodb 有过不好的经历?我实际上在 mongodb iostat 上看到了很多关于性能的帖子。
如果 mongodb 不适合,有人可以提供一些关于使用 cassandra 进行地理散列的指示吗?我看到了用于创建哈希的链接http://code.google.com/p/geospatialweb/ 。但是有关于如何查询等的问题?
solr - 在 solr dih 在一个位置导入两个双精度
我现在拥有的是两个双重领域:
以及我想要的:一个位置字段中的 2 个双精度值:
到目前为止我尝试过并且不起作用的方法:
有什么简单的解决办法吗?提前致谢!
google-app-engine - 如何计算可视区域/边界框的geohash?
我最近开始从事一个涉及地理位置、地图(Google Maps V3)等的个人项目。
该项目是用 Python 开发的,旨在在 Google App Engine 上运行。我了解到,为了找到接近某个位置的标记/位置,可以使用 geohash 算法(这很酷)。
我不明白的是:假设我在数据存储中拥有所有位置(以及每个位置的纬度、经度和 geohash(高精度)。)
我知道我应该使用 geohash 的前缀(以匹配其中的位置),但是如何计算边界框的 geohash?考虑到边界框由两点组成,东北和西南,我不明白如何去做。
为了让我查询应该为当前可见边界框返回哪些位置,我需要可见/可见边界框的 geohash -现在我知道我可以对可视地图上的中心位置进行 geohash,但我不知道如何许多字母要切断(以降低精度)以实现与实际边界框的“匹配”。(或者也许不是这样......?)
当边界框容器到geohashes时你会怎么做?(就像在可视区域的中间它在'dqcjr0'和'dqcjqb'之间分裂)
另外,假设我有一个 5 个字母的 geohash,如何将其转换回可见的边界框?或者换句话说,我怎么知道什么是“包含”的散列,以及相邻的散列中是什么?
在此先感谢您的帮助,
肯。
java - N张图像之间的距离:递增!(相同的裁剪,但重新压缩/调整)
我正在尝试找出图像的地理散列方法。这很难,因为可能图像的空间比 lat/lng 的维度要高得多。(地理散列将位置转换为字符串,其中字符串逐渐细化位置)
所以,我需要的是:
- INPUT:磁盘上的 JPG 或 PNG 图像列表
- 输出:对于每个图像一个字符串,其中任何两个图像之间的公共字符串前缀越长,两个图像相同的可能性就越高。
它不需要完美,也不需要处理极端情况,例如裁剪图像或经过大量调整的图像。它适用于不同分辨率和压缩级别的同一图像的多个副本。
我不能使用:
- 文件或图像数据散列,因为即使两个图像之间的微小变化也会产生完全不同的散列,并且您不会得到任何接近
- 图像减法,因为它不会是 N 对 N 比较。
我已阅读其他答案以尝试小波压缩或拉普拉斯/高斯金字塔,但我不确定如何在 Java 或 Python 中实现。不过,我进步了!
- 使用http://today.java.net/pub/a/today/2007/04/03/perils-of-image-getscaledinstance.html将大小调整为 32x32以不丢弃数据。好的,一切都变成了一个正方形。
- 创建一个由逐渐缩小的缩略图组成的金字塔,一直到 2x2。
- 在 2x2 中,编码一串“下一个像素是否比当前像素亮?如果是,则为 1,否则为 0 ”(这会丢弃所有色调和饱和度,我可能想以某种方式使用色调)
- 对 8x8 和 32x32 金字塔中的连续二进制数进行编码
- 将大二进制数转换为更高的基数表示,如 Base62。
这似乎运作良好!压缩或色彩平衡的微小差异不足以改变“该区域的左侧是否比右侧更亮”。但是,我认为我正在重新发明轮子,某种渐进式编码可能会更好?SIFT 和其他特征检测是多余的,我不需要能够处理裁剪或旋转。
solr - Solr - 使用方面基于可变精度 geohashes 对文档进行求和
有没有办法根据分面字段的子字符串获取分面计数,类似于 EdgeNGram?
我正在使用 solr 以高精度存储 geohash 字符串,并希望以特定的 geohash 精度计算文档数。构面用于计算特定 geohash 'cell' 中的文档。
目前,我能看到的唯一方法是使用 geohashes 层。
例如。当前构面结果集(来自索引数据):
我想要的精度 1 设置:
我想要的精度 2 设置:
干杯。
python - 使用python将数字字符串转换为MD5
受 XKCD geohashing 漫画 (http://imgs.xkcd.com/comics/geohashing.png) 的启发,我想我应该尝试用 Python 编写生成器。不过,我已经用它的主要部分打了一个块:转换为 MD5,然后转换为十进制。
有可能吗?
google-app-engine - 用于位置查询的 App Engine 全文搜索与 Geohashing
我正在考虑将应用程序从 RoR 移植到以地理搜索为中心的 Python App Engine。我一直在使用其中一个开源 GeoModel(即 geohashing)库,以允许应用程序处理诸如“附近有哪些餐馆(纬度/经度对)”之类的问题的查询以及类似的事情。
GeoModel 使用 ListProperty 创建了一个沉重的索引,这让我担心定价,因为我有大约 1000 万个实体需要加载到生产环境中。
我今天早上发现的这篇文章在成本方面似乎相当可怕:
https://groups.google.com/forum/?fromgroups#!topic/google-appengine/-FqljlTruK4
所以我的问题是——既然谷歌已经发布了支持地理搜索的全文搜索,地理散列是一个没有实际意义的概念吗?不过,目前尚不清楚这个新 API 的幕后发生了什么,而且我担心索引大小可能与我使用 GeoModel 方法一样大。
搜索 API 的另一个问题是,看来我不仅必须在数据存储中创建我的模型,而且还要将其中一些数据(它所代表的模型的 GeoPtProperty 和 entity_key)复制到 Documents 中,这大大增加了我的数据集。
对此有什么想法吗?目前我正在考虑刮掉这个端口太昂贵了,尽管到目前为止我真的很喜欢在 App Engine 环境中工作并且很想在我的一些应用程序中摆脱 EC2。
php - Redis 中的 Geohash 与 php
我将 Redis 与 php 及其库phpredis 一起使用。
我有以下结构:
但我还没有找到一种通过哈希搜索的方法。我想搜索例如完全相同的哈希或大致相同的哈希。我应该改变我的结构吗?
谢谢。
solr - 在 solr 3.6 中获取与 geohash 字段的距离
是否可以在具有多个值的 geohash 字段上从 geodist() 过滤器返回距离?
geosort 和 geodist 过滤器工作正常,但我试图获取查询点与结果中返回的位置之间的距离。
我试过http://wiki.apache.org/solr/SpatialSearch#Returning_the_distance 第二种方法是: //localhost:8983/solr/select?indent=true&fl=name,store&sfield=store&pt=45.15,-93.85&sort =score%20asc&q={!func}geodist()
但它返回奇怪的结果,用 2 个位置测试它返回分数 9979.032,实际上两个点之间的距离约为 33,000 公里?
它使用什么单位返回分数字段中的距离?我假设公里,但它没有意义,或者结果是假的,我不知道
任何帮助将不胜感激,谢谢