Este é um pacote Golang para traduzir entre referências de grade do Ordnance Survey (OS) e latitude/longitude. As referências OS Grid são tradicionalmente usadas na navegação no Reino Unido, enquanto lat/lon é usado por sistemas GPS e sistemas de mapeamento global.
Este pacote é uma tradução parcial para Golang da excelente biblioteca Javascript de Chris Veness.
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
Existem exemplos mais detalhados em pkg.go.dev ou experimente no Go Playground.
O Ordnance Survey produz mapas da Grã-Bretanha desde 1791. Eles usam um sistema de Grade Nacional, distinto de latitude e longitude, onde as referências da grade compreendem duas letras e uma sequência de dígitos, como "SK127836".
As referências da grade do sistema operacional são onipresentes ao ar livre - os guias os usam para informar onde estacionar o carro, as rotas de caminhada as usam e, caso você tenha problemas, a equipe local do Mountain Rescue gostaria de saber a localização como uma referência da grade do sistema operacional . No entanto, a rede OS só é relevante na Grã-Bretanha; a maioria dos sistemas de mapeamento eletrônico e global usa Latitude e Longitude, como, por exemplo, neste URL do Google Maps.
Portanto, às vezes é necessário converter entre referências de grade do sistema operacional e referências de lat/lon. Esta biblioteca Golang pode ser usada para realizar a conversão.
A representação normal e legível é composta por duas letras seguidas por dois grupos de dígitos, por exemplo SZ 644 874
. As 2 letras definem um quadrado de 100 km por 100 km, como no diagrama à direita. O primeiro grupo de dígitos são eastings
e o segundo são os northings
; esses dígitos definem uma coordenada dentro do quadrado de 100 km.
Uma notação alternativa é omitir as letras da grade e fornecer apenas o easting
e northing
separados por vírgula. Neste caso estas são coordenadas relativas à origem da grelha como um todo, ou seja, relativas ao canto sudoeste da grelha.
O Ordnance Survey criou um guia amigável com todos os detalhes.
Esta biblioteca pode analisar e exibir ambos os tipos de representação.
É difícil. Muito, muito difícil. Páginas desse tipo de coisa:
(um trecho da página 50 do guia de referência do Ordnance Survey)
Felizmente, Chris Veness já fez o trabalho duro de implementar isso em sua biblioteca Javascript (que faz muito mais do que apenas converter a referência da grade de e para lat/lon). Este pacote é uma tradução bastante mecânica do Javascript para Golang, sem entender como funciona.
Tenho o prazer de dizer que não entendo a matemática por trás de nada disso.
Isso é deliberado para facilitar a verificação desta implementação em relação à implementação original do Javascript. Sempre que possível, cada linha do código upstream deve corresponder a uma linha equivalente no código Golang.