這是一個 Golang 包,用於在地形測量 (OS) 網格參考和緯度/經度之間進行轉換。 OS 網格參考傳統上用於英國導航,而緯度/經度則用於 GPS 系統和全球地圖系統。
這個套件是 Chris Veness 優秀的 Javascript 函式庫的 Golang 部分翻譯。
gridRef , err := ParseOsGridRef ( "SW 46760 28548" )
if err != nil {
panic ( err )
}
lat , lon := gridRef . ToLatLon ()
fmt . Printf ( "%.4f,%.4f n " , lat , lon ) // 50.1029,-5.5428
pkg.go.dev 上有更詳細的範例,或在 Go Playground 中嘗試。
自 1791 年以來,英國地形測量局一直在製作英國地圖。
操作系統網格參考在戶外活動中無處不在- 指南書使用它們來告訴您在哪裡停車,遠足路線使用它們,如果您遇到麻煩,當地的山地救援團隊會想知道作為操作系統網格參考的位置。然而,操作系統網格僅適用於英國;大多數電子和全球地圖系統都使用緯度和經度,例如此 Google 地圖 URL。
因此有時需要在操作系統網格參考和緯度/經度參考之間進行轉換。該 Golang 函式庫可用於執行轉換。
正常的、人類可讀的表示是兩個字母後面跟著兩組數字,例如SZ 644 874
。這 2 個字母定義了 100 公里 x 100 公里的正方形,如右圖所示。第一組數字是eastings
,第二組數字是northings
;這些數字定義了 100 平方公里內的座標。
另一種表示法是省略網格字母並僅提供以逗號分隔的easting
和northing
。在這種情況下,這些座標是相對於整個網格原點的座標,即相對於網格的西南角的座標。
英國地形測量局創建了一份包含完整詳細資訊的友善指南。
該庫可以解析並顯示這兩種類型的表示形式。
它很難。非常非常困難。此類內容的頁面:
(摘自英國地形測量局參考指南第 50 頁)
幸運的是,Chris Veness 已經在他的 Javascript 庫中完成了實現這一點的艱苦工作(它的作用不僅僅是將網格引用轉換為緯度/經度)。這個包是相當機械地將 Javascript 翻譯成 Golang,而不了解它是如何運作的。
我很高興地說我不明白這背後的數學原理。
這是故意的,以便更容易根據原始 Javascript 實作來驗證此實作。如果可能,上游程式碼的每一行都應與 Golang 程式碼中的等效行相符。