Ordnance Survey National Grid to WGS84 co-ordinate converter
If you're not using Bundler, run this in a terminal:
$ gem install osgb_wgs84
If you are using Bundler, just add this line to your project's Gemfile:
# Example WGS84 lat/lon to convert lon = -0.10322 lat = 51.52237 # Set height to 0 if you don't have one height = 0 osgb36point = OSGB_WGS84::WGS84_to_OSGB36(lat,lon, height) oslat = osgb36point oslon = osgb36point osh = osgb36point osUKgridPoint = OSGB_WGS84::OSGB36_to_OSNG(oslat,oslon) easting = osUKgridPoint.round northing = osUKgridPoint.round gridrefLetters = OSGB_WGS84::OSNG_numbers_to_letters(easting,northing, 8) puts "WGS84 lat:" + lat.to_s + ", WGS84 lon:" + lon.to_s puts "http://www.openstreetmap.org/?mlat=" + lat.to_s + "&mlon=" + lon.to_s + "&zoom=16" puts "\nConverts to:"; puts "OSGB36 lat:" + oslat.to_s + ", OSGB36 lon:" + oslon.to_s puts "\nConverts to:"; puts "OS Easting:" + easting.to_s + ", OS Northing:" + northing.to_s + " OS grid ref:" + gridrefLetters puts "http://streetmap.co.uk/grid/" + easting.to_s + "_" + northing.to_s + "_106"
Output from the above example:
WGS84 lat:51.52237, WGS84 lon:-0.10322 http://www.openstreetmap.org/?mlat=51.52237&mlon=-0.10322&zoom=16 Converts to: OSGB36 lat:51.5218609279112, OSGB36 lon:-0.101610123646581 Converts to: OS Easting:531691, OS Northing:182090 OS grid ref:TQ31698209 http://streetmap.co.uk/grid/531691_182090_106
The code was originally written in JavaScrpt by Chris Veness:
And was originally realeased on the above site under LGPL license:
(c) Chris Veness 2005-2010
But is now released on the above site under CC-BY
(c) Chris Veness 2005-2012
Here the code has been ported to ruby by Harry Wood. Harry waives all intelectual property rights which may apply to the porting process, meaning the code is (c) Chris Veness as above.
Bundled into a RubyGem by Aaron B. Russell, who also waives any copyright claims to this code. Thanks to Chris and Harry for saving me from having to try and implement this from scratch! :)
WGS84 lat/lons -> OSGB64 lat/lons-> OS Eastings & Northings