Subversion Repositories eFlore/Projets.eflore-projets

Compare Revisions

Ignore whitespace Rev 999 → Rev 1000

/trunk/scripts/modules/moissonnage/moissonnage.ini
New file
0,0 → 1,35
code = "ifn"
versions = "2005,2006,2007,2008,2009,2010,2011,2012"
categories = "arbresForet,arbresPeupleraie,couvertsForet,documentation,ecologie,flore,placettesForet,placettesPeupleraie"
dossierTsv = "{ref:dossierDonneesEflore}{ref:code}/"
dossierSql = "{ref:dossierTsv}"
 
[tables]
ifnMeta = "if_meta"
documentationFlore = "ifn_documentation_flore"
arbresForet = "ifn_arbres_foret"
arbresPeupleraie = "ifn_arbres_peupleraie"
couvertsForet = "ifn_couverts_foret"
documentation = "ifn_documentation"
ecologie = "ifn_ecologie"
flore = "ifn_flore"
placettesForet = "ifn_placettes_foret"
placettesPeupleraie = "ifn_placettes_peupleraie"
ifnTest = "ifn"
 
 
[fichiers]
structureSql = "{ref:code}.sql"
arbresForet = "arbres_foret.csv"
arbresPeupleraie = "arbres_peupleraie.csv"
couvertsForet = "couverts_foret.csv"
documentation = "documentation.csv"
ecologie = "ecologie.csv"
flore = "flore.csv"
placettesForet = "placettes_foret.csv"
placettesPeupleraie = "placettes_peupleraie.csv"
documentationFlore = "documentation_flore.csv"
 
[chemins]
structureSql = "{ref:dossierSql}{ref:fichiers.structureSql}"
documentation_flore = "{ref:dossierTsv}{ref:documentation_flore}"
/trunk/scripts/modules/moissonnage/Moissonnage.php
New file
0,0 → 1,120
<?php
/** Exemple lancement:
* /opt/lampp/bin/php -d memory_limit=3500M ~/web/eflore-projets/scripts/cli.php moissonnage -a chargerDonnees -n baznat
* Options :
* -n : nom du projet
*/
 
