Blame | Last modification | View Log | RSS feed
<?phpclass FormateurJson {public function __construct() {}public function formaterStations($stations) {$objetJSON = new StdClass();$objetJSON->type = "FeatureCollection";$objetJSON->features = array();if (count($stations) == 0) {return $objetJSON;}foreach ($stations as $station) {$stationJSON = NULL;// construction d'un objet feature adapte a la structure des donnees spatialesif (isset($station['sud'])) {$stationJSON = $this->formaterMaille($station);} else {$stationJSON = $this->formaterPoint($station);}if (!is_null($stationJSON)) {$objetJSON->features[] = $stationJSON;}}return $objetJSON;}private function formaterPoint($station) {$json = new StdClass();$json->type = "Feature";$json->geometry = new StdClass();$json->properties = new StdClass();$json->geometry->type = "Point";if (is_null($station['latitude']) || is_null($station['longitude'])) {$json->properties->typeSite = 'COMMUNE';$json->geometry->coordinates = array($station['lat_commune'], $station['lng_commune']);} else {$json->properties->typeSite = 'STATION';$json->geometry->coordinates = array($station['latitude'], $station['longitude']);}$nom = $json->properties->typeSite == 'COMMUNE' ? $station['nom_commune'] : $station['station'];$nomDefaut = 'station sans nom';if ($json->properties->typeSite == 'COMMUNE') {$ce = substr($station['ce_zone_geo'],-5);$codeDept = ((int)substr($ce, 0, 2) > 95 ? substr($ce, 0, 3) : substr($ce, 0, 2));$nom = $station['zone_geo'] . " ($codeDept)";} else {if (strlen(trim($station['zone_geo']))==0) {$nom = $nomDefaut;} else {$nom = $station['zone_geo'];if (strlen(trim($station['ce_zone_geo']))!=0) {$ce = substr($station['ce_zone_geo'],-5);$nom .= ' ('.((int)substr($ce,0,2)>95 ? substr($ce,0,3) : substr($ce,0,2)).')';}}}$json->properties->nom = $nom;return $json;}private function formaterMaille($maille) {if ($maille['points'] == 0) {return null;}$json = new StdClass();$json->type = "Feature";$json->geometry = new StdClass();$json->geometry->type = "Polygon";$json->geometry->coordinates = array(array(floatval($maille['sud']), floatval($maille['ouest'])),array(floatval($maille['sud']), floatval($maille['est'])),array(floatval($maille['nord']), floatval($maille['est'])),array(floatval($maille['nord']), floatval($maille['ouest'])),array(floatval($maille['sud']), floatval($maille['ouest'])));$json->properties = new StdClass();$json->properties->typeSite = $maille['type_site'];$json->properties->nombrePoints = $maille['points'];return $json;}public function formaterObservations($observations, $nomSite) {$objetJSON = new StdClass();$objetJSON->site = $nomSite;$objetJSON->total = count($observations);$objetJSON->observations = array();foreach ($observations as $observation) {$observationJson = new stdClass();foreach ($observation as $colonne => $valeur) {$observationJson->$colonne = $valeur;}$objetJSON->observations[] = $observationJson;}return $objetJSON;}}?>