Subversion Repositories eFlore/Projets.eflore-projets

Compare Revisions

No changes between revisions

Ignore whitespace Rev 1090 → Rev 1091

/trunk/services/apidoc-header.md
New file
0,0 → 1,4
Autres API :
- [CEL](http://tela-botanica.net/doc/services/cel/)
- [COEL](http://tela-botanica.net/doc/services/coel/)
- [DEL](http://tela-botanica.net/doc/services/del/)
/trunk/services/apidoc.json
New file
0,0 → 1,18
{
"name": "eFlore",
"version": "0.1",
"description": "Documentation des web services d'eFlore",
"title": "eFlore - API",
"url" : "http://api.tela-botanica.org/service:eflore:0.1",
"template": {
"withCompare": false,
"withGenerator": true
},
"header": {
"title": "eFlore",
"filename": "apidoc-header.md"
},
"footer": {
"filename": "apidoc-footer.md"
}
}
/trunk/services/modules/0.1/nasa-srtm/Altitude.php
1,7 → 1,12
<?php
 
// declare(encoding='UTF-8');
/**
* Classe unique du web service nasa-srtm qui détermine l'altitude d'un point à partir de ses coordonnees
* @api {get} /nasa-srtm/altitude?lat=:lat&lon=:lon Donne l'altitude.
* @apiExample Exemple d'usage :
* curl -i "http://api.tela-botanica.org/service:eflore:0.1/nasa-srtm/altitude?lon=3.86589&lat=44.73702"
* @apiName GetNasaSrtm
* @apiGroup nasa-srtm
* @apiGroupDescription Le web service nasa-srtm/altitude détermine l'altitude d'un point à partir de ses coordonnees.
* Les coordonnees sont definies dans des fichiers au format HGT dans un dossier specifique
* (dont le chemin est defini dans le fichier de configuration propre au web service).
* Les ressources utilisees sont les donnees issues du programme SRTM-3 de la NASA qui couvre
11,32 → 16,36
* correspondant a des point precis. L'ecart entre chaque entree des tableaux est constant, ce qui
* permet de calculer la latitude et la longitude de chaque point. L'altitude du point le plus proche
* de celui passe en parametres sera renvoyee au client.
*
* Parametres du web service :
* - latitude : latitude du point dont on recherche les coordonnees
* - longitude : longitude du point dont on recherche les coordonnees
*
* @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)
*
* @apiParam {Number} lat Latitude au format décimal (séparateur ".").
* @apiParam {Number} lon Longitude au format décimal (séparateur ".").
*
* @apiSuccess {Number} altitude Altitude en mètre du point correspondant aux coordonées passées en paramètre.
* @apiSuccess {Number} latitude Latitude au format décimal (séparateur ".").
* @apiSuccess {Number} longitude Longitude au format décimal (séparateur ".").
*
* @category eFlore
* @package Services
* @subpackage Nasa-srtm
* @version 0.1
* @author Mathias CHOUET <mathias@tela-botanica.org>
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Aurelien PERONNET <aurelien@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>
* @copyright 1999-2014 Tela Botanica <accueil@tela-botanica.org>
*/
class Altitude {
 
 
class Altitude {
private $parametres = array();
private $ressources = array();
private $coordonnees = null;
private $fichierSrtm = '';
 
const LONGUEUR_COTE = 1201;
const OFFSET = 2;
 
 
public function consulter($ressources, $parametres) {
$this->ressources = $ressources;
$this->parametres = $parametres;
51,7 → 60,7
}
return $retour;
}
 
private function traiterCoordonnees() {
if ($this->estParametreExistant('lat') && $this->estParametreExistant('lon')) {
$longitude = $this->parametres['lon'];
69,15 → 78,15
throw new Exception($message, RestServeur::HTTP_CODE_CONTENU_REQUIS);
}
}
 
private function estParametreExistant($nomParametre) {
return in_array($nomParametre, array_keys($this->parametres));
}
 
private function estUnFloat($variable) {
return (preg_match("/^(-)?\d+(\.\d+)?$/", $variable) == 1);
}
 
private function verifierValiditeCoordonnees($longitude, $latitude) {
$longitude = floatval($longitude);
$latitude = floatval($latitude);
95,7 → 104,7
$this->coordonnees->latitude = $latitude;
}
}
 
private function rechercherFichierSrtm() {
$nomFichierSrtm = $this->construireNomFichierSrtm();
if (!file_exists($nomFichierSrtm)) {
105,7 → 114,7
$this->fichierSrtm = $nomFichierSrtm;
}
}
 
private function construireNomFichierSrtm() {
$latitudeEntier = abs(floor($this->coordonnees->latitude));
if ($latitudeEntier < 10) {
123,13 → 132,13
$nomFichierSrtm = $dossierSrtm.$suffixeLatitude.$latitudeEntier.$suffixeLongitude.$longitudeEntier.".hgt.zip";
return $nomFichierSrtm;
}
 
private function recupererAltitude() {
$zip = zip_open($this->fichierSrtm);
$fichier = zip_read($zip);
$donnees = zip_entry_read($fichier, zip_entry_filesize($fichier));
zip_close($zip);
 
$xDepart = floor($this->coordonnees->longitude);
$yDepart = floor($this->coordonnees->latitude);
$longitude = $this->coordonnees->longitude;
138,7 → 147,7
$positionY = (self::LONGUEUR_COTE-1) * (1 - $latitude + $yDepart);
$positionX = ($positionX + 0.5 > ceil($positionX)) ? ceil($positionX) : floor($positionX);
$positionY = ($positionY + 0.5 > ceil($positionY)) ? ceil($positionY) : floor($positionY);
 
$binaire = substr($donnees, ($positionY * self::LONGUEUR_COTE + $positionX) * self::OFFSET, self::OFFSET);
$this->coordonnees->altitude = current(unpack("n*", $binaire));
if (!$this->coordonnees->altitude) {
145,7 → 154,7
$this->coordonnees->altitude = 0;
}
}
 
}
 
?>
/trunk/services/apidoc-footer.md
New file
0,0 → 1,0
[Pour avoir plus d'information, veuillez nous contacter.](http://www.tela-botanica.org/widget:reseau:remarques?service=eflore&pageSource=http://tela-botanica.net/doc/services/eflore)
/trunk/services/.
Property changes:
Modified: svn:ignore
+.apidoc.json.swp
vendor
framework.php
+apidoc