Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 1058 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php
//declare(encoding='UTF-8');
/**
 * Exemple de lancement du script : :
 * 1. Création de la base de données :
 * /opt/lampp/bin/php cli.php osm -a chargerStructureSql -m manuel -v 3
 *
 * 2. Analyse du fichir OSM :
 * /opt/lampp/bin/php cli.php osm -a analyser -f "../donnees/osm/fr_communes_new.osm" -m manuel -v 3
 *
 * 3. Traitement de l'ordre :
 * /opt/lampp/bin/php cli.php osm -a ordre -m manuel -v 3
 *
 * 4. Remplissage des polygones :
 * /opt/lampp/bin/php cli.php osm -a polygone -m manuel -v 3
 *
 * Définition des centroïdes pour les polygones déjà complets:
 * /opt/lampp/bin/php cli.php osm -a centre -m manuel -v 3
 *
 * 5. Remise de l'ordre à zéro :
 * /opt/lampp/bin/php cli.php osm -a zero -m manuel -v 3
 *
 * 6. Traitement de l'ordre des polygones incomplets :
 * /opt/lampp/bin/php cli.php osm -a ordonnerPolygoneInc -m manuel -v 3
 *
 * 7. Remplissage des polygones incomplets :
 * /opt/lampp/bin/php cli.php osm -a remplirPolygoneInc -m manuel -v 3
 *
 * 8. Renommage des polygones incomplets :
 * /opt/lampp/bin/php cli.php osm -a renommer -m manuel -v 3
 *
 * 9. Définition des centroïdes :
 * /opt/lampp/bin/php cli.php osm -a centre -m manuel -v 3
 *
 * @category    php 5.4
 * @package             DEL
 * @subpackage  Scripts
 * @author              Aurélien PERONNET <aurelien@tela-botanica.org>
 * @copyright   Copyright (c) 2012, Tela Botanica (accueil@tela-botanica.org)
* @license              CeCILL v2 http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt
 * @license             GNU-GPL http://www.gnu.org/licenses/gpl.html
 */
// TODO : Améliorer la gestion de l'ordre des chemins pour éviter de prendre en compte des chemins inexistants
class Osm extends EfloreScript {

        const PROJET_NOM = 'osm';

        protected $parametres_autorises = array(
                '-f' => array(true, null, 'Chemin du fichier osm à analyser'),
                '-m' => array(false, 'auto', 'Mode «auto» ou «manuel». En manuel, les compteurs dans les boucles sont affichés.'));

        public function executer() {
                try {
                        $this->initialiserProjet(self::PROJET_NOM);

                        // Lancement de l'action demandée
                        $cmd = $this->getParametre('a');
                        switch ($cmd) {
                                case 'chargerStructureSql' :
                                        $this->chargerStructureSql();
                                        break;
                                case 'analyser' :
                                        $script = $this->chargerClasse('ParseurOsm');
                                        $script->executer();
                                        break;
                                case 'ordre' :
                                        $script = $this->chargerClasse('OrdonneurDeChemins');
                                        $script->executer();
                                        break;
                                case 'polygone' :
                                case 'centre' :
                                case 'zero' :
                                        $script = $this->chargerClasse('PolygoneCreateur');
                                        $script->executer();
                                        break;
                                case 'ordonnerPolygoneInc' :
                                case 'remplirPolygoneInc' :
                                case 'renommer' :
                                        $script = $this->chargerClasse('PolygoneReparateur');
                                        $script->executer();
                                        break;
                                case 'maj' :
                                        $script = $this->chargerClasse('MiseAJour');
                                        $script->executer();
                                        break;
                                default :
                                        throw new Exception("Erreur : la commande '$cmd' n'existe pas!");
                        }
                } catch (Exception $e) {
                        $this->traiterErreur($e->getMessage());
                }
                print "\n";// Pour ramener à la ligne en fin de script
        }

        protected function initialiserProjet($projetNom) {
                $this->projetNom = $projetNom;
        }

        private function chargerClasse($classe) {
                require_once $classe.'.php';
                $conteneur = new Conteneur($this->parametres);
                return new $classe($conteneur);
        }
}