问题标签 [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.
geocoding - avoiding geocode range collisions
I am in the process of extracting location entities ('Madison Square Garden', 'San Diego Zoo', etc.) from a large table of non-uniform location. I'm trying to avoid multiple entities in my new table. I don't have reliable street addresses, but am trying to extract addresses within a local range.
I am doing this by counting and matching across similar names within a geo range of 30km.
I am going through a geocoded cities table, and for each city creating a lat/long range and then extracting the location names within that range.
Using Madison Square Gardens as an example. The venue would be overlapped multiple times from different cities in the cities table. For instance, Manhattan, Newark, etc. would all likely overlap the NYC range and result in multiple entries for some properties in NYC.
I can't just set the range to a smaller area as I would be missing locations, or worse, ending up with more multiple entries as I don't often have good street/city/geocoded locations (though a 30km area seems to work pretty well).
I was hoping that geohashing would enable me to create a bounding box where I would be able to find the overlap, and avoid multiple entries, but that doesn't seem to be the case based on what I've found.
Ideally, I believe I am looking for a hash or some other value I can put into a cell, and store a unique location name/hash so mysql doesn't end up with multiple entries for a single location.
I don't have proper street address for each entry (though I do have some), so getting street level accuracy and not using a range doesn't really seem to be an option. I also don't have consistent city names, so I end up with NYC, New York, Manhattan, etc. etc. But my cities table is better, including New York, but not NYC.
_--------------EDITED-------------------- After taking another look at Geohash.org, I think I am on the right track, just missing a bit of granularity. If I take the first two characters of the hash, that is consistent within a range that is just too large. For instance, everything from victoria, bc to portland, or is all 'C2' for the first two characters. However, going to a 3 character solution, NYC starts with 'dr5' and so does Newark (which is good), but Hackensack is 'dr7'. Worse, Vanouver, bc. is 'C2b', but the suburb of Richmond bc is 'C28'.
google-app-engine - Google App Engine 地理哈希
我正在使用 GWT 和 App Engine 编写一个网络应用程序。我的应用程序需要根据纬度、经度发布和查询项目。
由于 google 的分布式数据库设计,您不能简单地查询一组不等式。相反,他们建议进行地理散列。该方法在此页面上进行了描述。
http://code.google.com/appengine/articles/geosearch.html
本质上,您预先计算了一个边界框,以便您可以查询已用该边界框标记的项目。
这个过程有一部分我不明白。“切片”属性是什么意思?
谢谢你的帮助!
ruby-on-rails - 地理哈希格式
geohash 值是否有任何特定格式?我可以在 ruby 脚本中使用 Geohash.encode(latitude,longitude,precision="8") 吗?精度属性可以取的最大值是多少?提前感谢您的帮助。
google-app-engine - App Engine - 为邻近搜索预先计算边界框
我正在尝试在 App Engine 上进行基于位置的搜索,但由于数据存储不支持多个不等式运算符,我无法搜索“a 和 b 之间的 lat 和 c 和 d 之间的 lon”。
一种解决方案是预先计算要搜索的边界框,如下所述:
http://code.google.com/appengine/articles/geosearch.html
但是,我对“切片”有点困惑。我试图弄清楚:
- 为什么要有切片?为什么不直接提高分辨率?他们不做同样的事情吗?
为什么同样有 5 个配置 - 不是一个吗?
GEOBOX_CONFIGS = ( (4, 5, True), (3, 2, True), (3, 8, False), (3, 16, False), (2, 5, False), )
我试图弄清楚为我自己的应用程序设置什么配置,但是变量太多,不清楚该怎么做。我是否增加分辨率(第一个数字)、切片数(第二个数字)、添加/删除配置?
最终,我对 10-15 英里内的点感兴趣(代码已经按距离对它们进行了排序),但我不明白为什么不能用 1 个配置和足够高的分辨率来完成。
ruby - Geohashing - 递归查找邻居的邻居
我现在正在寻找一种优雅的算法来递归地使用 geohashing 算法(http://www.geohash.org)找到邻居的邻居。
基本上取一个中央geohash,然后在它周围获得第一个相同大小的散列“环”(8个元素),然后,在下一步中,在第一个周围获得下一个环等等。你听说过一个优雅的怎么做?
蛮力可能是带走每个邻居并让他们的邻居忽略大量重叠。一个中央 geohash 周围的邻居已经解决了很多次(例如在 Ruby 中:http: //github.com/masuidrive/pr_geohash/blob/master/lib/pr_geohash.rb)
编辑澄清: 当前的解决方案,通过一个中心键和一个方向,像这样(与相应的查找表):
(摘自 Yuichiro MASUI 的库)
我说这种方法很快就会变得丑陋,因为一旦我们进入第二或第三圈,方向就会变得丑陋。理想情况下,该算法将简单地采用两个参数,中心区域和距 0 的距离仅是中心 geohash(["u0m"]
并且 1 是由 8 个相同大小的 geohash 组成的第一个环(=> [["u0t", "u0w"], ["u0q", "u0n"], ["u0j", "u0h"], ["u0k", "u0s"]])
。两个是第二个环,周围有 16 个区域第一环等
你有什么方法可以优雅地从比特中推断出“戒指”吗?
java - 使用 GIS 获取单个点的地理信息
我不太确定从哪里开始。我在过去一周才刚刚开始研究这个问题,但希望有人能帮助我指出正确的方向。
我的项目的目标是能够获取 geohash,将其解码为纬度和经度,根据一些 GIS 数据检查该点,并找出有关该点的一些信息,例如地形(这是水体吗?A湖?海洋?这是山区吗?这是田地吗?)、海拔或其他有用的东西。然后只需能够显示该信息作为启动器。
到目前为止,我收集到的是我需要获得一些免费的 GIS 数据(这是给学校的,所以我没钱!)。我想拥有世界数据,我在网上找到了一些(http://www.webgis.com/terraindata.html),但我不知道从这里去哪里。我看到一些工具,如 PostGIS 作为数据库。
我目前在项目的其他部分使用 Java,所以如果可能的话,我想坚持使用 Java。
有人可以帮助我,或指出我正确的方向吗?
python - Python GeoModel 替代品
我正在为应用引擎数据存储寻找一个替代库,它将执行最近 n 或盒装地理查询,目前我使用的是 GeoModel 0.2,它运行速度很慢(在某些情况下 > 1.5s)。有没有人有什么建议?
谢谢!
python - GAE 中带有地理模型的空边界框结果
我正在尝试使用 python 中的 geomodel 在 GAE 中获取边界框。我的理解是您定义了一个框,然后地理模型获取将返回所有结果,其坐标位于该框内。我目前正在输入 GPS 纬度和经度 (55.497527,-3.114624),然后在该坐标的给定范围内建立一个带有 N、S、E、W 的边界框,如下所示:
这总是返回一个空的结果集,即使我知道在日志输出框中指定的范围内有结果:
INFO 2011-07-19 20:45:41,129 main.py:117] 使用 N:56.497527 E:-3.214624 S:54.497527, W:-3.014624 创建的框
我的数据存储中的条目包括:{“venueLat”:55.9570323、“venueCity”:“Edinburgh”、“venueZip”:“EH1 3AA”、“venueLong”:-3.1850223、“venueName”:“Edinburgh Playhouse”、“venueState” :“”,“venueCountry”:“UK”} 和 {“venueLat”:55.9466506,“venueCity”:“爱丁堡”,“venueZip”:“EH8 9FT”,“venueLong”:-3.1863224,“venueName”:“Festival爱丁堡剧院”,“venueState”:“”,“venueCountry”:“UK”}
两者都绝对具有在上面定义的边界框内的位置。我已经打开了调试,并且边界框获取似乎确实搜索了地理单元,因为我得到了以下行的输出:
INFO 2011-07-19 20:47:09,487 geomodel.py:114] bbox 查询查看了 4 个地理单元
但是,似乎没有返回任何结果。我确保我为所有模型运行了 update_location() 以确保基础地理单元数据是正确的。有没有人有任何想法?
谢谢
ruby-on-rails - 太阳黑子空间搜索不返回结果
我刚刚在我的应用程序中实现了 Sunspot gem,我真的很喜欢它,只是当我进行位置搜索时,它似乎排除了一些结果。例如:我住在俄亥俄州哥伦布市,所以如果我搜索“俄亥俄州哥伦布市”,我的应用程序会将其转换为 lat/lng,然后我会这样做:
这将返回一些在哥伦布西侧进行地理编码的记录,但我的数据库中没有位于东侧的记录。我的搜索是否做错了什么?
您可以在http://skateparks.co/search自己尝试一下
如果您搜索“俄亥俄州哥伦布”,您将获得与搜索“俄亥俄州兰开斯特”(距东南仅几英里)完全不同的结果。