I've already written about
conversion of postal addresses to latitude and longitude using Google's interface - but what is I want to convert the Ordinance Survey's grid references into latitude and longitude? Google's interface doesn't support the OS units - and in any case it's "just" a a calculation. I have put quotes around the word "just" because it's actually a
complex calculation that I had no desire to re-code from learned papers.
Of course ... it's been done already. Perl's Geography::NationalGrid module which you can download from the CPAN. Now I wanted to use that in a PHP page to demonstrate to you, so I've written a quick Perl command line program that my PHP calls up when it needs to and .... bob's your uncle.
Try it out here (examples ST906637 is in Melksham ... SJ347904 is in Liverpool) :
The source code is also available for you:
The Perl command line program
The PHP which calls up that Perl
External links -
Descritpion of coordinate system and conversion algorithms (.pdf)
Perl Cpan module
Update = August 2008 I've also added code for the OPPOSITE mapping - Latitude and Longitude to OS Grid reference.
• Demonstration -
here
• Source code of PHP page -
here
• Source code of Perl program -
here (written 2007-10-14 07:39:28)
Associated topics are indexed under
H115 - Designing PHP-Based Solutions: Best Practice [2430] Not just a PHP program - a good web application - (2009-09-29)
[2221] Adding a newsfeed for your users to a multipage PHP application - (2009-06-06)
[2199] Improving the structure of your early PHP programs - (2009-05-25)
[1794] Refactoring - a PHP demo becomes a production page - (2008-09-12)
[1694] Defensive coding techniques in PHP? - (2008-07-02)
[1623] PHP Techniques - a workshop - (2008-04-26)
[1533] Short and sweet and sticky - PHP form input - (2008-02-06)
[1490] Software to record day to day events and keep an action list - (2007-12-31)
[1487] Efficient PHP applications - framework and example - (2007-12-28)
[1482] A story about benchmarking PHP - (2007-12-23)
[1390] Converting from postal address to latitude / longitude - (2007-10-13)
[1389] Controlling and labelling Google maps via PHP - (2007-10-13)
[1381] Using a MySQL database to control mod_rewrite via PHP - (2007-10-06)
[1323] Easy handling of errors in PHP - (2007-08-27)
[1321] Resetting session based tests in PHP - (2007-08-26)
[1194] Drawing hands on a clock face - PHP - (2007-05-19)
[1182] Painting a masterpiece in PHP - (2007-05-10)
[1181] Good Programming practise - where to initialise variables - (2007-05-09)
[1166] Back button - ensuring order are not submitted twice (PHP) - (2007-04-28)
[1052] Learning to write secure, maintainable PHP - (2007-01-25)
[1047] Maintainable code - some positive advice - (2007-01-21)
[945] Code quality counts - (2006-11-26)
[936] Global, Superglobal, Session variables - scope and persistance in PHP - (2006-11-21)
[896] PHP - good coding practise and sticky radio buttons - (2006-10-17)
[839] Reporting on the 10 largest files or 10 top scores - (2006-08-20)
[572] Giving the researcher power over database analysis - (2006-01-22)
[563] Merging pictures using PHP and GD - (2006-01-13)
[426] Robust checking of data entered by users - (2005-08-27)
[394] A year on - should we offer certified PHP courses - (2005-07-28)
[340] Code and code maintainance efficiency - (2005-06-08)
[261] Putting a form online - (2005-03-29)
[237] Crossfertilisation, PHP to Python - (2005-03-06)
[123] Short underground journeys and a PHP book - (2004-11-19)
H309 - PHP - Maps, Graphics and Geographics [2583] Reducing image size on digital photos - PHP - (2010-01-17)
[2390] Dynamic / changing images on your web page - (2009-09-01)
[2361] Geocoding - converting address to latitude / Longitude with PHP via Google - (2009-08-14)
[2343] World Flags in your PHP pages - (2009-08-10)
[1956] Images for Christmas - (2008-12-21)
[1923] Making it all worthwhile - (2008-12-04)
[1756] Ever had One of THOSE mornings? - (2008-08-16)
[1752] Dynamic maps / geographics in PHP - (2008-08-13)
[1734] All around the world? - (2008-08-03)
[1724] addslashes v mysql_real_escape_string in PHP - (2008-07-27)
[1628] Gant charts - drawing them with a PHP script - (2008-05-03)
[1104] Drawing dynamic graphs in PHP - (2007-03-09)
[937] Display an image from a MySQL database in a web page via PHP - (2006-11-22)
[665] PHP Image viewing application - (2006-04-01)
[320] Ordnance Survey - using a 'Get a map' - (2005-05-22)
H999 - Additional PHP Material [2215] If nothing, make it nothing. - (2009-06-02)
[2073] Extra PHP Examples - (2009-03-09)
[1519] Flipping images on your web page - (2008-01-26)
[1505] Script to present commonly used images - PHP - (2008-01-13)
[1485] Copyright and theft of images, bandwidth and members. - (2007-12-26)
[1451] More PHP sample and demonstration programs - (2007-12-01)
[1270] PHP Standalone - keyboard to screen - (2007-07-18)
[1053] Sorting people by name in PHP - (2007-01-26)
[1020] Parallel processing in PHP - (2007-01-03)
[1010] Dates, times, clickable diarys in PHP - (2006-12-28)
[917] Syntax checking in PHP - (2006-11-07)
[822] PHP - a team member leaves - (2006-08-04)
[806] Check your user is human. Have him retype a word in a graphic - (2006-07-17)
[789] Hot answers in PHP - (2006-07-02)
[687] Presentation, Business and Persistence layers in Perl and PHP - (2006-04-17)
[603] PHP - setting sort order with an associative array - (2006-02-13)
[493] Running a Perl script within a PHP page - (2005-11-12)
[483] Double Dollars in PHP - (2005-11-02)
[468] Stand alone PHP programs - (2005-10-18)
[372] Time calculation in PHP - (2005-07-08)
[337] the array returned by preg_match_all - (2005-06-06)
[322] More maps - (2005-05-23)
[239] What and why for the epoch - (2005-03-08)
[54] PHP and natural sorting - (2004-09-19)
P219 - Perl - Libraries and Resources [2427] Operator overloading - redefining addition and other Perl tricks - (2009-09-27)
[2234] Loading external code into Perl from a nonstandard directory - (2009-06-12)
[2229] Do not re-invent the wheel - use a Perl module - (2009-06-11)
[1865] Debugging and Data::Dumper in Perl - (2008-11-02)
[1863] About dieing and exiting in Perl - (2008-11-01)
[1444] Using English can slow you right down! - (2007-11-25)
[1235] Outputting numbers as words - MySQL with Perl or PHP - (2007-06-17)
[1219] Judging the quality of contributed Perl code - (2007-06-06)
[760] Self help in Perl - (2006-06-14)
[737] Coloured text in a terminal from Perl - (2006-05-29)
[712] Why reinvent the wheel - (2006-05-06)
[358] Use standard Perl modules - (2005-06-25)
[357] Where do Perl modules load from - (2005-06-24)
[112] Avoid the wheel being re-invented by using Perl modules - (2004-11-08)
[86] Talk review - Idiomatic Perl, David Cross - (2004-10-12)
Q110 - Object Orientation and General technical topics - Programming Algorithms [2617] Comparing floating point numbers - a word of caution and a solution - (2010-02-01)
[2586] And and Or illustrated by locks - (2010-01-17)
[2509] A life lesson from the accuracy of numbers in Excel and Lua - (2009-11-21)
[2259] Grouping rows for a summary report - MySQL and PHP - (2009-06-27)
[2189] Matching disparate referencing systems (MediaWiki, PHP, also Tcl) - (2009-05-19)
[1949] Nuclear Physics comes to our web site - (2008-12-17)
[1840] Validating Credit Card Numbers - (2008-10-14)
[1187] Updating a page strictly every minute (PHP, Perl) - (2007-05-14)
[1157] Speed Networking - a great evening and how we arranged it - (2007-04-21)
[642] How similar are two words - (2006-03-11)
[227] Bellringing and Programming and Objects and Perl - (2005-02-25)
[202] Searching for numbers - (2005-02-04)
Some other Articles
Dont just convert to Perl - re-engineer!Business to Business Networking - North and West Wilts / MelkshamFirst Alternative / what has happened there?Autumnal lighting on a London tripOrdnance Survey Grid Reference to Latitude / LongitudeWell House Manor - a year onError logging to file not browser in PHPNew software product for warmblooded programmers