Subversion Repositories eFlore/Applications.cel

Rev

Rev 978 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 978 Rev 979
Line 10... Line 10...
10
	private static $profondeurMax = 8;
10
	private static $profondeurMax = 8;
Line 11... Line 11...
11
	
11
	
12
	private static $pasCorrectionCentre = null;
12
	private static $pasCorrectionCentre = null;
13
	private static $coefficientReductionPas = null;	
13
	private static $coefficientReductionPas = null;	
-
 
14
	private static $coefficientProfondeurMax = null;
-
 
15
	
Line 14... Line 16...
14
	private static $coefficientProfondeurMax = null;
16
	private static $nbElements = array('stations' => 0,'communes' => 0, 'observations' => 0);
-
 
17
 
-
 
18
	private static $listeNoeudsSelectionnes = array();
Line 15... Line 19...
15
 
19
	
16
	private static $listeNoeudsSelectionnes = array();
20
	private static $pointsDejaTraites = array();
17
 
21
 
18
	/*
22
	/*
Line 27... Line 31...
27
	  +---------+---------+
31
	  +---------+---------+
Line 28... Line 32...
28
	  
32
	  
29
	  Quatres cadrans sont considérés par le quad tree
33
	  Quatres cadrans sont considérés par le quad tree
30
	  * = centre de la fenetre 
34
	  * = centre de la fenetre 
31
	 */
35
	 */
Line 32... Line 36...
32
	public static function creerGroupesQuadtree($markers, $neLat, $neLng, $swLat, $swLng, $zoom = 3) {
36
	public static function creerGroupesQuadtree(&$markers, $neLat, $neLng, $swLat, $swLng, $zoom = 3) {
Line 33... Line 37...
33
		
37
		
34
		if(count($markers) > self::$seuilClusterisation) {
38
		if(count($markers) > self::$seuilClusterisation) {
Line 76... Line 80...
76
		} else {
80
		} else {
77
			self::$profondeurMax = 1;
81
			self::$profondeurMax = 1;
78
		}
82
		}
79
	}
83
	}
Line -... Line 84...
-
 
84
	
-
 
85
	public static function getNbElements() {
-
 
86
		return self::$nbElements;
-
 
87
	}
80
	
88
	
81
	/**
89
	/**
82
	 * 
90
	 * 
83
	 * @param mixed $noeud Le noeud à traiter par le quadtree
91
	 * @param mixed $noeud Le noeud à traiter par le quadtree
84
	 * @param float $neLat Latitude du coin nord est de la fenetre 
92
	 * @param float $neLat Latitude du coin nord est de la fenetre 
Line 91... Line 99...
91
			
99
			
92
		$latCentre = round((($neLat+$swLat)/2)/self::$pasCorrectionCentre,0)*self::$pasCorrectionCentre;
100
		$latCentre = round((($neLat+$swLat)/2)/self::$pasCorrectionCentre,0)*self::$pasCorrectionCentre;
Line 93... Line 101...
93
		$lngCentre = round((($neLng+$swLng)/2)/self::$pasCorrectionCentre,0)*self::$pasCorrectionCentre;
101
		$lngCentre = round((($neLng+$swLng)/2)/self::$pasCorrectionCentre,0)*self::$pasCorrectionCentre;
-
 
102
						
-
 
103
		foreach ($noeud['points'] as &$point) {
-
 
104
				self::$nbElements['observations']++;
94
						
105
				self::$nbElements[$point['type_emplacement']]++;
95
		foreach ($noeud['points'] as &$point) {
106
				unset($point['type_emplacement']);
96
			$cadran = self::obtenirCadranPourPoint($latCentre, $lngCentre, $point);
107
				$cadran = self::obtenirCadranPourPoint($latCentre, $lngCentre, $point);
Line 97... Line 108...
97
			self::ajouterFils($noeud,$cadran,$point);
108
				self::ajouterFils($noeud,$cadran,$point);
Line 98... Line 109...
98
		}
109
		}
Line 133... Line 144...
133
		$noeud[$cadran]['nbrePoints']++;
144
		$noeud[$cadran]['nbrePoints']++;
134
		$noeud[$cadran]['latMoyenne'] += $point['lat'];
145
		$noeud[$cadran]['latMoyenne'] += $point['lat'];
135
		$noeud[$cadran]['lngMoyenne'] += $point['lng'];
146
		$noeud[$cadran]['lngMoyenne'] += $point['lng'];
136
	}
147
	}
Line 137... Line 148...
137
	
148
	
138
	private static function ajouterGroupeOuPoint($noeud) {
149
	private static function ajouterGroupeOuPoint(&$noeud) {
139
		$groupe = array();
150
		$groupe = array();
140
		if ($noeud['nbrePoints'] > 1) {
151
		if ($noeud['nbrePoints'] > 1) {
141
			$groupe['lat'] = $noeud['latMoyenne']/$noeud['nbrePoints'];
152
			$groupe['lat'] = $noeud['latMoyenne']/$noeud['nbrePoints'];
142
			$groupe['lng'] = $noeud['lngMoyenne']/$noeud['nbrePoints'];
153
			$groupe['lng'] = $noeud['lngMoyenne']/$noeud['nbrePoints'];
Line 146... Line 157...
146
			$groupe = $noeud['points'][0];
157
			$groupe = $noeud['points'][0];
147
		}
158
		}
148
		return $groupe;
159
		return $groupe;
149
	}
160
	}
Line 150... Line 161...
150
	
161
	
151
	private static function estUnParentFeuilles($noeud) {
162
	private static function estUnParentFeuilles(&$noeud) {
152
		return  self::estUneFeuille($noeud['A']) && 
163
		return  self::estUneFeuille($noeud['A']) && 
153
				self::estUneFeuille($noeud['B']) && 
164
				self::estUneFeuille($noeud['B']) && 
154
				self::estUneFeuille($noeud['C']) && 
165
				self::estUneFeuille($noeud['C']) && 
155
				self::estUneFeuille($noeud['D']);
166
				self::estUneFeuille($noeud['D']);
Line 156... Line 167...
156
	}
167
	}
157
	
168
	
158
	private static function estUneFeuille($noeud) {		
169
	private static function estUneFeuille(&$noeud) {		
159
		return $noeud == null || ($noeud['A'] == null && $noeud['B'] == null && $noeud['C'] == null && $noeud['D'] == null);
170
		return $noeud == null || ($noeud['A'] == null && $noeud['B'] == null && $noeud['C'] == null && $noeud['D'] == null);
160
	}
171
	}
161
}
172
}