Geohash转换

免费在线Geohash编码解码工具,支持经纬度转Geohash、Geohash转经纬度,实时地图可视化显示。可调节精度(1-12级),显示相邻区域。适用于开发者、GIS专业人员的空间索引工具。

Loading...

什么是Geohash?地理空间编码完全指南

Geohash是由Gustavo Niemeyer发明的公共领域地理编码系统,它将地理坐标编码成一个紧凑的字母数字字符串。我们的免费在线Geohash编码解码工具可以让你即时将经纬度坐标转换为Geohash字符串,或将Geohash解码回坐标,并提供实时地图可视化。无论你是在构建基于位置的服务、优化数据库的邻近搜索查询,还是处理GIS数据,这个工具都能提供你所需的精度和可视化功能。Geohash被Uber、MongoDB、Redis等公司广泛用于高效的空间索引。

如何将经纬度转换为Geohash(及反向转换)

  1. 编码经纬度为Geohash:输入纬度(-90到90)和经度(-180到180),选择精度级别(1-12),Geohash会自动生成。
  2. 解码Geohash为坐标:切换到「解码」标签页,粘贴Geohash字符串,即可看到对应的经纬度和地图位置。
  3. 调整精度控制准确性:精度1覆盖约5000公里,精度6覆盖约1.2公里,精度9覆盖约5米,精度12覆盖约3.7厘米。
  4. 启用「显示相邻区域」可视化所有8个相邻的Geohash单元格——这对实现邻近搜索至关重要。
  5. 点击Geohash可复制到剪贴板,方便在代码、数据库查询或API调用中使用。

关于Geohash的常见问题

什么是Geohash?它是如何工作的?

Geohash是一种分层空间索引系统,将世界划分为网格单元。它使用base32编码将经纬度编码为单个字母数字字符串。每增加一个字符,就将单元格细分为32个更小的单元格,从而提高精度。例如,'u4pruydqqvj'精确定位一个特定位置,而'u4pru'则表示包含该点的更大区域。

不同长度的Geohash精度是多少?

Geohash精度随字符串长度变化:1字符≈5000km×5000km,2字符≈1250km×625km,3字符≈156km×156km,4字符≈39km×19.5km,5字符≈4.9km×4.9km,6字符≈1.2km×0.6km,7字符≈153m×153m,8字符≈38m×19m,9字符≈4.8m×4.8m,10字符≈1.2m×0.6m,11字符≈15cm×15cm,12字符≈3.7cm×1.8cm。

为什么使用Geohash而不是分别存储经纬度?

Geohash有几个关键优势:(1) 单字符串存储——更容易在数据库中建立索引;(2) 基于前缀的邻近性——附近位置共享相同前缀,可实现快速范围查询;(3) 分层精度——截断字符串即可降低精度,无需重新计算;(4) URL安全——可直接用于URL和API。它是Redis、MongoDB、Elasticsearch等数据库和众多位置服务的空间索引标准。

如何使用Geohash进行邻近/附近搜索?

进行邻近搜索时,需要查询目标Geohash及其8个相邻区域。这确保即使在单元格边界处也能捕获所有附近的点。我们工具的「显示相邻区域」功能可以可视化这些相邻单元格。在Redis中使用GEOSEARCH命令;在MongoDB中使用带geohash索引的$geoNear;在Elasticsearch中使用geo_bounding_box查询。

Geohash有什么局限性?

Geohash有一些边界情况:(1) 边缘效应——相邻的点在单元格边界处可能有完全不同的geohash;(2) 非均匀单元格——单元格是矩形而非正方形,随纬度变化;(3) 不适合精确距离计算——应使用Haversine公式计算精确距离。尽管如此,geohash仍然是空间索引和邻近搜索最高效的方法。

如何在不同编程语言中实现Geohash?

大多数语言都有geohash库:JavaScript(ngeohash、latlon-geohash)、Python(python-geohash、pygeohash)、Java(geohash-java)、Go(go-geohash)、Ruby(geohash gem)。数据库方面:Redis内置GEOADD/GEOHASH命令,MongoDB支持geohash索引,PostgreSQL有PostGIS扩展,Elasticsearch原生支持带geohash的geo_point类型。

相关文章