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

Source for file GIS2.php

Documentation is available at GIS2.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$
  17. //
  18.  
  19. require_once 'Image/Color.php';
  20. require_once 'Image/GIS2/Parser.php';
  21. require_once 'Image/GIS2/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/GIS2.php';
  30.  *
  31.  * // Create new map.
  32.  * $map = new Image_GIS2(
  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_GIS2
  66.  */
  67. class Image_GIS2 {
  68.     /**
  69.     * Set to TRUE to enable debugging.
  70.     *
  71.     * @var boolean $debug 
  72.     */
  73.     private $debug;
  74.  
  75.     /**
  76.     * Image_GIS2_Parser sub-class object.
  77.     *
  78.     * @var Image_GIS2_Parser $parser 
  79.     */
  80.     private $parser;
  81.  
  82.     /**
  83.     * Image_GIS2_Renderer sub-class object.
  84.     *
  85.     * @var Image_GIS2_Renderer $renderer 
  86.     */
  87.     private $renderer;
  88.  
  89.     /**
  90.     * Constructor.
  91.     *
  92.     * @param  array   $parameters 
  93.     * @access public
  94.     */
  95.     public 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.     public function addDataFile($dataFile$color{
  132.         if (!file_exists($dataFile)) {
  133.             throw new InvalidArgumentException(
  134.                 "Data file '%s' does not exist."$dataFile
  135.             );
  136.         }
  137.         return $this->parser->addDataFile($dataFile$color);
  138.     }
  139.  
  140.     /**
  141.     * Returns the range of the data to be rendered.
  142.     *
  143.     * @return array 
  144.     * @access public
  145.     */
  146.     public function getRange({
  147.         return $this->renderer->getRange();
  148.     }
  149.  
  150.     /**
  151.     * Renders the image.
  152.     *
  153.     * @access public
  154.     */
  155.     public function render({
  156.         $this->renderer->render($this->parser->parse());
  157.     }
  158.  
  159.     /**
  160.     * Saves the rendered image to a given file.
  161.     *
  162.     * @param  string  $filename 
  163.     * @return boolean 
  164.     * @access public
  165.     */
  166.     public function saveImage($filename{
  167.         $this->render();
  168.  
  169.         return $this->renderer->saveImage($filename);
  170.     }
  171.  
  172.     /**
  173.     * Sets the Image_GIS2_Parser sub-class to be used
  174.     * to parse a data file.
  175.     *
  176.     * @param  string  $parser 
  177.     * @param  boolean $cache 
  178.     * @access public
  179.     */
  180.     public function setParser($parser$cache{
  181.         $this->parser Image_GIS2_Parser::factory($parser$cache$this->debug);
  182.     }
  183.  
  184.     /**
  185.     * Sets the range of the data to be rendered.
  186.     *
  187.     * @param  float $x1 
  188.     * @param  float $x2 
  189.     * @param  float $y1 
  190.     * @param  float $y2 
  191.     * @access public
  192.     */
  193.     public function setRange($x1$x2$y1$y2{
  194.         $this->renderer->setRange($x1$x2$y1$y2);
  195.     }
  196.  
  197.     /**
  198.     * Sets the Image_GIS2_Renderer sub-class to be used
  199.     * to render an image.
  200.     *
  201.     * @param  string  $renderer 
  202.     * @access public
  203.     */
  204.     public function setRenderer($renderer$width$height{
  205.         $this->renderer Image_GIS2_Renderer::factory($renderer$width$height$this->debug);
  206.     }
  207.  
  208.     /**
  209.     * Shows the rendered image.
  210.     *
  211.     * @access public
  212.     */
  213.     public function showImage({
  214.         $this->render();
  215.         $this->renderer->showImage();
  216.     }
  217. }
  218. ?>

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