PHP Classes
Icontem

File: gPointDemo.php


  Search   All class groups All class groups   Latest entries Latest entries   Top 10 charts Top 10 charts   Newsletter Newsletter   Blog Blog   Forums Forums   Help FAQ Help FAQ  
  Login   Register  
Recommend this page to a friend! ReTweet ReTweet Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Brenor Brophy  >  gPoint  >  gPointDemo.php  
File: gPointDemo.php
Role: Example script
Content type: text/plain
Description: Example Code
Class: gPoint
Convert geographic coordinates between projections
 

Contents

Class file image Download
<?php
/*------------------------------------------------------------------------------
** File:        gPointDemo.php
** Description:    Simple demo & documentation of gPoint class capabilities
** Version:        1.1
** Author:        Brenor Brophy
** Email:        brenor dot brophy at gmail dot com
** Homepage:    www.brenorbrophy.com 
**------------------------------------------------------------------------------
** COPYRIGHT (c) 2005, 2006 BRENOR BROPHY
**
** The source code included in this package is free software; you can
** redistribute it and/or modify it under the terms of the GNU General Public
** License as published by the Free Software Foundation. This license can be
** read at:
**
** http://www.opensource.org/licenses/gpl-license.php
**
** This program is distributed in the hope that it will be useful, but WITHOUT 
** ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
** FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 
**------------------------------------------------------------------------------
**
** A gPoint object is a point on the Earth's surface. Its location is defined
** by a Longitude and a Latitude coordinate. These coordinates define a point
** on the surface of a sphere. However, computer screens like paper are flat
** surfaces and so we face a problem if we wish to represent data whose location
** is defined by Lat/Longs onto a such a surface. For example, you have an
** array of Lat/Long points that you want to plot on an image of a map. So how
** do you calculate the X/Y pixel on the image to plot your point? What you
** need is a transformation from a Lat/Long coordinate to an X/Y coordinate.
** This is called a map projection. There are many different types of projection.
** This class provides functions for working with two of the most useful; 
** Universal Transverse Mercator (UTM) and Lambert Conformal Conic. The class
** also supports a varient of UTM, that I call Local Transverse Mercator. It
** is very useful when you just need to plot a few points on an arbitary image
** that covers a modest amount of the Earth (10x10 degrees) and you don't have
** to deal with UTM zones.
**
** At a high level converting a Long/Lat coordinate in degrees thru a
** projection will return an Easting/Northing coordinate in meters. That is
** meters measured on the 'flat' ground that you can convert to pixels and
** plot on an image. Broadly speaking Transverse Mercator (and UTM) is useful
** for modest sized areas of about 10x10degrees or less. Lambert is useful for
** large areas in the mid latitudes (Like the whole USA or Europe for example).
** Neither projection works well for areas near the poles.
**
** The key methods provided by the class are:
**
** setLongLat                    Set the Long/Lat of the point
** Long, Lat                    Get the Long/Lat of the point
** setUTM                        Set UTM coordinates of the point
** E,N,Z                        Get UTM coordinates
** configLambertProjection        Sets up a bunch of required parameters
** setLambert                    Set Lambert coordinates
** lccE, lccN                    Get Lambert coordinates
** setXY                        Set X/Y - can be used for pixel coordinates
** Xp, Yp                        Gets the X/Y coordinates
**
** convertLLtoTM        Convert Long/Lat to Universal/Local Transverse Mercator
** convertTMtoLL        Convert Universal/Local Transverse Mercator to Long/Lat
** convertLLtoLCC        Convert Long/Lat to Lambert Conformal Conic
** convertLCCtoLL        Convert Lambert Conformal Conic to Long/Lat
**
** distanceFrom            Calculates Great Circle distance from gPoint to a Lat/Long
** distanceFromTM        Same function using Pythagoras's theorm and TM coordinates
** gRef                    Geo-Reference converts TM coordinates to a pixel X/Y given
**                        The Lat/Long of the center pixel and the scale (meters/pixel)
**                        of the image.
**
** printLatLong
** printUTM
** printLambert
*/
//error_reporting ( E_ALL ); // For debug

require ('gPoint.php');

//
// The example shows how a single point on the earth can be converted between
// Latitude/Longitude coordinates and the three map projections supported by
// the gPoint class.
//
    
$myHome =& new gPoint();    // Create an empty point
//
//  We start by setting the points Longitude & Latitude. 
//
    
$myHome->setLongLat(-121.8583137.42104);    // I live in sunny California :-)
    
echo "I live at: "$myHome->printLatLong(); echo "<br>";
//
// Calculate the coordinates of the point in a UTM projection 
//
    
$myHome->convertLLtoTM();
    echo 
"Which in a UTM projection is: "$myHome->printUTM(); echo "<br>";
//
// Set the UTM coordinates of the point to check the reverse conversion
//
    
$myHome->setUTM6010344142188"10S");    // Easting/Northing from a GPS
    
echo "My GPS says it is this: "$myHome->printUTM(); echo "<br>";
//
// Calculate the Longitude Latitude of the point
//
    
$myHome->convertTMtoLL();
    echo 
"Which converts back to: "$myHome->printLatLong(); echo "<br>";
//
// Now lets try the same conversion, only this time we will user a "Local"
// Transverse Mercator projection. -122 degrees longitude is close to the
// area of interest so lets use that as our Longitude of Origin
//
    
$longOrigin = -122;
    
$myHome->convertLLtoTM($longOrigin);
    echo 
"In a Local TM projection centered at longitude $longOrigin it is: "$myHome->printUTM(); echo "<br>";
//
// Now check the reverse conversion
//
    
$myHome->convertTMtoLL($longOrigin);
    echo 
"Converting back gives us: "$myHome->printLatLong(); echo "<br>";
//
// Lets setup a Lambert Conformal Conic projection for Northern California
//
// falseEasting = 20000000
// falseNorthing = 0
// Longitude of origin = -122
// First Standard Parallel = 33 20'
// Second Standard Parallel = 38 40'
//
    
$myHome->configLambertProjection(20000000, -12235.533.3333338.6666);
    
$myHome->convertLLtoLCC();
    echo 
"In a Lambert Projection: "$myHome->printLambert(); echo "<br>";
//
// And convert back to Longitude / Latitude
//
    
$myHome->convertLCCtoLL();
    echo 
"And is still: "$myHome->printLatLong(); echo "<br>";
?>

 
  Advertise on this site Advertise on this site   Site map Site map   Statistics Statistics   Site tips Site tips   Privacy policy Privacy policy   Contact Contact  

For more information send a message to :
info at phpclasses dot org.
Copyright (c) Icontem 1999-2009 PHP Classes - PHP Class Scripts
  PHP Book Reviews - Reviews of books and other products