Image_GIS
[ class tree: Image_GIS ] [ index: Image_GIS ] [ all elements ]

Source for file GIS.php

Documentation is available at GIS.php

  1. <?php
  2. //
  3. // +------------------------------------------------------------------------+
  4. // | PEAR :: Image :: GIS                                                   |
  5. // +------------------------------------------------------------------------+
  6. // | Copyright (c) 2002-2005 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 299207 2010-05-10 10:21:58Z clockwerx $
  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 &copy; 2002-2005 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.  
  133.         if (file_exists($dataFile)) {
  134.             return $this->parser->addDataFile($dataFile$color);
  135.         else {
  136.             printf ("Data file '%s' does not exist.\n"$dataFile);
  137.             return false;
  138.         }
  139.     }
  140.  
  141.     /**
  142.     * Returns the range of the data to be rendered.
  143.     *
  144.     * @return array 
  145.     * @access public
  146.     * @since  Image_GIS 1.0.1
  147.     */
  148.     function getRange({
  149.         return $this->renderer->getRange();
  150.     }
  151.  
  152.     /**
  153.     * Renders the image.
  154.     *
  155.     * @access public
  156.     */
  157.     function render({
  158.         $this->renderer->render($this->parser->parse());
  159.     }
  160.  
  161.     /**
  162.     * Saves the rendered image to a given file.
  163.     *
  164.     * @param  string  $filename 
  165.     * @return boolean 
  166.     * @access public
  167.     */
  168.     function saveImage($filename{
  169.         $this->render();
  170.  
  171.         return $this->renderer->saveImage($filename);
  172.     }
  173.  
  174.     /**
  175.     * Sets the Image_GIS_Parser sub-class to be used
  176.     * to parse a data file.
  177.     *
  178.     * @param  string  $parser 
  179.     * @param  boolean $cache 
  180.     * @access public
  181.     */
  182.     function setParser($parser$cache{
  183.         $this->parser = &Image_GIS_Parser::factory($parser$cache$this->debug);
  184.     }
  185.  
  186.     /**
  187.     * Sets the range of the data to be rendered.
  188.     *
  189.     * @param  float $x1 
  190.     * @param  float $x2 
  191.     * @param  float $y1 
  192.     * @param  float $y2 
  193.     * @access public
  194.     */
  195.     function setRange($x1$x2$y1$y2{
  196.         $this->renderer->setRange($x1$x2$y1$y2);
  197.     }
  198.  
  199.     /**
  200.     * Sets the Image_GIS_Renderer sub-class to be used
  201.     * to render an image.
  202.     *
  203.     * @param  string  $renderer 
  204.     * @access public
  205.     */
  206.     function setRenderer($renderer$width$height{
  207.         $this->renderer = &Image_GIS_Renderer::factory($renderer$width$height$this->debug);
  208.     }
  209.  
  210.     /**
  211.     * Shows the rendered image.
  212.     *
  213.     * @access public
  214.     */
  215.     function showImage({
  216.         $this->render();
  217.  
  218.         $this->renderer->showImage();
  219.     }
  220. }
  221. ?>

Documentation generated on Mon, 11 Mar 2019 15:39:26 -0400 by phpDocumentor 1.4.4. PEAR Logo Copyright © PHP Group 2004.