Ordnance Survey(OS) 그리드 참조와 위도/경도 간을 변환하는 Golang 패키지입니다. OS 그리드 참조는 전통적으로 영국 내비게이션에서 사용되는 반면 위도/경도는 GPS 시스템 및 글로벌 매핑 시스템에서 사용됩니다.
이 패키지는 Chris Veness의 뛰어난 Javascript 라이브러리를 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
pkg.go.dev에 더 자세한 예제가 있거나 Go Playground에서 사용해 보세요.
Ordnance Survey는 1791년부터 영국 지도를 제작해 왔습니다. 그들은 위도 및 경도와는 다른 National Grid 시스템을 사용합니다. 여기서 그리드 참조는 "SK127836"과 같이 두 글자와 일련의 숫자로 구성됩니다.
OS 그리드 참조는 야외 어디에서나 볼 수 있습니다. 가이드 북에서는 이를 사용하여 차를 주차할 위치를 알려주고, 하이킹 코스에서는 이를 사용하며, 문제가 발생하면 지역 산악 구조 팀이 OS 그리드 참조로 위치를 알고 싶어합니다. . 그러나 OS 그리드는 영국에서만 관련이 있습니다. 대부분의 전자 및 글로벌 매핑 시스템은 대신 이 Google 지도 URL과 같이 위도와 경도를 사용합니다.
따라서 OS 그리드 참조와 위도/경도 참조 간에 변환이 필요한 경우가 있습니다. 이 Golang 라이브러리를 사용하여 변환을 수행할 수 있습니다.
일반적으로 사람이 읽을 수 있는 표현은 두 글자 뒤에 두 개의 숫자 그룹이 오는 형식입니다(예: SZ 644 874
. 두 글자는 오른쪽 다이어그램과 같이 100km x 100km 정사각형을 정의합니다. 숫자의 첫 번째 그룹은 eastings
이고 두 번째 그룹은 northings
입니다. 이 숫자는 100km 정사각형 내의 좌표를 정의합니다.
또 다른 표기법은 그리드 문자를 생략하고 쉼표로 구분된 easting
과 northing
만 제공하는 것입니다. 이 경우 이는 전체적으로 그리드의 원점을 기준으로 한 좌표입니다. 즉, 그리드의 남서쪽 모서리를 기준으로 한 좌표입니다.
Ordnance Survey는 자세한 내용을 담은 친숙한 가이드를 만들었습니다.
이 라이브러리는 두 가지 표현 유형을 모두 구문 분석하고 표시할 수 있습니다.
어렵습니다. 아주, 아주 어렵습니다. 이런 종류의 페이지:
(병기 조사 참고 안내서 50페이지에서 발췌)
다행스럽게도 Chris Veness는 이미 자신의 Javascript 라이브러리에서 이를 구현하는 어려운 작업을 수행했습니다(단순히 그리드 참조를 위도/경도로 변환하는 것 이상의 작업을 수행함). 이 패키지는 작동 방식을 이해하지 못한 채 Javascript를 Golang으로 기계적으로 번역한 것입니다.
나는 이것 뒤에 숨어 있는 수학을 이해하지 못한다는 것을 기쁘게 생각합니다.
이는 원래 Javascript 구현에 대해 이 구현을 더 쉽게 확인할 수 있도록 하기 위한 의도적인 것입니다. 가능한 경우 업스트림 코드의 각 줄은 Golang 코드의 해당 줄과 일치해야 합니다.