開放位置代碼是一種將位置編碼為比緯度和經度更易於使用的形式的技術。產生的代碼稱為加號代碼,因為它們的區別屬性是包含“+”字元。
該技術旨在產生可替代街道地址的代碼,特別是在建築物沒有編號或街道沒有命名的地方。
加號代表一個區域,而不是一個點。隨著數字添加到代碼中,區域會縮小,因此長代碼比短代碼更精確。
相似的代碼比不同的代碼更靠近。
位置可以轉換為代碼,並且該(完整)代碼可以完全離線轉換回位置,無需任何資料表來查找或需要線上服務。
可以縮短代碼以便於通信,在這種情況下,它們可以在區域內使用或與該短代碼的所有用戶都需要知道的參考位置結合使用。如果參考位置以位置名稱的形式給出,則可能需要使用地理編碼服務來恢復原始位置。
演算法
是公開的,可以不受限制地使用。地理編碼服務不是開放位置代碼技術的一部分。
代碼由 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 辦公室附近,但另一項服務可能會將其移動一百公尺或更遠,這可能足以阻止原始程式碼已恢復。與其使用大型城市規模要素來產生參考位置,不如使用較小的鄰域要素,因此其地理編碼結果不會有太大變化。
維基百科中提供了縮短程式碼的指南。
透過提供短代碼和參考位置來恢復短代碼。這不需要與用於縮短程式碼的位置相同,但確實需要位於附近。縮短的代碼始終包含“+”字符,因此很容易計算丟失的組件。
子目錄包含不同語言的範例實作和測試。每個實作都提供以下功能: