Rev 150 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php//declare(encoding='UTF-8');/*** Classe permettant de :* - convertir la latitude et longitude en degre, et rajouter l'objet point centroide de la commune.* - charger la bdd* Exemple de lancement du script : :* /opt/lampp/bin/php cli.php lion1906 -a chargerTous** @category php 5.2* @package eFlore/Scripts* @author Mohcen BENMOUNAH <mohcen@tela-botanica.org>* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>* @copyright Copyright (c) 2011, Tela Botanica (accueil@tela-botanica.org)* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL* @version $Id$*/class Lion1906 extends EfloreScript {public function executer() {try {$this->initialiserProjet('lion1906');// Lancement de l'action demandée$cmd = $this->getParametre('a');switch ($cmd) {case 'chargerTous' :$this->chargerStructureSql();$this->chargerMetaDonnees();$this->chargerLion1906();$this->preparerTable();$this->convertirRadianEnDegre();break;case 'convertir' :$this->preparerTable();$this->convertirRadianEnDegre();break;case 'supprimerTous' :$this->supprimerTous();break;default :throw new Exception("Erreur : la commande '$cmd' n'existe pas!");}} catch (Exception $e) {$this->traiterErreur($e->getMessage());}}protected function chargerMetaDonnees() {$contenuSql = $this->recupererContenu(Config::get('chemins.lion1906Meta'));$this->executerScripSql($contenuSql);}private function chargerLion1906() {$chemin = Config::get('chemins.lion1906');$table = Config::get('tables.lion1906');$requete = "LOAD DATA INFILE '$chemin' "."REPLACE INTO TABLE $table ".'CHARACTER SET latin1 '.'FIELDS '." TERMINATED BY ';' "." ENCLOSED BY '' "." ESCAPED BY '\\\' ".'IGNORE 1 LINES';$this->getBdd()->requeter($requete);}private function convertirRadianEnDegre() {$table = Config::get('tables.lion1906');$requete = 'SELECT insee, latitude_radian, longitude_radian '."FROM $table ";$LatLons = $this->getBdd()->recupererTous($requete);foreach ($LatLons as $LatLon) {$insee = $LatLon['insee'] ;$latitude_degre = $LatLon['latitude_radian'] * 180 / pi();$longitude_degre = $LatLon['longitude_radian'] * 180 / pi();$latitude_degre = str_replace(',', '.', $latitude_degre);$longitude_degre = str_replace(',', '.', $longitude_degre);$this->formerPointCentre($latitude_degre, $longitude_degre, $insee);$this->afficherAvancement('Analyse des communes Lion1906');}}private function preparerTable() {$table = Config::get('tables.lion1906');$requete = "ALTER TABLE $table ".'DROP latitude_degre, '.'DROP longitude_degre, '.'DROP centroide, '.'DROP INDEX insee ';$this->getBdd()->requeter($requete);$requete = "ALTER TABLE $table ".' ADD latitude_degre double NOT NULL , '.' ADD longitude_degre double NOT NULL , '.' ADD centroide point NOT NULL ';$this->getBdd()->requeter($requete);$requete = "ALTER TABLE $table ".'ADD INDEX insee (insee, latitude_degre, longitude_degre, centroide) ';$this->getBdd()->requeter($requete);}private function formerPointCentre($latitude_degre, $longitude_degre, $insee) {$centre = "$latitude_degre $longitude_degre" ;$table = Config::get('tables.lion1906');$requete = "UPDATE $table "."SET latitude_degre = '$latitude_degre', longitude_degre = '$longitude_degre', "." centroide = POINTFROMTEXT('POINT($centre)') "."WHERE insee = '$insee' ";$this->getBdd()->requeter($requete);}private function supprimerTous() {$requete = "DROP TABLE IF EXISTS lion1906_meta, lion1906_communes_v2008";$this->getBdd()->requeter($requete);}}?>