New file |
0,0 → 1,52 |
<?php |
|
final class DonneesFloradata extends SourceDonnees { |
|
public function __construct($limitesCarte, $taxon, $source) { |
parent::__construct($limitesCarte, $taxon, $source); |
} |
|
final public function recupererStations() { |
$bdd = new Bdd(); |
$bdd->requeter("USE ".Config::get('bdd_nom_floradata')); |
$condition = "longitude IS NULL OR latitude IS NULL OR longitude=0 OR latitude=0 ". |
"OR longitude>180 OR latitude>90 OR mots_cles_texte LIKE '%sensible%'"; |
$requete = |
"SELECT COUNT(id_observation) AS nb_observations, ". |
"Floor(If({$condition},wgs84_latitude,latitude)*10)/10 AS lat, ". |
"Floor(If({$condition},wgs84_longitude,longitude)*10)/10 AS lng ". |
"FROM cel_obs LEFT JOIN cel_zones_geo cz ON ce_zone_geo=id_zone_geo ". |
"WHERE transmission=1 AND ".$this->construireWhereTaxon()." AND ". |
"(". |
"(". |
"longitude BETWEEN ".$this->limitesCarte['ouest']." AND ".$this->limitesCarte['est']." ". |
"AND latitude BETWEEN ".$this->limitesCarte['sud']." AND ".$this->limitesCarte['nord']. |
") OR (". |
"({$condition}) AND ". |
"wgs84_longitude BETWEEN ".$this->limitesCarte['ouest']." AND ".$this->limitesCarte['est']." ". |
"AND wgs84_latitude BETWEEN ".$this->limitesCarte['sud']." AND ".$this->limitesCarte['nord']. |
")". |
") ". |
"GROUP BY Floor(If({$condition},wgs84_latitude,latitude)*10)/10, Floor(If({$condition},wgs84_longitude,longitude)*10)/10 ". |
"ORDER BY lat DESC, lng ASC"; |
return $bdd->recupererTous($requete); |
} |
|
final protected function construireWhereTaxon() { |
$criteres = array(); |
$nomRang = $this->obtenirNomRang($this->taxon); |
if ($nomRang == 'famille') { |
$criteres[] = "famille=".$this->bdd->proteger($this->taxon['nom_sci']); |
} else { |
$criteres[] = "nt=".$this->taxon['num_taxonomique']; |
$sousTaxons = $this->recupererSynonymesEtSousEspeces(); |
foreach ($sousTaxons as $sousTaxon) { |
$criteres[] ="nt=".$sousTaxon['num_taxonomique']; |
} |
} |
return "(".implode(' OR ',array_unique($criteres)).")"; |
} |
|
} |
|
?> |