Il s'agit d'un package Golang permettant de traduire entre les références de grille Ordnance Survey (OS) et la latitude/longitude. Les références OS Grid sont traditionnellement utilisées dans la navigation au Royaume-Uni, tandis que la latitude/longitude est utilisée par les systèmes GPS et les systèmes de cartographie mondiaux.
Ce package est une traduction partielle en Golang de l'excellente bibliothèque 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
Il existe des exemples plus détaillés sur pkg.go.dev, ou essayez-le dans Go Playground.
L'Ordnance Survey produit des cartes de la Grande-Bretagne depuis 1791. Ils utilisent un système de grille nationale, distinct de la latitude et de la longitude, où les références de grille comprennent deux lettres et une séquence de chiffres, telles que « SK127836 ».
Les références de grille OS sont omniprésentes dans les grands espaces - les guides les utilisent pour vous indiquer où garer la voiture, les itinéraires de randonnée les utilisent, et si vous avez des ennuis, l'équipe locale de secours en montagne voudra connaître l'emplacement en tant que référence de grille OS. . Cependant, la grille OS n’est pertinente qu’en Grande-Bretagne ; la plupart des systèmes de cartographie électronique et globale utilisent à la place la latitude et la longitude, comme dans, par exemple, cette URL Google Maps.
Il est donc parfois nécessaire de convertir entre les références de grille du système d'exploitation et les références lat/lon. Cette bibliothèque Golang peut être utilisée pour effectuer la conversion.
La représentation normale et lisible par l'homme est constituée de deux lettres suivies de deux groupes de chiffres, par exemple SZ 644 874
. Les 2 lettres définissent un carré de 100 km sur 100 km, comme sur le schéma de droite. Le premier groupe de chiffres correspond eastings
et le second aux northings
; ces chiffres définissent une coordonnée dans le carré de 100 km.
Une notation alternative consiste à omettre les lettres de la grille et à fournir uniquement une easting
et northing
séparées par une virgule. Il s'agit dans ce cas de coordonnées relatives à l' origine de la grille dans son ensemble, c'est à dire par rapport au coin sud-ouest de la grille.
L'Ordnance Survey a créé un guide convivial avec tous les détails.
Cette bibliothèque peut analyser et afficher les deux types de représentation.
Il est difficile. Très, très difficile. Pages de ce genre de choses :
(un extrait de la page 50 du guide de référence de l'Ordnance Survey)
Heureusement, Chris Veness a déjà fait le dur travail d'implémentation de cela dans sa bibliothèque Javascript (qui fait bien plus que simplement convertir les références de grille vers et depuis lat/lon). Ce package est une traduction assez mécanique du Javascript vers Golang, sans comprendre son fonctionnement.
Je suis heureux de dire que je ne comprends pas les mathématiques derrière tout cela.
Ceci est délibéré, afin de faciliter la vérification de cette implémentation par rapport à l'implémentation Javascript d'origine. Dans la mesure du possible, chaque ligne de code en amont doit correspondre à une ligne équivalente dans le code Golang.