29,26 → 29,24 |
public function cartographier() { |
// Initialisation de variable |
$donnees = array(); |
$structureDao = $this->getModele('StructureDao'); |
|
// Construction des données à passer à la cartographie |
$zones = $this->chargerZonesGeo(Config::get('carte_base_nom')); |
$zones_infos = $structureDao->getStructureParZoneGeo('FRD'); |
$zones = $this->chargerZonesNbre($zones, $zones_infos); |
$zones = $this->chargerZonesUrls($zones); |
Debug::printr($zones); |
|
// Création de la carte |
$options = array( |
'carte_nom' => 'col_str_dep', |
'formule' => Cartographie::FORMULE_PROPORTIONNEL, |
'couleur_claire' => Config::get('carte_couleur_claire'), |
'couleur_foncee' => Config::get('carte_couleur_foncee'), |
'carte_nom' => 'france', |
'formule' => Cartographie::FORMULE_PROPORTIONNEL, |
'fond_fichier' => Config::get('carte_base_nom'), |
'fond_dossier' => Application::getChemin().Config::get('carte_fonds_chemin'), |
'stock_dossier' => Config::get('carte_sotckage_chemin'), |
'stock_url' => Config::get('carte_sotckage_url'), |
'debug' => Config::get('carte_mode_debug')); |
'fond_dossier' => Application::getChemin().Config::get('carte_chemin_fonds'), |
'stock_dossier' => Config::get('carte_chemin_sotckage'), |
'infos' => $zones); |
$cartographie = Composant::fabrique('cartographie', $options); |
// Construction des données nécessaires à la cartographie |
$zones = $cartographie->getCarteZones(); |
$this->chargerZonesNbre($zones); |
$this->chargerZonesUrls($zones); |
$cartographie->setCarteZones($zones); |
//Debug::printr($zones); |
|
$cartographie->creerCarte(); |
$donnees['map'] = $cartographie->getImageMap(); |
|
56,28 → 54,53 |
$this->setSortie(self::RENDU_CORPS, $resultat); |
} |
|
private function chargerZonesNbre(&$zones) { |
$structureDao = $this->getModele('StructureDao'); |
$zones_infos = $structureDao->getStructureParZoneGeo('FRD'); |
private function chargerZonesNbre($zones, $zones_infos) { |
foreach ($zones as $id => &$infos) { |
if (isset($zones_infos[$id])) { |
$nbre = $zones_infos[$id]; |
$infos['info_nombre'] = $nbre; |
$infos['info_nbre'] = $nbre; |
} else { |
$infos['info_nombre'] = 0; |
$infos['info_nbre'] = 0; |
} |
} |
return $zones; |
} |
|
private function chargerZonesUrls(&$zones) { |
private function chargerZonesUrls($zones) { |
$this->url->setVariableRequete('module', 'Recherche'); |
$this->url->setVariableRequete('action', 'rechercher'); |
$this->url->setVariableRequete('recherche', 'str-d:%s'); |
$this->url->setVariableRequete('recherche', 'd:%s'); |
$url = $this->url->getURL(); |
foreach ($zones as $id => &$infos) { |
$infos['url'] = sprintf($url, $id); |
} |
$this->url->unsetVariablesRequete(array('module', 'action', 'recherche')); |
return $zones; |
} |
|
/** |
* Charge le fichier csv des zones géographique de la carte |
*/ |
private function chargerZonesGeo($nom_carte) { |
$fichier_csv = Application::getChemin().Config::get('carte_chemin_fonds').$nom_carte.'.csv'; |
$zones = array(); |
if (($handle = fopen($fichier_csv, 'r')) !== false) { |
$ligne = 1; |
$cles = array(); |
while (($donnees = fgetcsv($handle, 1000, ',')) !== false) { |
$cle = array_shift($donnees); |
if ($ligne == 1) { |
// Ligne 1 : les noms des champs |
$cles = $donnees; |
} else { |
// Ligne > 1 : traitements des données |
$zones[$cle] = array_combine($cles, $donnees); |
} |
$ligne++; |
} |
fclose($handle); |
} |
return $zones; |
} |
} |
?> |