扩展库 / geohash
geohash
经纬度网格编码与相邻格查询。
严格校验坐标、精度及编码字符;XLang 输入拒绝内嵌 NUL;经度环绕,极点方向显式报错。
2026-10-30:补 2696 条独立有理数网格参照,覆盖分割线相邻浮点数、完整短格、最高精度角落、边界/中心、bbox 往返和四方向;不以编码与解码自洽代替独立结果检查。新增 dateline 双语六行范例;原预算、线程及全部旧测试保留,未改算法/ABI,也不宣称全部地理编码空间穷举。最终平台证据与运行命令见 README 和根目录台账。
2026-10-28 完整返回链复查,六个文本函数接管后不再复制正文。C 12 组、XLang 17 组预算及八个 NUL 入口回归通过;非编码查询仍多一次 NUL 针串分配,不宣称整条零开销。Windows/Linux 默认门禁、Linux ASan/UBSan 与双语 JIT/AOT 通过;黄金文件只统一行尾,正文仍严格对照。
API
| 函数 | 用途 |
|---|---|
encode(lat, lon, precision = 6) | 创建 1..12 字符的 geohash |
decodeLat / decodeLon | 取格中心坐标 |
bbox / precision | 取精确格边界与编码精度;bbox 固定逗号分隔、点号小数 |
north / south / east / west | 返回同精度相邻格 |
xlang
import geohash
string cell = geohash.encode(42.6, -5.6, 5)
println(cell) // ezs42
println(geohash.east(cell))
文本结果在 C API 中由 XRT 独立分配;成功调用不会继承前次失败的线程错误。encode、bbox 和邻格的分配故障与恢复均有 C/XLang 回归。bbox 的数字写出不受进程区域设置影响。全部 1、2 字符格子、12 字符端点及逗号小数点区域设置已有聚焦验证。Windows 与 Linux 默认门禁均已验证严格 C、双语固定输出及 XLang/C 单文件范例独立 EXE;Linux C 边界与线程另经 ASan/UBSan。验收限网格编码、解码与四邻格,不代表完整地理信息能力;输入边界和验证命令见包内 README。