Subversion Repositories eFlore/Applications.cel

Rev

Rev 2536 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2536 Rev 2559
1
<?php
1
<?php
2
// declare(encoding='UTF-8');
2
// declare(encoding='UTF-8');
3
/**
3
/**
4
 * Traitement des codes INSEE et des codes pays de la base de données CEL
4
 * Traitement des codes INSEE et des codes pays de la base de données CEL
5
 * Permet d'affecter des codes INSEE et des codes pays aux obs possédant des coordonnées mais pas de commune ou de pays.
5
 * Permet d'affecter des codes INSEE et des codes pays aux obs possédant des coordonnées mais pas de commune ou de pays.
6
 *
6
 *
7
 * Utilisation :
7
 * Utilisation :
8
 * - Pour ? : <code>/opt/lamp/bin/php cli.php code_zone_geo -a tout</code>
8
 * - Pour ? : <code>/opt/lamp/bin/php cli.php code_zone_geo -a tout</code>
9
 * - Pour ? : <code>/opt/lamp/bin/php cli.php code_zone_geo -a colonne</code>
9
 * - Pour ? : <code>/opt/lamp/bin/php cli.php code_zone_geo -a colonne</code>
10
 * - Pour ? : <code>/opt/lamp/bin/php cli.php code_zone_geo -a payssanscorrespondance</code>
10
 * - Pour ? : <code>/opt/lamp/bin/php cli.php code_zone_geo -a payssanscorrespondance</code>
11
 * - Pour ? : <code>/opt/lamp/bin/php cli.php code_zone_geo -a codeinseesanscorrespondance</code>
11
 * - Pour ? : <code>/opt/lamp/bin/php cli.php code_zone_geo -a codeinseesanscorrespondance</code>
12
 *
12
 *
13
 * @category   CEL
13
 * @category   CEL
14
 * @package    Scripts
14
 * @package    Scripts
15
 * @subpackage Zones Geo
15
 * @subpackage Zones Geo
16
 * @author     Mathias CHOUET <mathias@tela-botanica.org>
16
 * @author     Mathias CHOUET <mathias@tela-botanica.org>
17
 * @author     Aurelien PERONNET <aurelien@tela-botanica.org>
17
 * @author     Aurelien PERONNET <aurelien@tela-botanica.org>
18
 * @license    GPL v3 <http://www.gnu.org/licenses/gpl.txt>
18
 * @license    GPL v3 <http://www.gnu.org/licenses/gpl.txt>
19
 * @license    CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
19
 * @license    CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
20
 * @copyright  1999-2014 Tela Botanica <accueil@tela-botanica.org>
20
 * @copyright  1999-2014 Tela Botanica <accueil@tela-botanica.org>
21
 */
21
 */
22
include_once dirname(__FILE__).'/bibliotheque/Dao.php';
22
include_once dirname(__FILE__).'/bibliotheque/Dao.php';
23
 
23
 
