นี่คือแพ็คเกจ Golang เพื่อแปลระหว่างการอ้างอิงกริด Ordnance Survey (OS) และละติจูด / ลองจิจูด การอ้างอิง OS Grid มักใช้ในการนำทางของสหราชอาณาจักร ในขณะที่ระบบ GPS และระบบแผนที่ทั่วโลกใช้ lat / lon
แพ็คเกจนี้เป็นการแปลบางส่วนเป็น Golang ของไลบรารี Javascript ที่ยอดเยี่ยมโดย 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
มีตัวอย่างโดยละเอียดเพิ่มเติมบน pkg.go.dev หรือลองใช้ใน Go Playground
กรมสรรพาวุธสำรวจจัดทำแผนที่ของบริเตนใหญ่มาตั้งแต่ปี พ.ศ. 2334 แผนที่เหล่านี้ใช้ระบบกริดแห่งชาติ แตกต่างจากละติจูดและลองจิจูด โดยที่การอ้างอิงตารางประกอบด้วยตัวอักษรสองตัวและลำดับตัวเลข เช่น "SK127836"
การอ้างอิงตาราง OS นั้นแพร่หลายในที่กลางแจ้ง หนังสือแนะนำใช้เพื่อบอกคุณว่าจะจอดรถที่ไหน เส้นทางเดินป่าใช้ตารางเหล่านั้น และหากคุณประสบปัญหา ทีม Mountain Rescue ในพื้นที่จะต้องการทราบตำแหน่งในฐานะผู้อ้างอิงตาราง OS . อย่างไรก็ตาม ตาราง OS มีความเกี่ยวข้องเฉพาะในบริเตนใหญ่เท่านั้น ระบบแผนที่อิเล็กทรอนิกส์และทั่วโลกส่วนใหญ่ใช้ละติจูดและลองจิจูดแทน ดังเช่นใน URL ของ Google Maps นี้
ดังนั้นบางครั้งจึงจำเป็นต้องแปลงระหว่างการอ้างอิงกริด OS และการอ้างอิง lat/lon ไลบรารี Golang นี้สามารถใช้เพื่อทำการแปลงได้
การแสดงตามปกติที่มนุษย์สามารถอ่านได้คือตัวอักษรสองตัวตามด้วยตัวเลขสองกลุ่ม เช่น SZ 644 874
ตัวอักษร 2 ตัวกำหนดพื้นที่สี่เหลี่ยมจัตุรัสขนาด 100 กม. x 100 กม. ดังที่แสดงในแผนภาพด้านขวา ตัวเลขกลุ่มแรกคือ eastings
และตัวเลขที่สองคือ northings
ตัวเลขเหล่านี้กำหนดพิกัด ภายใน ตาราง 100 กม.
อีกวิธีหนึ่งคือการละเว้นตัวอักษรตารางและระบุเพียงทิศ easting
และ northing
คั่นด้วยเครื่องหมายจุลภาค ในกรณีนี้ พิกัดเหล่านี้เป็นพิกัดที่สัมพันธ์กับ ต้นกำเนิด ของตารางโดยรวม กล่าวคือ สัมพันธ์กับมุมตะวันตกเฉียงใต้ของตาราง
การสำรวจอาวุธยุทโธปกรณ์ได้สร้างคู่มือที่เป็นมิตรพร้อมรายละเอียดทั้งหมด
ไลบรารีนี้สามารถแยกวิเคราะห์และแสดงการเป็นตัวแทนได้ทั้งสองประเภท
มันเป็นเรื่องยาก ยากมาก ยากมาก หน้าของสิ่งประเภทนี้:
(ข้อความที่ตัดตอนมาจากหน้า 50 ของคู่มืออ้างอิงของการสำรวจสรรพาวุธ)
โชคดีที่ Chris Veness ได้ทำงานหนักในการปรับใช้สิ่งนี้ในไลบรารี Javascript ของเขา (ซึ่งทำมากกว่าการแปลงการอ้างอิงกริดเป็นและจาก lat/lon) แพ็คเกจนี้เป็นการแปลเชิงกลไกของ Javascript เป็น Golang โดยไม่เข้าใจวิธีการทำงาน
ฉันยินดีที่จะบอกว่าฉันไม่เข้าใจคณิตศาสตร์ที่อยู่เบื้องหลังสิ่งเหล่านี้
นี่เป็นการจงใจเพื่อให้ง่ายต่อการตรวจสอบการใช้งานนี้กับการใช้งาน Javascript ดั้งเดิม หากเป็นไปได้ แต่ละบรรทัดของโค้ดอัปสตรีมควรตรงกับบรรทัดที่เทียบเท่าในโค้ด Golang