Este es un paquete Golang para traducir entre referencias de cuadrícula de Ordnance Survey (OS) y latitud/longitud. Las referencias de OS Grid se utilizan tradicionalmente en la navegación del Reino Unido, mientras que los sistemas GPS y los sistemas de mapeo global utilizan lat/lon.
Este paquete es una traducción parcial a Golang de la 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
Hay ejemplos más detallados en pkg.go.dev, o pruébelo en Go Playground.
El Ordnance Survey ha estado produciendo mapas de Gran Bretaña desde 1791. Utilizan un sistema de cuadrícula nacional, distinto de la latitud y la longitud, donde las referencias de la cuadrícula comprenden dos letras y una secuencia de dígitos, como "SK127836".
Las referencias de la cuadrícula del sistema operativo son omnipresentes al aire libre: las guías las usan para indicarle dónde estacionar el automóvil, las rutas de senderismo las usan y, si tiene problemas, el equipo local de Mountain Rescue querrá saber la ubicación como una referencia de la cuadrícula del sistema operativo. . Sin embargo, la red OS sólo es relevante en Gran Bretaña; la mayoría de los sistemas cartográficos electrónicos y globales utilizan la latitud y la longitud, como en, por ejemplo, esta URL de Google Maps.
Por lo tanto, a veces es necesario convertir entre referencias de cuadrícula del sistema operativo y referencias de latitud/longitud. Esta biblioteca de Golang se puede utilizar para realizar la conversión.
La representación normal, legible por humanos, es dos letras seguidas de dos grupos de dígitos, por ejemplo SZ 644 874
. Las 2 letras definen un cuadrado de 100 km por 100 km, como en el diagrama de la derecha. El primer grupo de dígitos es eastings
y el segundo es el northings
; estos dígitos definen una coordenada dentro del cuadrado de 100 km.
Una notación alternativa es omitir las letras de la cuadrícula y proporcionar solo un easting
y northing
separados por una coma. En este caso se trata de coordenadas relativas al origen de la cuadrícula en su conjunto, es decir, relativas a la esquina suroeste de la cuadrícula.
Ordnance Survey ha creado una guía amigable con todos los detalles.
Esta biblioteca puede analizar y mostrar ambos tipos de representación.
Es difícil. Muy, muy difícil. Paginas de este tipo de cosas:
(un extracto de la página 50 de la guía de referencia de Ordnance Survey)
Afortunadamente, Chris Veness ya ha hecho el arduo trabajo de implementar esto en su biblioteca Javascript (que hace mucho más que simplemente convertir referencias de cuadrícula hacia y desde lat/lon). Este paquete es una traducción bastante mecánica de Javascript a Golang, sin entender cómo funciona.
Me complace decir que no entiendo las matemáticas detrás de todo esto.
Esto es deliberado para facilitar la verificación de esta implementación con la implementación original de Javascript. Siempre que sea posible, cada línea de código ascendente debe coincidir con una línea equivalente en el código de Golang.