开放位置代码是一种将位置编码为比纬度和经度更易于使用的形式的技术。生成的代码称为加号代码,因为它们的区别属性是包含“+”字符。
该技术旨在生成可替代街道地址的代码,特别是在建筑物没有编号或街道没有命名的地方。
加号代表一个区域,而不是一个点。随着数字添加到代码中,区域会缩小,因此长代码比短代码更精确。
相似的代码比不同的代码更靠近。
位置可以转换为代码,并且该(完整)代码可以完全离线转换回位置,无需任何数据表来查找或需要在线服务。
可以缩短代码以便于通信,在这种情况下,它们可以在区域内使用或与该短代码的所有用户都需要知道的参考位置结合使用。如果参考位置以位置名称的形式给出,则可能需要使用地理编码服务来恢复原始位置。
算法
是公开的,可以不受限制地使用。地理编码服务不是开放位置代码技术的一部分。
代码由从 20 个数字中选出的一系列数字组成。代码中的数字在纬度和经度之间交替。前四位数字描述了 1 度纬度乘 1 度经度区域,按度数对齐。在代码中再添加两位数字,可将面积缩小到前一个区域内 1/20 度的 1/20 度。依此类推 - 每对数字都会将面积缩小到前一个面积的 1/400。
例如,肯尼亚内罗毕的议会大厦位于 6GCRPR6C+24。 6GCR 是从 2°S 36°E 到 1°S 37°E 的区域。 PR6C+24 是 6GCR 内 14 x 14 米宽的区域。
在八位数字后使用“+”字符,将代码分为两部分,并将代码与邮政编码区分开来。
在某些位置,10 位数字的代码不够精确,但将其细化 20 倍则 i) 不必要地精确,并且 ii) 需要将代码扩展两位数。相反,在 10 位数字之后,该区域被划分为 4x5 的网格,并使用单个数字来标识网格方块。单个网格细化步骤将面积减少到大约 3.5x2.8 米。
代码可以根据位置缩短。通过使用位置来识别大致区域,然后生成最接近的匹配代码,这减少了必须记住的数字数量。如果可能的话,缩短代码将从代码开头删除四位或更多数字。代码可以缩短的程度取决于参考位置的接近程度。
如果参考位置源自城镇或城市名称,则取决于地理编码服务的准确性。尽管一项服务可能会将“苏黎世”放置在 Google 办公室附近,但另一项服务可能会将其移动一百米或更远,这可能足以阻止原始代码被恢复。与其使用大型城市规模要素来生成参考位置,不如使用较小的邻域要素,这样其地理编码结果不会有太大变化。
维基百科中提供了缩短代码的指南。
通过提供短代码和参考位置来恢复短代码。这不需要与用于缩短代码的位置相同,但确实需要位于附近。缩短的代码始终包含“+”字符,因此很容易计算丢失的组件。
子目录包含不同语言的示例实现和测试。每个实现都提供以下功能: