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)); |
} |
|
|