24
class CodeZoneGeo extends Script {
24
class CodeZoneGeo extends Script {
25
 
25
 
26
	protected $tableauTaxon;
26
	protected $tableauTaxon;
27
	protected $dao;
27
	protected $dao;
28
	protected $observations;
28
	protected $observations;
29
	
29
	
30
	protected $url_service_geo_tpl;
30
	protected $url_service_geo_tpl;
31
	protected $url_service_pays_tpl;
31
	protected $url_service_pays_tpl;
32
 
32
 
33
	protected $mode_verbeux = false;
33
	protected $mode_verbeux = false;
34
 
34
 
35
	// Paramêtres autorisées lors de l'appel au script en ligne de commande
35
	// Paramêtres autorisées lors de l'appel au script en ligne de commande
36
	protected $parametres_autorises = array(
36
	protected $parametres_autorises = array(
37
		'-n' => array(true, true, 'Nom du fichier ou du dossier à traiter'));
37
		'-n' => array(true, true, 'Nom du fichier ou du dossier à traiter'));
38
 
38
 
39
	public function executer() {
39
	public function executer() {
40
		
40
		
41
		$this->url_service_geo_tpl = Config::get('urlZoneGeoTpl');
41
		$this->url_service_geo_tpl = Config::get('urlZoneGeoTpl');
42
		$this->url_service_pays_tpl = Config::get('urlPaysTpl');
42
		$this->url_service_pays_tpl = Config::get('urlPaysTpl');
43
 
43
 
44
		$this->dao = new Dao();
44
		$this->dao = new Dao();
45
		// Récupération de paramétres
45
		// Récupération de paramétres
46
		// Lancement de l'action demandée
46
		// Lancement de l'action demandée
47
		$cmd = $this->getParametre('a');
47
		$cmd = $this->getParametre('a');
48
		$this->mode_verbeux = $this->getParametre('v');
48
		$this->mode_verbeux = $this->getParametre('v');
49
 
49
 
50
		switch ($cmd) {
50
		switch ($cmd) {
51
			case 'tout' :
51
			case 'tout' :
52
				// à effectuer manuellement au premier lancement du script
52
				// à effectuer manuellement au premier lancement du script
53
				$this->creerColonne();
53
				$this->creerColonne();
54
				$this->calculerToutSansCorrespondanceDepuisLeDebut();
54
				$this->calculerToutSansCorrespondanceDepuisLeDebut();
55
				break;
55
				break;
56
			case 'colonne' :
56
			case 'colonne' :
57
				$this->creerColonne();
57
				$this->creerColonne();
58
				break;
58
				break;
59
			case 'codeinseesanscorrespondance' :
59
			case 'codeinseesanscorrespondance' :
60
				$this->calculerCodesInseeSansCorrespondance();
60
				$this->calculerCodesInseeSansCorrespondance();
61
				break;
61
				break;
62
			case 'codeinseesanscorrespondancedepuisledebut' :
62
			case 'codeinseesanscorrespondancedepuisledebut' :
63
				$this->calculerCodesInseeSansCorrespondanceDepuisLeDebut();
63
				$this->calculerCodesInseeSansCorrespondanceDepuisLeDebut();
64
				break;
64
				break;
65
			case 'payssanscorrespondance' :
65
			case 'payssanscorrespondance' :
66
				$this->calculerPaysSansCorrespondance();
66
				$this->calculerPaysSansCorrespondance();
67
				break;	
67
				break;	
68
			case 'payssanscorrespondancedepuisledebut' :
68
			case 'payssanscorrespondancedepuisledebut' :
69
				$this->calculerPaysSansCorrespondanceDepuisLeDebut();
69
				$this->calculerPaysSansCorrespondanceDepuisLeDebut();
70
				break;
70
				break;
71
			case 'toutsanscorrespondance' :
71
			case 'toutsanscorrespondance' :
72
				// devrait être être l'option utilisée dans le cron quotidien (avec l'option -v 0)
72
				// devrait être être l'option utilisée dans le cron quotidien (avec l'option -v 0)
73
				$this->calculerToutSansCorrespondance();
73
				$this->calculerToutSansCorrespondance();
74
				break;
74
				break;
75
			case 'toutsanscorrespondancedepuisledebut' :
75
			case 'toutsanscorrespondancedepuisledebut' :
76
				$this->calculerToutSansCorrespondanceDepuisLeDebut();
76
				$this->calculerToutSansCorrespondanceDepuisLeDebut();
77
				break;
77
				break;
78
			default :
78
			default :
79
				$this->traiterErreur('Erreur : la commande "%s" n\'existe pas!', array($cmd));
79
				$this->traiterErreur('Erreur : la commande "%s" n\'existe pas!', array($cmd));
80
		}
80
		}
81
	}
81
	}
82
 
82
 
83
	protected function creerColonne() {
83
	protected function creerColonne() {
84
		$this->dao->creerColonneCodeInseeCalcule();
84
		$this->dao->creerColonneCodeInseeCalcule();
85
	}
85
	}
86
 
86
 
87
	protected function calculerCodesInseeSansCorrespondance() {
87
	protected function calculerCodesInseeSansCorrespondance() {
88
		$liste_coordonnees = $this->dao->rechercherCoordonneesFrancaisesSansCorrespondances();
88
		$liste_coordonnees = $this->dao->rechercherCoordonneesFrancaisesSansCorrespondances();
89
		$this->traiterCoordonnees($liste_coordonnees);
89
		$this->traiterCoordonnees($liste_coordonnees);
90
	}
90
	}
91
	
91
	
92
	protected function calculerCodesInseeSansCorrespondanceDepuisLeDebut() {
92
	protected function calculerCodesInseeSansCorrespondanceDepuisLeDebut() {
93
		$liste_coordonnees = $this->dao->rechercherCoordonneesFrancaisesSansCorrespondanceDepuisLeDebut();
93
		$liste_coordonnees = $this->dao->rechercherCoordonneesFrancaisesSansCorrespondanceDepuisLeDebut();
94
		$this->traiterCoordonnees($liste_coordonnees);
94
		$this->traiterCoordonnees($liste_coordonnees);
95
	}
95
	}
96
	
96
	
97
	protected function calculerPaysSansCorrespondance() {
97
	protected function calculerPaysSansCorrespondance() {
98
		$liste_coordonnees = $this->dao->rechercherPaysSansCorrespondance();
98
		$liste_coordonnees = $this->dao->rechercherPaysSansCorrespondance();
99
		$this->traiterCoordonnees($liste_coordonnees);
99
		$this->traiterCoordonnees($liste_coordonnees);
100
	}
100
	}
101
	
101
	
102
	protected function calculerPaysSansCorrespondanceDepuisLeDebut() {
102
	protected function calculerPaysSansCorrespondanceDepuisLeDebut() {
103
		$liste_coordonnees = $this->dao->rechercherPaysSansCorrespondanceDepuisLeDebut();
103
		$liste_coordonnees = $this->dao->rechercherPaysSansCorrespondanceDepuisLeDebut();
104
		$this->traiterCoordonnees($liste_coordonnees);
104
		$this->traiterCoordonnees($liste_coordonnees);
105
	}
105
	}
106
	
106
	
107
	protected function calculerToutSansCorrespondance() {
107
	protected function calculerToutSansCorrespondance() {
-
 
108
		$this->affecterPaysFranceAuxCommunes();
108
		$liste_coordonnees = $this->dao->rechercherToutSansCorrespondance();
109
		$liste_coordonnees = $this->dao->rechercherToutSansCorrespondance();
109
		$this->traiterCoordonnees($liste_coordonnees);
110
		$this->traiterCoordonnees($liste_coordonnees);
110
	}
111
	}
111
 
112
 
112
	protected function calculerToutSansCorrespondanceDepuisLeDebut() {
113
	protected function calculerToutSansCorrespondanceDepuisLeDebut() {
-
 
114
		$this->affecterPaysFranceAuxCommunes();
113
		$liste_coordonnees = $this->dao->rechercherSansCorrespondanceDepuisLeDebut();
115
		$liste_coordonnees = $this->dao->rechercherSansCorrespondanceDepuisLeDebut();
114
		$this->traiterCoordonnees($liste_coordonnees);
116
		$this->traiterCoordonnees($liste_coordonnees);
115
	}
117
	}
-
 
118
	
-
 
119
	protected function affecterPaysFranceAuxCommunes() {
-
 
120
		if ($this->mode_verbeux) {
-
 
121
			echo "-------------------------------------------------------------------\n";
-
 
122
			echo "  Affectation du pays France aux communes ayant un code INSEE mais pas de pays ... ";
-
 
123
		}
-
 
124
		
-
 
125
		$maj = $this->dao->affecterPaysFranceAuxCommunesRenseignees();
-
 
126
		
-
 
127
		if ($this->mode_verbeux) {
-
 
128
			echo "OK \n";
-
 
129
			echo "  ".$maj." commune".($maj > 1 ? 's' : '')." affectée".($maj > 1 ? 's' : '')."\n";
-
 
130
			echo "-------------------------------------------------------------------\n";
-
 
131
		}
-
 
132
	}
116
 
133
 
117
	private function traiterCoordonnees($liste_coordonnees) {
134
	private function traiterCoordonnees($liste_coordonnees) {
118
		$debut = microtime(true);
135
		$debut = microtime(true);
119
		$nb_coordonnees_modifiees = 0;
136
		$nb_coordonnees_modifiees = 0;
120
		$nb_coordonnees_ignorees = 0;
137
		$nb_coordonnees_ignorees = 0;
121
		$total = count($liste_coordonnees);
138
		$total = count($liste_coordonnees);
122
 
139
 
123
		if ($this->mode_verbeux) {
140
		if ($this->mode_verbeux) {
124
			echo "-------------------------------------------------------------------\n";
141
			echo "-------------------------------------------------------------------\n";
125
			echo "  Calcul des codes INSEE, du code pays et modification (".count($liste_coordonnees)." coordonnées en tout) ... \n";
142
			echo "  Calcul des codes INSEE, du code pays et modification (".count($liste_coordonnees)." coordonnées en tout) ... \n";
126
			echo "  Enrichissement des champs zone geo et ce_zone_geo vides ... \n";
143
			echo "  Enrichissement des champs zone geo et ce_zone_geo vides ... \n";
127
			echo "-------------------------------------------------------------------\n";
144
			echo "-------------------------------------------------------------------\n";
128
		}
145
		}
129
 
146
 
130
		foreach ($liste_coordonnees as $coordonnees) {
147
		foreach ($liste_coordonnees as $coordonnees) {
131
			$infos_coord = $this->obtenirInfosPourCoordonnees($coordonnees);
148
			$infos_coord = $this->obtenirInfosPourCoordonnees($coordonnees);
132
			if ($infos_coord != null) {
149
			if ($infos_coord != null) {
133
				// Le type renvoyé permet de connaitre ce qu'on peut modifier
150
				// Le type renvoyé permet de connaitre ce qu'on peut modifier
134
				if($infos_coord['type'] == 'france') {
151
				if($infos_coord['type'] == 'france') {
135
					// Cas d'une commune française
152
					// Cas d'une commune française
136
					$coordonnee_a_traiter = array(
153
					$coordonnee_a_traiter = array(
137
						'latitude' => $coordonnees['latitude'],
154
						'latitude' => $coordonnees['latitude'],
138
						'longitude' => $coordonnees['longitude'],
155
						'longitude' => $coordonnees['longitude'],
139
						'code_insee' => $infos_coord['code_insee'],
156
						'code_insee' => $infos_coord['code_insee'],
140
						'nom' => $infos_coord['nom']
157
						'nom' => $infos_coord['nom']
141
					);
158
					);
142
					$this->dao->modifierCodeInseeEtZoneGeo($coordonnee_a_traiter);
159
					$this->dao->modifierCodeInseeEtZoneGeo($coordonnee_a_traiter);
143
				} else if($infos_coord['type'] == 'pays') {
160
				} else if($infos_coord['type'] == 'pays') {
144
					// Cas d'un lieu à l'étranger
161
					// Cas d'un lieu à l'étranger
145
					$coordonnee_a_traiter = array(
162
					$coordonnee_a_traiter = array(
146
							'latitude' => $coordonnees['latitude'],
163
							'latitude' => $coordonnees['latitude'],
147
							'longitude' => $coordonnees['longitude'],
164
							'longitude' => $coordonnees['longitude'],
148
							'code_pays' => $infos_coord['code_pays'],
165
							'code_pays' => $infos_coord['code_pays'],
149
							'nom' => $infos_coord['nom']
166
							'nom' => $infos_coord['nom']
150
					);
167
					);
151
					$this->dao->modifierPays($coordonnee_a_traiter);
168
					$this->dao->modifierPays($coordonnee_a_traiter);
152
				}
169
				}
153
				$nb_coordonnees_modifiees++;
170
				$nb_coordonnees_modifiees++;
154
			} else {
171
			} else {
155
				$nb_coordonnees_ignorees++;
172
				$nb_coordonnees_ignorees++;
156
			}
173
			}
157
			if ($this->mode_verbeux) {
174
			if ($this->mode_verbeux) {
158
				$this->afficherAvancement('  Coordonnées traitées ', $nb_coordonnees_modifiees);
175
				$this->afficherAvancement('  Coordonnées traitées ', $nb_coordonnees_modifiees);
159
			}
176
			}
160
		}
177
		}
161
 
178
 
162
		$fin = microtime(true);
179
		$fin = microtime(true);
163
		if ($this->mode_verbeux) {
180
		if ($this->mode_verbeux) {
164
			echo "\n";
181
			echo "\n";
165
			echo "-------------------------------------------------------------------\n";
182
			echo "-------------------------------------------------------------------\n";
166
			echo "  Fin de la mise à jour des codes INSEE calculés, du pays et de l'enrichissement, \n";
183
			echo "  Fin de la mise à jour des codes INSEE calculés, du pays et de l'enrichissement, \n";
167
			echo "  ".($fin - $debut)." secondes écoulées \n";
184
			echo "  ".($fin - $debut)." secondes écoulées \n";
168
			echo "  ".$nb_coordonnees_modifiees." code insee calculés et modifiés \n";
185
			echo "  ".$nb_coordonnees_modifiees." code insee calculés et modifiés \n";
169
			echo "  ".$nb_coordonnees_ignorees." coordonnées ignorées \n";
186
			echo "  ".$nb_coordonnees_ignorees." coordonnées ignorées \n";
170
			echo "-------------------------------------------------------------------\n";
187
			echo "-------------------------------------------------------------------\n";
171
			echo "\n";
188
			echo "\n";
172
		}
189
		}
173
	}
190
	}
174
 
191
 
175
	private function obtenirInfosPourCoordonnees($coordonnees) {
192
	private function obtenirInfosPourCoordonnees($coordonnees) {
176
		$infos_coord = null;
193
		$infos_coord = null;
177
		// Test facile qui permet d'abord de tenter une localisation bien plus rapide si les coordonnées 
194
		// Test facile qui permet d'abord de tenter une localisation bien plus rapide si les coordonnées 
178
		// sont dans la bounding box approximative de la France
195
		// sont dans la bounding box approximative de la France
179
		if($this->testerCoordonneesWgsFrance($coordonnees['latitude'], $coordonnees['longitude'])) {
196
		if($this->testerCoordonneesWgsFrance($coordonnees['latitude'], $coordonnees['longitude'])) {
180
			$infos_coord = $this->chercherInfosCommune('osm', $coordonnees['latitude'], $coordonnees['longitude']);
197
			$infos_coord = $this->chercherInfosCommune('osm', $coordonnees['latitude'], $coordonnees['longitude']);
181
			if ($infos_coord == null) {
198
			if ($infos_coord == null) {
182
				// Sinon recherche par pays
199
				// Sinon recherche par pays
183
				$infos_coord = $this->chercherInfosPays($coordonnees['latitude'], $coordonnees['longitude']);
200
				$infos_coord = $this->chercherInfosPays($coordonnees['latitude'], $coordonnees['longitude']);
184
			}
201
			}
185
		} else {
202
		} else {
186
			// Recherche par pays immédiate si en dehors de la bouding box française
203
			// Recherche par pays immédiate si en dehors de la bouding box française
187
			$infos_coord = $this->chercherInfosPays($coordonnees['latitude'], $coordonnees['longitude']);
204
			$infos_coord = $this->chercherInfosPays($coordonnees['latitude'], $coordonnees['longitude']);
188
		}
205
		}
189
		return $infos_coord;
206
		return $infos_coord;
190
	}
207
	}
191
 
208
 
192
	private function chercherInfosCommune($projet, $latitude, $longitude) {
209
	private function chercherInfosCommune($projet, $latitude, $longitude) {
193
		
210
		
194
		$noms_params = array('{projet}', '{latitude}', '{longitude}');
211
		$noms_params = array('{projet}', '{latitude}', '{longitude}');
195
		$valeurs_params = array($projet, $latitude, $longitude);
212
		$valeurs_params = array($projet, $latitude, $longitude);
196
		
213
		
197
		$url_service = str_replace($noms_params, $valeurs_params, $this->url_service_geo_tpl);
214
		$url_service = str_replace($noms_params, $valeurs_params, $this->url_service_geo_tpl);
198
		$url_service = str_replace(',', '.', $url_service);
215
		$url_service = str_replace(',', '.', $url_service);
199
 
216
 
200
		$ch = curl_init($url_service);
217
		$ch = curl_init($url_service);
201
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
218
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
202
		$reponse = curl_exec($ch);
219
		$reponse = curl_exec($ch);
203
 
220
 
204
		$infos_coord = $this->traiterReponseServiceCommune($reponse);
221
		$infos_coord = $this->traiterReponseServiceCommune($reponse);
205
		curl_close($ch);
222
		curl_close($ch);
206
 
223
 
207
		return $infos_coord;
224
		return $infos_coord;
208
	}
225
	}
209
	
226
	
210
	private function chercherInfosPays($latitude, $longitude) {
227
	private function chercherInfosPays($latitude, $longitude) {
211
		$noms_params = array('{latitude}', '{longitude}');
228
		$noms_params = array('{latitude}', '{longitude}');
212
		$valeurs_params = array($latitude, $longitude);
229
		$valeurs_params = array($latitude, $longitude);
213
		$url_service = str_replace($noms_params, $valeurs_params, $this->url_service_pays_tpl);
230
		$url_service = str_replace($noms_params, $valeurs_params, $this->url_service_pays_tpl);
214
		$url_service = str_replace(',', '.', $url_service);
231
		$url_service = str_replace(',', '.', $url_service);
215
 
232
 
216
		$ch = curl_init($url_service);
233
		$ch = curl_init($url_service);
217
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
234
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
218
		$reponse = curl_exec($ch);
235
		$reponse = curl_exec($ch);
219
		
236
		
220
		$res = json_decode($reponse, true);
237
		$res = json_decode($reponse, true);
221
		$retour = null;
238
		$retour = null;
222
		
239
		
223
		if(!empty($res)) {
240
		if(!empty($res)) {
224
			// Cas où l'on a recherché des coordonnées en France
241
			// Cas où l'on a recherché des coordonnées en France
225
			// On en profite pour remplir plus de données
242
			// On en profite pour remplir plus de données
226
			// que le simple pays si elles sont présentes
243
			// que le simple pays si elles sont présentes
227
			if(isset($res[8]) && isset($res[8]['codeInsee'])) {
244
			if(isset($res[8]) && isset($res[8]['codeInsee'])) {
228
				$retour = array(
245
				$retour = array(
229
					'code_insee' => $res[8]['codeInsee'],
246
					'code_insee' => $res[8]['codeInsee'],
230
					'nom' => $res[8]['intitule'],
247
					'nom' => $res[8]['intitule'],
231
					'type' => 'france'
248
					'type' => 'france'
232
				);
249
				);
233
			} else {
250
			} else {
234
				// Cas de la recherche en dehors de France
251
				// Cas de la recherche en dehors de France
235
				// La zone de plus haut niveau est toujours un pays 
252
				// La zone de plus haut niveau est toujours un pays 
236
				// (car le niveau de zone est limité à 2)
253
				// (car le niveau de zone est limité à 2)
237
				$infos_pays = $res[min(array_keys($res))];
254
				$infos_pays = $res[min(array_keys($res))];
238
				// La zone de niveau le plus bas est la "localité"
255
				// La zone de niveau le plus bas est la "localité"
239
				// la plus précise qu'on a pu trouver
256
				// la plus précise qu'on a pu trouver
240
				$infos_localite = $res[max(array_keys($res))];
257
				$infos_localite = $res[max(array_keys($res))];
241
	
258
	
242
				// Cas où l'on a trouvé un code pays
259
				// Cas où l'on a trouvé un code pays
243
				if(!empty($infos_pays['codeIso31661'])) {
260
				if(!empty($infos_pays['codeIso31661'])) {
244
					$retour = array(
261
					$retour = array(
245
						'code_pays' => $infos_pays['codeIso31661'], 
262
						'code_pays' => $infos_pays['codeIso31661'], 
246
						'nom' => ''
263
						'nom' => ''
247
					);
264
					);
248
				} elseif(!empty($infos_pays['codeIso31662'])) {
265
				} elseif(!empty($infos_pays['codeIso31662'])) {
249
					// Quelquefois la zone de plus haut niveau est une région ou une province
266
					// Quelquefois la zone de plus haut niveau est une région ou une province
250
					// heureusement son code est de forme XX-YY ou XX est le code iso du pays !
267
					// heureusement son code est de forme XX-YY ou XX est le code iso du pays !
251
					$retour = array(
268
					$retour = array(
252
						'code_pays' => substr($infos_pays['codeIso31662'], 0, 2), 
269
						'code_pays' => substr($infos_pays['codeIso31662'], 0, 2), 
253
						'nom' => ''
270
						'nom' => ''
254
					);
271
					);
255
				}
272
				}
256
				
273
				
257
				// Pas de sens de prendre un nom de localité si on a pas de pays
274
				// Pas de sens de prendre un nom de localité si on a pas de pays
258
				if(!empty($retour['code_pays'])) {
275
				if(!empty($retour['code_pays'])) {
259
					// Type sert à savoir quelle fonction de mise à jour on appellera
276
					// Type sert à savoir quelle fonction de mise à jour on appellera
260
					$retour['type'] = 'pays';
277
					$retour['type'] = 'pays';
261
					$retour['nom'] = $infos_localite['intitule'];
278
					$retour['nom'] = $infos_localite['intitule'];
262
				}
279
				}
263
			}
280
			}
264
		}
281
		}
265
		return $retour;
282
		return $retour;
266
	}
283
	}
267
 
284
 
268
	private function traiterReponseServiceCommune($reponse) {
285
	private function traiterReponseServiceCommune($reponse) {
269
		$retour = null;
286
		$retour = null;
270
		$reponse = json_decode($reponse);
287
		$reponse = json_decode($reponse);
271
		// cas du service lion 1906 qui peut renvoyer plusieurs communes (on prend la première)
288
		// cas du service lion 1906 qui peut renvoyer plusieurs communes (on prend la première)
272
		if (is_array($reponse)) {
289
		if (is_array($reponse)) {
273
			$reponse = $reponse[0];
290
			$reponse = $reponse[0];
274
		}
291
		}
275
		if (isset($reponse->codeINSEE)) {
292
		if (isset($reponse->codeINSEE)) {
276
			// Type sert à savoir quelle fonction de mise à jour on appellera
293
			// Type sert à savoir quelle fonction de mise à jour on appellera
277
			$retour = array('code_insee' => $reponse->codeINSEE,
294
			$retour = array('code_insee' => $reponse->codeINSEE,
278
							'nom' => $reponse->nom,
295
							'nom' => $reponse->nom,
279
							'type' => 'france');
296
							'type' => 'france');
280
		}
297
		}
281
		return $retour;
298
		return $retour;
282
	}
299
	}
283
	
300
	
284
	private function testerCoordonneesWgsFrance($latitude, $longitude) {
301
	private function testerCoordonneesWgsFrance($latitude, $longitude) {
285
		$coord_france = false;
302
		$coord_france = false;
286
		if ($latitude != '' && $longitude != '') {
303
		if ($latitude != '' && $longitude != '') {
287
			if ($latitude < 51.071667 && $latitude > 41.316667) {
304
			if ($latitude < 51.071667 && $latitude > 41.316667) {
288
				if ($longitude < 9.513333 && $longitude > -5.140278) {
305
				if ($longitude < 9.513333 && $longitude > -5.140278) {
289
					$coord_france = true;
306
					$coord_france = true;
290
				}
307
				}
291
			}
308
			}
292
		}
309
		}
293
		return $coord_france;
310
		return $coord_france;
294
	}
311
	}
295
}
312
}