Easily convert between latitude/longitude, Universal Transverse Mercator (UTM) and Ordnance Survey
(OSGB) references with PHP using the PHPcoord package.
Latest version: 2.3 (24th August 2006)
Features | Requirements | Download | Examples | Version History | Licensing
Conversion between latitude/longitude and grid references is not as simple as one would expect. Indeed, the maths involved is rather complex and not really for the faint-hearted! I have created a PHP script which provides a simple API to allow conversion between OSGB (Ordnance Survey of Great Britain) grid references, UTM (Universal Transverse Mercator) references and latitude/longitude. OSGB Grid references can be returned as a standard six-figure grid reference using the 100km grid square letters (e.g. SK619847).
The PHPcoord script also contains a function to allow the calculation of the surface distance between two points of latitude/longitude.
Looking for the same thing but with JavaScript or Java? Translations of this package with the same functionality are available for JavaScript (see JScoord) and Java (see Jcoord).
Information on converting between UTM and latitude/longitude is available at www.posc.org.
The Ordnance Survey have published a concise guide on converting between OSGB and latitude/longitude which is available at www.gps.gov.uk.
Bear in mind that PHPcoord is still in development, so check back often for updates. To contact me about PHPcoord, send an e-mail to phpcoord@jstott.me.uk.
Features
PHPcoord contains the following features:
- Calculate distance between a pair of latitudes and longitudes
- Convert between an OSGB grid reference and latitude and longitude using either the OSGB36 or WGS84 data
- Create objects representing OSGB grid references from a six-figure reference string (e.g. "TG514131")
- Convert between UTM reference and latitude and longitude
Requirements
You just need an installation of PHP 4 or 5 for PHPcoord to work.
Download
Current Version
- v2.3 - 24th August 2006
- phpcoord-2.3.zip (8kB)
- phpcoord-2.3.tar.gz (7kB)
Previous Versions
- v2.2 - 11th February 2006
- phpcoord-2.2.zip (8kB)
- phpcoord-2.2.tar.gz (7kB)
- v2.1 - 22nd December 2005
- phpcoord-2.1.zip (8kB)
- phpcoord-2.1.tar.gz (7kB)
- v2.0 - 21st December 2005
- phpcoord-2.0.zip (8kB)
- phpcoord-2.0.tar.gz (7kB)
- v1.1 - 11th September 2005
- phpcoord-1.1.zip (6kB)
- phpcoord-1.1.tar.gz (6kB)
- v1.0 - 11th August 2005
- phpcoord-1.0.zip (5kB)
- phpcoord-1.0.tar.gz (5kB)
Examples
Converting co-ordinates is painless using PHPcoord. Here's an example of converting an Ordnance Survey grid reference into a latitude and longitude and displaying the result:
$os1 = new OSRef(651409.903, 313177.270); echo "OS Grid Reference: " . $os1->toString() . " - " . $os1->toSixFigureString() . "<br />"; $ll1 = $os1->toLatLng(); echo "Converted to Lat/Long: " . $ll1->toString();OS Grid Reference: (651409.903, 313177.27) - TG514132
Converted to Lat/Long: (52.657570301933, 1.7179215806451)
The PHPcoord downloads contain a test.php file which shows how to use the phpcoord.php script. You can also view the output of the test.php script which includes the above example and many more here.
Version History
- 2.3 - 24th August 2006
- Changed OSRef->toSixFigureString() so that the eastings and northings are rounded rather than floored.
- 2.2 - 11th February 2006
- Used different algorithm for calculating distance between latitudes and longitudes - fixes a number of problems with distance calculations.
- 2.1 - 22nd December 2005
- Added getOSRefFromSixFigureReference to convert a string representing a six-figure OS grid reference to an OSRef object.
- 2.0 - 21st December 2005
- Completely different object design - conversion functions now through objects rather than static functions.
- Updated comments and documentation
- 1.1 - 11th September 2005
- Added WGS84/OSGB36 conversions.
- 1.0 - 11th August 2005
- Initial Version.
Licensing
This software product is available under the GNU General Public License (GPL) which permits the use of this product subject to a number of conditions as described in the license. A commercial license is also available for this product which provides the added benefits of royalty-free use and distribution in proprietary applications as well as prioritised technical support by e-mail. Contact me for more information about commercial licenses for this product.
![]() |
If you do not require a commercial license but still want to contribute, perhaps you would like to consider making a donation:
-
Donation - any amount
Commercial licenses for this product are available at the following prices:
-
Single user - £15 (approximately $30)
-
2-10 users - £40 (approximately $80)
-
11-100 users - £150 (approximately $300)
-
Unlimited users - £600 (approximately $1200)
Note that you will be billed in Pounds Sterling, so the relevant exchange rate from your currency will apply at the time of purchase. A copy of the license will be forwarded to the address provided at the time of purchase.
© 2000-11, Jonathan Stott.
23 May 2013 10:23:07 GMT

