source: pmb4.2/trunk/fuentes/pmb/classes/map/map_layer_model.class.php @ 815

Last change on this file since 815 was 815, checked in by jrpelegrina, 4 years ago

Initial release of pmb 4.2

  • Property svn:executable set to *
File size: 4.0 KB
RevLine 
[815]1<?php
2// +-------------------------------------------------+
3// © 2002-2010 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
4// +-------------------------------------------------+
5// $Id: map_layer_model.class.php,v 1.10 2015-04-03 11:16:24 jpermanne Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".class.php")) die("no access");
8require_once($class_path."/map/map_hold.class.php");
9require_once($class_path."/map/map_hold_polygon.class.php");
10require_once($class_path."/map/map_hold_point.class.php");
11require_once($class_path."/map/map_hold_multipolygon.class.php");
12require_once($class_path."/map/map_hold_multilinestring.class.php");
13require_once($class_path."/map/map_hold_linestring.class.php");
14require_once($class_path."/map/map_coord.class.php");
15
16
17/**
18 * class map_layer_model
19 *
20 */
21class map_layer_model {
22
23  /** Aggregations: */
24
25  /** Compositions: */
26
27   /*** Attributes: ***/
28
29  /**
30   * Tableau des emprises, l'identifiant de l'objet est la clé
31   * @access protected
32   */
33  protected $holds;
34
35  /**
36   * Tableau des identifiants des objets contenant des emprises
37   * @access protected
38   */
39  protected $ids;
40
41  /**
42   *
43   * @access protected
44   */
45  protected $bounding_box;
46 
47  /**
48   *
49   * @access protected
50   */
51  protected $color="";
52
53
54  /**
55   *
56   *
57   * @param Array() ids Tableau des identifiants des objets contenant des emprises
58
59   * @return void
60   * @access public
61   */
62  public function __construct( $ids) {
63        $this->ids=$ids;
64        $this->fetch_datas();
65  } // end of member function __construct
66
67  /**
68   * Retourne l'emprise normalisé minimal pour afficher toutes les emprises
69   *
70   * @return map_hold
71   * @access public
72   */
73  public function get_bounding_box() {
74        global $dbh;
75       
76       
77       
78        if(!$this->bounding_box){
79                //on teste la manière forte !
80                $collection = $global_collection = "";
81                $i=0;
82                foreach ($this->holds as $hold){ 
83                        if($collection) $collection.=",";
84                        $collection.=$hold->get_wkt();
85                        $i++;
86                        if($i=500){
87                                $query = "select astext(envelope(geomfromtext('geometrycollection(".$collection.")'))) as bounding_box";
88                                $result = pmb_mysql_query($query,$dbh) or die(pmb_mysql_error());
89                                if(pmb_mysql_num_rows($result)){
90                                        if($global_collection) $global_collection.=",";
91                                        $global_collection.= pmb_mysql_result($result,0,0);
92                                }
93                                $i=0;
94                                $collection ="";
95                        }
96                       
97                }
98               
99                if($collection){
100                        $query = "select astext(envelope(geomfromtext('geometrycollection(".$collection.")'))) as bounding_box";
101                        $result = pmb_mysql_query($query,$dbh) or die(pmb_mysql_error());
102                        if(pmb_mysql_num_rows($result)){
103                                if($global_collection) $global_collection.=",";
104                                $global_collection.= pmb_mysql_result($result,0,0);
105                        }
106                }
107               
108                if($global_collection){
109                        $query = "select astext(envelope(geomfromtext('geometrycollection(".$global_collection.")'))) as bounding_box";
110                        $result = pmb_mysql_query($query,$dbh) or die(pmb_mysql_error());
111                        if(pmb_mysql_num_rows($result)){
112                                $this->bounding_box = new map_hold_polygon("bounding", 0,pmb_mysql_result($result,0,0));
113                        }
114                }
115                if(!$this->bounding_box){
116                        return false;
117                }
118        }
119        return $this->bounding_box;
120  } // end of member function get_bounding_box
121
122
123  /**
124   * appelle toutes les emprises normalisée des emprises courantes pour calculer
125   * l'emprise minimum nécessaire pour afficher toutes les emprises associées aux
126   * objets courants
127   *
128   * @return void
129   * @access protected
130   */
131  protected function calc_bounding_box() {
132  } // end of member function calc_bounding_box
133
134
135  public function  get_holds(){
136        return $this->holds;
137  }
138
139        public function get_informations(){
140                return array(
141                        'type' => $this->get_layer_model_type(),
142                        'name' => $this->get_layer_model_type(),
143                        'color' => $this->color,
144                        'field_id'=> $this->get_layer_model_type()."_hidden_field"
145                );
146        }
147       
148        public function have_results(){
149                if(count($this->holds)){
150                        return  true;
151                }
152                return false;
153        }
154} // end of map_layer_model
Note: See TracBrowser for help on using the repository browser.