3,11 → 3,8 |
|
class FormateurJson { |
|
private $sourceDonnees; |
|
public function __construct($source = '') { |
$this->sourceDonnees = $source; |
} |
public function __construct() {} |
|
|
public function formaterStations($stations) { |
14,74 → 11,76 |
$objetJSON = new StdClass(); |
$objetJSON->type = "FeatureCollection"; |
$objetJSON->stats = new StdClass(); |
$objetJSON->stats->source = $this->sourceDonnees; |
$objetJSON->stats->source = array(); |
$objetJSON->stats->formeDonnees = ''; |
if (count($stations) > 0) { |
$objetJSON->stats->formeDonnees = ($stations[0]['type_site'] == 'MAILLE') ? 'maille' : 'point'; |
} |
$objetJSON->stats->sites = 0; |
$objetJSON->stats->stations = 0; |
$objetJSON->stats->observations = 0; |
|
$objetJSON->features = array(); |
foreach ($stations as $station) { |
$stationJSON = NULL; |
$stationJSON = null; |
if ($station['type_site'] == 'MAILLE') { |
$stationJSON = $this->formaterMaille($station); |
$objetJSON->stats->sites += $station['points']; |
$objetJSON->stats->stations += array_sum($station['stations']); |
$objetJSON->stats->observations += array_sum($station['observations']); |
} else { |
$objetJSON->stats->sites ++; |
$stationJSON = $this->formaterPoint($station); |
$objetJSON->stats->stations ++; |
$objetJSON->stats->observations += $station['observations']; |
} |
$objetJSON->stats->observations += $station['observations']; |
if (!is_null($stationJSON)) { |
$objetJSON->features[] = $stationJSON; |
} |
$objetJSON->features[] = $stationJSON; |
$this->ajouterSourcesAuxStats($station, $objetJSON->stats); |
} |
return $objetJSON; |
} |
|
private function formaterPoint($station) { |
private function ajouterSourcesAuxStats($station, & $stats) { |
if ($station['type_site'] == 'MAILLE') { |
foreach ($station['stations'] as $source => $nombreStations) { |
if (!in_array($source, $stats->source)) { |
$stats->source[] = $source; |
} |
} |
} else { |
if (!in_array($station['source'], $stats->source)) { |
$stats->source[] = $station['source']; |
} |
} |
} |
|
private function formaterPoint(& $station) { |
$json = new StdClass(); |
$json->type = "Feature"; |
$json->geometry = new StdClass(); |
$json->properties = new StdClass(); |
$json->geometry->type = "Point"; |
$json->properties->source = $this->sourceDonnees; |
$json->properties->source = $station['source']; |
$json->properties->typeSite = $station['type_site']; |
if ($this->sourceDonnees == 'floradata' && $station['type_site'] == 'COMMUNE') { |
$json->geometry->coordinates = array($station['lat_commune'], $station['lng_commune']); |
$json->geometry->coordinates = array($station['latitude'], $station['longitude']); |
$codeInsee = isset($station['code_insee']) ? $station['code_insee'] : substr($station['ce_zone_geo'],-5); |
$codeDepartement = $this->extraireCodeDepartement($codeInsee); |
$nom = ''; |
if ($station['source'] != 'floradata') { |
$json->properties->nom = trim($station['nom'])." ({$codeDepartement})"; |
} else { |
$json->geometry->coordinates = array($station['latitude'], $station['longitude']); |
$station['station'] = (is_null($station['station']) || strlen(trim($station['station'])) == 0) |
? $station['zone_geo'] : $station['station']; |
$nom = $station['type_site'] == 'COMMUNE' ? $station['zone_geo'] : $station['station']; |
$json->properties->nom = trim($nom)." ({$codeDepartement})"; |
} |
|
if ($this->sourceDonnees == 'floradata') { |
$json->properties->nom = $this->construireNomStationFloradata($station); |
} else { |
$codeDepartement = $this->extraireCodeDepartement($station['code_insee']); |
$json->properties->nom = trim($station['nom'])." ({$codeDepartement})"; |
} |
|
return $json; |
} |
|
private function construireNomStationFloradata($station) { |
$nom = ($station['type_site'] == 'COMMUNE') ? trim($station['nom_commune']) : trim($station['station']); |
$codeDepartement = $this->extraireCodeDepartement($station['ce_zone_geo']); |
if ($station['type_site'] == 'COMMUNE') { |
$nom = $station['zone_geo'] . " ({$codeDepartement})"; |
} else { |
if (strlen($nom) == 0) { |
$nom = 'station sans nom, '.trim($station['zone_geo']); |
} |
$nom .= " ({$codeDepartement})"; |
} |
return $nom; |
private function construireNomStation(& $station) { |
} |
|
private function extraireCodeDepartement($codeInsee) { |
$codeInsee = substr($codeInsee,-5); |
$codeDepartement = substr($codeInsee, 0 ,2); |
if (intval($codeDepartement) > 95) { |
substr($codeInsee, 0 ,3); |
$codeDepartement = substr($codeInsee, 0 ,3); |
} |
return $codeDepartement; |
} |
100,20 → 99,26 |
array(floatval($maille['sud']), floatval($maille['ouest'])) |
); |
$json->properties = new StdClass(); |
$json->properties->source = $this->sourceDonnees; |
$json->properties->source = array(); |
foreach ($maille['stations'] as $source => $nombreStations) { |
$json->properties->source[] = $source; |
} |
$json->properties->typeSite = 'MAILLE'; |
$json->properties->nombrePoints = $maille['points']; |
$json->properties->stations = $maille['stations']; |
$json->properties->observations = $maille['observations']; |
return $json; |
} |
|
|
public function formaterObservations($observations, $nomSite) { |
public function formaterObservations($observations) { |
//print_r($observations); exit; |
$objetJSON = new StdClass(); |
$objetJSON->site = trim($nomSite); |
$objetJSON->site = trim($observations[0]['nom_station']); |
$objetJSON->total = count($observations); |
|
$objetJSON->observations = array(); |
foreach ($observations as $observation) { |
$this->concatenerLieuObservation($observation); |
$observationJson = new stdClass(); |
foreach ($observation as $colonne => $valeur) { |
if ($colonne == 'nom_referentiel') { |
122,31 → 127,38 |
$observationJson->$colonne = is_string($valeur) ? trim($valeur) : $valeur; |
} |
} |
$this->formaterDateObservation($observationJson); |
$objetJSON->observations[] = $observationJson; |
} |
return $objetJSON; |
} |
|
private function genererUrlFicheEflore($observation) { |
private function formaterDateObservation(& $observation) { |
if (isset($observation->date) && strlen($observation->date) > 4) { |
$dateFormatee = preg_replace('/(\d{4})-(\d{2})-(\d{2})/', '$3/$2/$1', $observation->date); |
$observation->date = $dateFormatee; |
} |
} |
|
private function genererUrlFicheEflore(& $observation) { |
$url = null; |
if (strstr('bdtfx', $observation['nom_referentiel']) !== false) { |
if (strstr($observation['nom_referentiel'], 'bdtfx') !== false) { |
$url = 'http://www.tela-botanica.org/bdtfx-nn-'.$observation['nn']; |
} |
return $url; |
} |
|
public function formaterMaillesVides($mailles) { |
$objetJSON = new StdClass(); |
$objetJSON->type = "FeatureCollection"; |
$objetJSON->stats = new StdClass(); |
$objetJSON->stats->source = ''; |
$objetJSON->stats->formeDonnees = 'maille'; |
$objetJSON->stats->sites = 0; |
$objetJSON->features = array(); |
foreach ($mailles as $maille) { |
$objetJSON->features[] = $this->formaterMaille($maille); |
private function concatenerLieuObservation(& $observation) { |
$lieux = []; |
if (!is_null($observation['lieudit'])) { |
$lieux[] = $observation['lieudit']; |
} |
return $objetJSON; |
if (!is_null($observation['milieu'])) { |
$lieux[] = $observation['milieu']; |
} |
unset($observation['lieudit']); |
unset($observation['milieu']); |
$observation['lieu'] = implode(', ', $lieux); |
} |
|
} |