home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2008 February / PCWFEB08.iso / Software / Resources / Developers / XAMPP 1.5.4 / Windows installer / xampp-win32-1.5.4-installer.exe / xampp / php / pear / Image / GIS.php < prev    next >
Encoding:
PHP Script  |  2005-07-07  |  5.6 KB  |  216 lines

  1. <?php
  2. //
  3. // +------------------------------------------------------------------------+
  4. // | PEAR :: Image :: GIS                                                   |
  5. // +------------------------------------------------------------------------+
  6. // | Copyright (c) 2002-2004 Jan Kneschke <jan@kneschke.de> and             |
  7. // |                         Sebastian Bergmann <sb@sebastian-bergmann.de>. |
  8. // +------------------------------------------------------------------------+
  9. // | This source file is subject to version 3.00 of the PHP License,        |
  10. // | that is available at http://www.php.net/license/3_0.txt.               |
  11. // | If you did not receive a copy of the PHP license and are unable to     |
  12. // | obtain it through the world-wide-web, please send a note to            |
  13. // | license@php.net so we can mail you a copy immediately.                 |
  14. // +------------------------------------------------------------------------+
  15. //
  16. // $Id: GIS.php,v 1.18 2004/04/17 10:21:24 sebastian Exp $
  17. //
  18.  
  19. require_once 'Image/Color.php';
  20. require_once 'Image/GIS/Parser.php';
  21. require_once 'Image/GIS/Renderer.php';
  22.  
  23. /**
  24.  * The following example draws the region around the
  25.  * German city of Kiel which is Jan's home town:
  26.  *
  27.  * <code>
  28.  * <?php
  29.  * require_once 'Image/GIS.php';
  30.  *
  31.  * // Create new map.
  32.  * $map = new Image_GIS(
  33.  *   array(
  34.  *     'width'  =>  960,
  35.  *     'height' => 1280,
  36.  *     'range'  => array(
  37.  *       'x1' => 9.7,
  38.  *       'x2' => 10.5,
  39.  *       'y1' => 54.2,
  40.  *       'y2' => 54.7
  41.  *     )
  42.  *   )
  43.  * );
  44.  *
  45.  * // Political
  46.  * $map->addDataFile('germany_ponet.e00',  'black');
  47.  *
  48.  * // Roads
  49.  * $map->addDataFile('germany_rdline.e00', 'gray');
  50.  *
  51.  * // Populated Places
  52.  * $map->addDataFile('germany_pppoly.e00', 'green');
  53.  *
  54.  * // Drainage
  55.  * $map->addDataFile('germany_dnnet.e00',  'blue');
  56.  *
  57.  * $map->saveImage('kiel.png');
  58.  * ?>
  59.  * </code>
  60.  *
  61.  * @author      Sebastian Bergmann <sb@sebastian-bergmann.de>
  62.  * @copyright   Copyright © 2002-2004 Jan Kneschke <jan@kneschke.de> and Sebastian Bergmann <sb@sebastian-bergmann.de>
  63.  * @license     http://www.php.net/license/3_0.txt The PHP License, Version 3.0
  64.  * @category    Image
  65.  * @package     Image_GIS
  66.  */
  67. class Image_GIS {
  68.     /**
  69.     * Set to TRUE to enable debugging.
  70.     *
  71.     * @var boolean $debug
  72.     */
  73.     var $debug;
  74.  
  75.     /**
  76.     * Image_GIS_Parser sub-class object.
  77.     *
  78.     * @var Image_GIS_Parser $parser
  79.     */
  80.     var $parser;
  81.  
  82.     /**
  83.     * Image_GIS_Renderer sub-class object.
  84.     *
  85.     * @var Image_GIS_Renderer $renderer
  86.     */
  87.     var $renderer;
  88.  
  89.     /**
  90.     * Constructor.
  91.     *
  92.     * @param  array   $parameters
  93.     * @access public
  94.     */
  95.     function Image_GIS($parameters = array()) {
  96.         $this->debug = isset($parameters['debug']) ? $parameters['debug'] : false;
  97.  
  98.         $this->setParser(
  99.           isset($parameters['parser'])   ? $parameters['parser']   : 'E00',
  100.           isset($parameters['cache'])    ? $parameters['cache']    : false,
  101.           isset($parameters['cacheDir']) ? $parameters['cacheDir'] : '/tmp'
  102.         );
  103.  
  104.         $this->setRenderer(
  105.           isset($parameters['renderer']) ? $parameters['renderer'] : 'GD',
  106.           isset($parameters['width'])    ? $parameters['width']    : 640,
  107.           isset($parameters['height'])   ? $parameters['height']   : 480
  108.         );
  109.  
  110.         if (isset($parameters['range']['x1']) &&
  111.             isset($parameters['range']['x2']) &&
  112.             isset($parameters['range']['y1']) &&
  113.             isset($parameters['range']['y2'])) {
  114.             $this->setRange(
  115.               $parameters['range']['x1'],
  116.               $parameters['range']['x2'],
  117.               $parameters['range']['y1'],
  118.               $parameters['range']['y2']
  119.             );
  120.         }
  121.     }
  122.  
  123.     /**
  124.     * Adds a datafile to the map.
  125.     *
  126.     * @param  string  $dataFile
  127.     * @param  mixed   $color
  128.     * @return boolean
  129.     * @access public
  130.     */
  131.     function addDataFile($dataFile, $color) {
  132.         return $this->parser->addDataFile($dataFile, $color);
  133.     }
  134.  
  135.     /**
  136.     * Returns the range of the data to be rendered.
  137.     *
  138.     * @return array
  139.     * @access public
  140.     * @since  Image_GIS 1.0.1
  141.     */
  142.     function getRange() {
  143.         return $this->renderer->getRange();
  144.     }
  145.  
  146.     /**
  147.     * Renders the image.
  148.     *
  149.     * @access public
  150.     */
  151.     function render() {
  152.         $this->renderer->render($this->parser->parse());
  153.     }
  154.  
  155.     /**
  156.     * Saves the rendered image to a given file.
  157.     *
  158.     * @param  string  $filename
  159.     * @return boolean
  160.     * @access public
  161.     */
  162.     function saveImage($filename) {
  163.         $this->render();
  164.  
  165.         return $this->renderer->saveImage($filename);
  166.     }
  167.  
  168.     /**
  169.     * Sets the Image_GIS_Parser sub-class to be used
  170.     * to parse a data file.
  171.     *
  172.     * @param  string  $parser
  173.     * @param  boolean $cache
  174.     * @access public
  175.     */
  176.     function setParser($parser, $cache) {
  177.         $this->parser = &Image_GIS_Parser::factory($parser, $cache, $this->debug);
  178.     }
  179.  
  180.     /**
  181.     * Sets the range of the data to be rendered.
  182.     *
  183.     * @param  float $x1
  184.     * @param  float $x2
  185.     * @param  float $y1
  186.     * @param  float $y2
  187.     * @access public
  188.     */
  189.     function setRange($x1, $x2, $y1, $y2) {
  190.         $this->renderer->setRange($x1, $x2, $y1, $y2);
  191.     }
  192.  
  193.     /**
  194.     * Sets the Image_GIS_Renderer sub-class to be used
  195.     * to render an image.
  196.     *
  197.     * @param  string  $renderer
  198.     * @access public
  199.     */
  200.     function setRenderer($renderer, $width, $height) {
  201.         $this->renderer = &Image_GIS_Renderer::factory($renderer, $width, $height, $this->debug);
  202.     }
  203.  
  204.     /**
  205.     * Shows the rendered image.
  206.     *
  207.     * @access public
  208.     */
  209.     function showImage() {
  210.         $this->render();
  211.  
  212.         $this->renderer->showImage();
  213.     }
  214. }
  215. ?>
  216.