Subversion Repositories eFlore/Projets.eflore-projets

Compare Revisions

Ignore whitespace Rev 746 → Rev 747

/trunk/services/modules/0.1/moissonnage/cartes/FormateurSVG.php
1,5 → 1,19
<?php
 
/**
* Classe qui genere la carte SVG pour les parametres de la requete qui a ete utilisee pour appeler
* le web service
*
* @package framework-0.4
* @author Alexandre GALIBERT <alexandre.galibert@tela-botanica.org>
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
* @version $Id$
* @copyright 2013 Tela Botanica (accueil@tela-botanica.org)
*
*/
 
 
class FormateurSVG {
private $documentXML;
29,22 → 43,8
private function chargerSVG($nomFichierSVG) {
$this->documentXML = new DOMDocument("1.0", "UTF-8");
$this->documentXML->load($nomFichierSVG);
$this->supprimerNoeudsInutiles($this->documentXML->documentElement);
}
private function supprimerNoeudsInutiles(& $noeud) {
$index = 0;
while ($index < $noeud->childNodes->length) {
if (get_class($noeud->childNodes->item($index)) != 'DOMElement') {
$noeud->removeChild($noeud->childNodes->item($index));
} else {
$fils = $noeud->childNodes->item($index);
$this->supprimerNoeudsInutiles($fils);
$index ++;
}
}
}
private function chargerCoordonnees() {
$viewbox = $this->recupererNoeuds('qgisviewbox');
$this->coordonnees = array(
117,10 → 117,10
 
public function formaterCarte($taxon) {
$limitesCarte = $this->renvoyerLimitesCarte();
$sourceDonnees = new SourceDonnees($limitesCarte, $taxon);
foreach ($this->sources as $source) {
$nomClasse = $source == 'floradata' ? 'DonneesFloradata' : 'DonneesMoissonnage';
$rechercheBdd = new $nomClasse($limitesCarte, $taxon, $source);
$stations = $rechercheBdd->recupererStations();
$nomMethode = "recupererStations".($source == 'floradata' ? 'Floradata' : 'Moissonnage');
$stations = $sourceDonnees->$nomMethode($source);
$this->ajouterStations($stations, $source);
}
$this->supprimerMaillesVides();
147,6 → 147,9
$index = 0;
$maille = $grille->item($index);
foreach ($stations as $station) {
if (!isset($station['lat']) || !isset($station['lng']) || !isset($station['commune'])) {
continue;
}
$idMaille = $maille->attributes->getNamedItem('id')->value;
$bbox = explode('_', substr($idMaille, 5));
$bbox[0] = floatval($bbox[0]);
161,9 → 164,8
$bbox[1] = floatval($bbox[1]);
}
if ($bbox[1] == $station['lat'] && $bbox[0] == $station['lng']) {
$this->genererTitreMaille($station['nb_observations'], $source, $maille);
$this->ajouterCommentaire($station, $source, $maille);
$this->appliquerStyleMaille($source, $maille);
$maille = $grille->item($index ++);
}
if ($index == $grille->length) {
break;
184,18 → 186,27
}
private function appliquerStyleMaille($source, & $maille) {
$style = $maille->hasAttribute('class') ? 'tout' : $source;
$maille->setAttribute('class', $style);
if ($maille->hasAttribute('class') && $maille->attributes->getNamedItem('class')->value != $source) {
$maille->setAttribute('class', 'tout');
} elseif (!$maille->hasAttribute('class')) {
$maille->setAttribute('class', $source);
}
}
private function genererTitreMaille($observations, $source, & $maille) {
$texte = '';
private function ajouterCommentaire($station, $source, & $maille) {
$commentaires = array();
if ($maille->hasAttribute('title')) {
$texte = $maille->attributes->getNamedItem('title')->value."\n$source : $observations observations";
$commentaires = explode("; ", $maille->attributes->getNamedItem('title')->value);
}
$commentaire = ucfirst($source)." : {$station['commune']}, ";
if (strlen($station['date']) == 4) {
$commentaire .= "en {$station['date']} par {$station['auteur']}";
} else {
$texte = "$source : $observations observations";
$date = preg_replace("/(\d{4})-(\d{2})-(\d{2})/", "$3/$2/$1", $station['date']);
$commentaire .= "le {$date} par {$station['auteur']}";
}
$maille->setAttribute('title', $texte);
$commentaires[] = trim($commentaire);
$maille->setAttribute('title', implode('; ', $commentaires));
}