Dies ist ein Golang-Paket zur Übersetzung zwischen Ordnance Survey (OS)-Gitterreferenzen und Breitengrad/Längengrad. OS-Grid-Referenzen werden traditionell in der britischen Navigation verwendet, während Lat/Lon von GPS-Systemen und globalen Kartensystemen verwendet wird.
Dieses Paket ist eine teilweise Übersetzung der hervorragenden Javascript-Bibliothek von Chris Veness in 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
Detailliertere Beispiele gibt es auf pkg.go.dev, oder probieren Sie es im Go Playground aus.
Die Ordnance Survey erstellt seit 1791 Karten von Großbritannien. Sie verwenden ein nationales Rastersystem, das sich vom Breiten- und Längengrad unterscheidet und bei dem die Rasterreferenzen aus zwei Buchstaben und einer Ziffernfolge bestehen, wie zum Beispiel „SK127836“.
OS-Gitterreferenzen sind in der freien Natur allgegenwärtig – in Reiseführern werden sie verwendet, um Ihnen zu sagen, wo Sie das Auto parken sollen, auf Wanderrouten werden sie verwendet, und wenn Sie in Schwierigkeiten geraten, möchte das örtliche Bergrettungsteam den Standort als OS-Gitterreferenz wissen . Allerdings ist das OS-Grid nur in Großbritannien relevant; Die meisten elektronischen und globalen Kartensysteme verwenden stattdessen Breiten- und Längengrade, wie beispielsweise in dieser Google Maps-URL.
Daher ist es manchmal notwendig, zwischen OS-Grid-Refs und Lat/Lon-Referenzen zu konvertieren. Diese Golang-Bibliothek kann zur Durchführung der Konvertierung verwendet werden.
Die normale, für Menschen lesbare Darstellung besteht aus zwei Buchstaben, gefolgt von zwei Zifferngruppen, zum Beispiel SZ 644 874
. Die beiden Buchstaben definieren ein Quadrat von 100 km mal 100 km, wie im Diagramm rechts. Die erste Zifferngruppe sind eastings
und die zweite die northings
; Diese Ziffern definieren eine Koordinate innerhalb des 100-km-Quadrats.
Eine alternative Schreibweise besteht darin, die Rasterbuchstaben wegzulassen und nur einen durch Komma getrennten easting
und northing
anzugeben. In diesem Fall handelt es sich um Koordinaten relativ zum Ursprung des gesamten Gitters, also relativ zur südwestlichen Ecke des Gitters.
Die Ordnance Survey hat einen benutzerfreundlichen Leitfaden mit allen Einzelheiten erstellt.
Diese Bibliothek kann beide Darstellungsarten analysieren und anzeigen.
Es ist schwierig. Sehr, sehr schwierig. Seiten dieser Art:
(ein Auszug aus Seite 50 des Referenzhandbuchs der Ordnance Survey)
Glücklicherweise hat Chris Veness bereits die harte Arbeit geleistet, dies in seiner Javascript-Bibliothek zu implementieren (die viel mehr kann als nur die Konvertierung von Rasterreferenzen in und von Lat/Lon). Dieses Paket ist eine ziemlich mechanische Übersetzung des Javascripts in Golang, ohne zu verstehen, wie es funktioniert.
Ich freue mich, sagen zu können, dass ich die Mathematik dahinter nicht verstehe.
Dies ist beabsichtigt, um die Überprüfung dieser Implementierung anhand der ursprünglichen Javascript-Implementierung zu erleichtern. Wenn möglich, sollte jede Zeile des Upstream-Codes mit einer entsprechenden Zeile im Golang-Code übereinstimmen.