207 lines
7.0 KiB
PHP
207 lines
7.0 KiB
PHP
<?php
|
|
|
|
//--------------------------------------------------------------------------
|
|
// PHPcoord
|
|
// text.php
|
|
//
|
|
// (c) 2005 Jonathan Stott
|
|
//
|
|
// Created on 11-Aug-2005
|
|
//
|
|
// 2.3 - 24 Aug 2006
|
|
// - Changed OSRef->toSixFigureString() so that the eastings and northings
|
|
// are rounded rather than floored.
|
|
// 2.2 - 11 Feb 2006
|
|
// - Used different algorithm for calculating distance between latitudes
|
|
// and longitudes - fixes a number of problems with distance calculations
|
|
// 2.1 - 22 Dec 2005
|
|
// - Added getOSRefFromSixFigureReference function
|
|
// 2.0 - 21 Dec 2005
|
|
// - Completely different object design - conversion functions now through
|
|
// objects rather than static functions
|
|
// - Updated comments and documentation
|
|
// 1.1 - 11 Sep 2005
|
|
// - Added OSGB36/WGS84 data conversions
|
|
// 1.0 - 11 Aug 2005
|
|
// - Initial version
|
|
//--------------------------------------------------------------------------
|
|
|
|
|
|
require_once("phpcoord-2.3.php");
|
|
?>
|
|
|
|
<html>
|
|
|
|
<head>
|
|
<title>phpcoord Test Script</title>
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<h1>phpcoord Test Script</h1>
|
|
|
|
<h2>Calculate Surface Distance between two Latitudes/Longitudes</h2>
|
|
|
|
<p>
|
|
The LatLngDistance function takes two latitudes/longitudes and calculates
|
|
the surface distance between the two in kilometres:
|
|
</p>
|
|
|
|
<p>
|
|
<pre>$lld1 = new LatLng(40.718119, -73.995667); // New York
|
|
echo "New York Lat/Long: " . $lld1->toString() . "<br />";
|
|
$lld2 = new LatLng(51.499981, -0.125313); // London
|
|
$d = $lld1->distance($lld2);
|
|
echo "Surface Distance between New York and London: " . $d . "km";</pre>
|
|
|
|
<?php
|
|
$lld1 = new LatLng(40.718119, -73.995667); // New York
|
|
echo "New York Lat/Long: " . $lld1->toString() . "<br />";
|
|
$lld2 = new LatLng(51.499981, -0.125313); // London
|
|
echo "London Lat/Long: " . $lld2->toString() . "<br />";
|
|
$d = $lld1->distance($lld2);
|
|
echo "Surface Distance between New York and London: " . $d . "km";
|
|
?>
|
|
</p>
|
|
|
|
<h2>Convert OS Grid Reference to Latitude/Longitude</h2>
|
|
|
|
<p>
|
|
Note that the OSGB-Latitude/Longitude conversions use the OSGB36 datum by default. The
|
|
majority of applications use the WGS84 datum, for which the appropriate conversions
|
|
need to be added. See the examples below to see the difference between the two data.
|
|
</p>
|
|
|
|
<p>
|
|
Using OSGB36 (convert an OSGB grid reference to a latitude and longitude using the OSGB36 datum):
|
|
|
|
<pre>$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();</pre>
|
|
|
|
<?php
|
|
$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();
|
|
?>
|
|
</p>
|
|
|
|
<p>
|
|
Using WGS84 (convert an OSGB grid reference to a latitude and longitude using the WGS84 datum):
|
|
|
|
<pre>$os1w = new OSRef(651409.903, 313177.270);
|
|
echo "OS Grid Reference: " . $os1w->toString() . " - " . $os1w->toSixFigureString() . "<br />";
|
|
$l1w = $os1w->toLatLng();
|
|
$l1w->OSGB36ToWGS84();
|
|
echo "Converted to Lat/Long: " . $ll1w->toString();</pre>
|
|
|
|
<?php
|
|
$os1w = new OSRef(651409.903, 313177.270);
|
|
echo "OS Grid Reference: " . $os1w->toString() . " - " . $os1w->toSixFigureString() . "<br />";
|
|
$ll1w = $os1w->toLatLng();
|
|
$ll1w->OSGB36ToWGS84();
|
|
echo "Converted to Lat/Long: " . $ll1w->toString();
|
|
?>
|
|
</p>
|
|
|
|
<h2>Convert Latitude/Longitude to OS Grid Reference</h2>
|
|
|
|
<p>
|
|
Note that the OSGB-Latitude/Longitude conversions use the OSGB36 datum by default. The
|
|
majority of applications use the WGS84 datum, for which the appropriate conversions
|
|
need to be added. See the examples below to see the difference between the two data.
|
|
</p>
|
|
|
|
<p>
|
|
Using OSGB36 (convert a latitude and longitude using the OSGB36 datum to an OSGB grid reference):
|
|
|
|
<pre>$ll2 = new LatLng(52.657570301933, 1.7179215806451);
|
|
echo "Latitude/Longitude: " . $ll2->toString() . "<br />";
|
|
$os2 = $ll2->toOSRef();
|
|
echo "Converted to OS Grid Ref: " . $os2->toString() . " - " . $os2->toSixFigureString();</pre>
|
|
|
|
<?php
|
|
$ll2 = new LatLng(52.657570301933, 1.7179215806451);
|
|
echo "Latitude/Longitude: " . $ll2->toString() . "<br />";
|
|
$os2 = $ll2->toOSRef();
|
|
echo "Converted to OS Grid Ref: " . $os2->toString() . " - " . $os2->toSixFigureString();
|
|
?>
|
|
</p>
|
|
|
|
<p>
|
|
Using WGS84 (convert a latitude and longitude using the WGS84 datum to an OSGB grid reference):
|
|
|
|
<pre>$ll2w = new LatLng(52.657570301933, 1.7179215806451);
|
|
echo "Latitude/Longitude: " . $ll2->toString() . "<br />";
|
|
$ll2w->WGS84ToOSGB36();
|
|
$os2w = $ll2w->toOSRef();
|
|
echo "Converted to OS Grid Ref: " . $os2w->toString() . " - " . $os2w->toSixFigureString();</pre>
|
|
|
|
<?php
|
|
$ll2w = new LatLng(52.657570301933, 1.7179215806451);
|
|
echo "Latitude/Longitude: " . $ll2->toString() . "<br />";
|
|
$ll2w->WGS84ToOSGB36();
|
|
$os2w = $ll2w->toOSRef();
|
|
echo "Converted to OS Grid Ref: " . $os2w->toString() . " - " . $os2w->toSixFigureString();
|
|
?>
|
|
</p>
|
|
|
|
<h2>Convert Six-Figure OS Grid Reference String to an OSRef Object</h2>
|
|
|
|
<p>
|
|
To convert a string representing a six-figure OSGB grid reference:
|
|
|
|
<pre>$os6 = "TG514131";
|
|
echo "Six figure string: " . $os6 . "<br />";
|
|
$os6x = getOSRefFromSixFigureReference($os6);
|
|
echo "Converted to OS Grid Ref: " . $os6x->toString() . " - " . $os6x->toSixFigureString();</pre>
|
|
|
|
<?php
|
|
$os6 = "TG514131";
|
|
echo "Six figure string: " . $os6 . "<br />";
|
|
$os6x = getOSRefFromSixFigureReference($os6);
|
|
echo "Converted to OS Grid Ref: " . $os6x->toString() . " - " . $os6x->toSixFigureString();
|
|
?>
|
|
</p>
|
|
|
|
<h2>Convert UTM Reference to Latitude/Longitude</h2>
|
|
|
|
<p>
|
|
<pre>$utm1 = new UTMRef(456463.99, 3335334.05, "E", 12);
|
|
echo "UTM Reference: " . $utm1->toString() . "<br />";
|
|
$ll3 = $utm1->toLatLng();
|
|
echo "Converted to Lat/Long: " . $ll3->toString();</pre>
|
|
|
|
<?php
|
|
$utm1 = new UTMRef(456463.99, 3335334.05, "E", 12);
|
|
echo "UTM Reference: " . $utm1->toString() . "<br />";
|
|
$ll3 = $utm1->toLatLng();
|
|
echo "Converted to Lat/Long: " . $ll3->toString();
|
|
?>
|
|
</p>
|
|
|
|
<h2>Convert Latitude/Longitude to UTM Reference</h2>
|
|
|
|
<p>
|
|
<pre>$ll4 = new LatLng(-60.1167, -111.7833);
|
|
echo "Latitude/Longitude: " . $ll4->toString() . "<br />";
|
|
$utm2 = $ll4->toUTMRef();
|
|
echo "Converted to UTM Ref: " . $utm2->toString() ;</pre>
|
|
|
|
<?php
|
|
$ll4 = new LatLng(-60.1167, -111.7833);
|
|
echo "Latitude/Longitude: " . $ll4->toString() . "<br />";
|
|
$utm2 = $ll4->toUTMRef();
|
|
echo "Converted to UTM Ref: " . $utm2->toString() ;
|
|
?>
|
|
</p>
|
|
|
|
<p>
|
|
(c) 2005, Jonathan Stott
|
|
</p>
|
|
|
|
</body>
|
|
</html>
|