Это пакет Golang для перевода между привязками сетки Ordnance Survey (OS) и широтой/долготой. Ссылки OS Grid традиционно используются в навигации Великобритании, а широта и долгота используются системами GPS и глобальными картографическими системами.
Этот пакет является частичным переводом на Golang превосходной библиотеки Javascript Криса Венесса.
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 года. Они используют национальную сетку, отличную от широты и долготы, где ссылки на сетку состоят из двух букв и последовательности цифр, например «SK127836».
Ссылки на сетку ОС повсеместно распространены на свежем воздухе: путеводители используют их, чтобы подсказать вам, где припарковать автомобиль, их используют пешеходные маршруты, а если у вас возникнут проблемы, местная горноспасательная команда захочет узнать местоположение в виде ссылки на сетку ОС. . Однако сетка ОС актуальна только в Великобритании; вместо этого большинство электронных и глобальных картографических систем используют широту и долготу, как, например, в этом URL-адресе Карт Google.
Поэтому иногда необходимо преобразовать ссылки на сетку ОС и ссылки на широту/долготу. Эту библиотеку Golang можно использовать для выполнения преобразования.
Обычное, понятное человеку представление — это две буквы, за которыми следуют две группы цифр, например SZ 644 874
. Две буквы определяют квадрат размером 100 на 100 км, как на схеме справа. Первая группа цифр — это eastings
, а вторая — northings
; эти цифры определяют координату в пределах 100-километрового квадрата.
Альтернативное обозначение — опустить буквы сетки и указать только easting
и northing
, разделенные запятой. В данном случае это координаты относительно начала координат сетки в целом, т.е. относительно юго-западного угла сетки.
Компания Ordnance Survey создала подробное руководство с подробной информацией.
Эта библиотека может анализировать и отображать оба типа представления.
Это трудно. Очень, очень сложно. Страницы такого рода:
(отрывок из стр. 50 справочного руководства Ordnance Survey)
К счастью, Крис Венесс уже проделал тяжелую работу по реализации этого в своей библиотеке Javascript (которая делает гораздо больше, чем просто преобразование ссылки на сетку в широту/долготу и обратно). Этот пакет представляет собой достаточно механический перевод Javascript на Golang без понимания того, как он работает.
Я рад сообщить, что я не понимаю математики, стоящей за всем этим.
Это сделано намеренно, чтобы облегчить проверку этой реализации на соответствие исходной реализации Javascript. По возможности каждая строка восходящего кода должна соответствовать эквивалентной строке кода Golang.