class Moissonnage extends EfloreScript {
private $projet = "";
protected $parametres_autorises = array(
'-n' => array(true, true, 'Préciser le nom du dataset que vous souhaitez ajouter ex. baznat, naturedugard-flore'));
 
public function executer() {
// Lancement de l'action demandée
try {
$this->initialiserProjet('moissonnage');
 
$cmd = $this->getParametre('a');
$this->projet = $this->getParametre('n');
switch ($cmd) {
case 'chargerTous' :
$this->chargerDonnees();
$this->chargerMetaDonnees();
break;
case 'chargerDonnees' :
$this->chargerDonnees();
break;
case 'chargerMetadonnees' :
$this->chargerMetaDonnees();
break;
case 'supprimerTous' :
$this->supprimerTous();
break;
default :
throw new Exception("Erreur : la commande '$cmd' n'existe pas!");
}
} catch (Exception $e) {
$this->traiterErreur($e->getMessage());
}
}
private function chargerDonnees() {
$requete = "CREATE TABLE tb_eflore.".$this->projet."_tapir2 ".
"AS SELECT concat('urn:lsid:',institutionCode,':',collectionCode,':', catalogNumber) AS guid, ".
"`catalogNumber` AS observation_id, `scientificName` AS nom_scientifique_complet, `referencess` AS num_nom, ".
"`county` AS lieu_station_nom, `locality` AS lieu_commune_code_insee, ".
"`decimalLatitude` AS lieu_station_latitude, `decimalLongitude` AS lieu_station_longitude, `geodeticDatum` , ".
"`eventDate` AS observation_date, `identifiedBy` AS observateur_nom_complet ".
"FROM tb_moissonnage.Occurrence ".
"WHERE dataset_id = (SELECT dataset_id FROM tb_moissonnage.Dataset WHERE name = '$this->projet')";
$this->getBdd()->requeter($requete);
}
private function chercherInfosMetaDonnees() {
$infos = array();
$requeteOccurrence = "SELECT institutionCode, collectionCode FROM tb_moissonnage.Occurrence WHERE dataset_id =
(SELECT id FROM tb_moissonnage.Dataset WHERE name='$this->projet');";
$infos['occurrence'] = $this->getBdd()->recuperer($requeteOccurrence);
$requeteDataset = "SELECT * FROM tb_moissonnage.DataPublisher WHERE id =
(SELECT dataPublisher_id FROM tb_moissonnage.Dataset WHERE name='$this->projet')";
$infos['dataPublisher'] = $this->getBdd()->recuperer($requeteDataset);
return $infos;
}
private function chargerMetaDonnees() {
$this->chargerStructureSqlMetaDonnees();
$infos = $this->chercherInfosMetaDonnees();
$date = date('Y_m_d');
$requete = "INSERT INTO tb_eflore.".$this->projet."_tapir_meta (guid, citation, url_projet, createurs) ".
"VALUES ('urn:lsid:{$infos['occurrence']['institutionCode']}:{$infos['occurrence']['collectionCode']}:{$date}', '".
$this->projet." : {$infos['dataPublisher']['description']} du ".
"<a href=\"{$infos['occurrence']['institutionCode']}\" title=\"{$infos['occurrence']['collectionCode']}\" ".
"onclick=\"window.open(this.href); return false;\">{$this->projet}</a>', ".
"'{$infos['occurrence']['institutionCode']}', ".
"'p.courriel={$infos['dataPublisher']['administrativeContact']}, p.courriel={$infos['dataPublisher']['technicalContact']}')";
$this->getBdd()->requeter($requete);
}
private function chargerStructureSqlMetaDonnees() {
$date = date('Y_m_d');
$requete = "CREATE TABLE IF NOT EXISTS tb_eflore.".$this->projet."_tapir_meta ".
"(`guid` varchar(255) NOT NULL ,
`langue_meta` varchar(2) NOT NULL DEFAULT 'fr',
`code` varchar(20) NOT NULL DEFAULT '{$this->projet}',
`version` varchar(20) NOT NULL DEFAULT '{$date}',
`titre` varchar(255) NOT NULL DEFAULT '{$this->projet}',
`description` text,
`mots_cles` varchar(510) NOT NULL DEFAULT 'flore, observation, {$this->projet}',
`citation` varchar(255) NOT NULL,
`url_tech` varchar(510) DEFAULT NULL,
`url_projet` varchar(510) NOT NULL,
`source` text,
`createurs` text NOT NULL,
`editeur` text,
`contributeurs` text,
`droits` text,
`url_droits` varchar(510) DEFAULT 'http://creativecommons.org/licenses/by-sa/2.0/fr/',
`langue` varchar(255) DEFAULT 'fr',
`date_creation` varchar(30) DEFAULT NULL,
`date_validite` varchar(255) DEFAULT NULL,
`couverture_spatiale` varchar(510) DEFAULT NULL,
`couverture_temporelle` varchar(510) DEFAULT NULL,
`web_services` varchar(255) DEFAULT 'meta-donnees:0.1;ontologies:0.1;cartes:0.1',
PRIMARY KEY (`guid`,`langue_meta`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;";
$this->getBdd()->requeter($requete);
}
private function supprimerTous() {
$requete = "DROP TABLE IF EXISTS `ifn_arbres_forets`, `ifn_arbres_peupleraie`, `ifn_couverts_foret`,
`ifn_documentation`, `ifn_documentation_flore`, `ifn_ecologie`, `ifn_flore`, `ifn_placettes_foret`,
`ifn_placettes_peupleraie`;
";
$this->getBdd()->requeter($requete);
}
}
?>