Subversion Repositories eFlore/Projets.eflore-projets

Compare Revisions

Ignore whitespace Rev 1089 → Rev 1090

/trunk/services/modules/0.1/coord-transfo/Point.php
New file
0,0 → 1,69
<?php
// declare(encoding='UTF-8');
 
// Inclusion des dépendances à Proj4Php.
require 'vendor/autoload.php';
 
/**
* @api {get} /coord-transfo/point?x=:x&y=:y&epsg-src=:epsg-src&epsg-dest=:epsg-dest Transforme des coordonnées.
* @apiName GetCoordTransfo
* @apiGroup coord-transfo
* @apiGroupDescription Transforme les coordonnées X et Y d'un point en fonction d'un EPSG source (epsg-src) et d'un EPSG de
* destination (epsg-dest).
* Exemples d'EPSG fonctionnels :
* - Lambert 93 : 'EPSG:2154'
* - WGS84 : 'EPSG:4326'
*
* @apiParam {String} x info de l'axe des x (longitude).
* @apiParam {String} y info de l'axe des y (latitude).
* @apiParam {Number} epsg-src nombre entier correspondant au code EPSG du système de coordonnée source.
* @apiParam {Number} epsg-dest nombre entier correspondant au code EPSG du système de coordonnée de destination.
*
* @apiSuccess {String} x info de l'axe des x (longitude) transformé.
* @apiSuccess {String} y info de l'axe des y (latitude) transformé.
* @apiSuccess {String} EPSG nombre entier correspondant au code EPSG du système de coordonnée de destination.
*
* @category eFlore
* @package Services
* @subpackage Coord-transfo
* @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 Point {
 
private $parametres = array();
private $ressources = array();
 
private $coordonnees = array();
 
public function consulter($ressources, $parametres) {
$this->ressources = $ressources;
$this->parametres = $parametres;
 
$retour = null;
try {
$this->transformerCoordonnees();
$retour = $this->coordonnees;
} catch (Exception $erreur) {
$retour = $erreur->getMessage();
}
return $retour;
}
 
private function transformerCoordonnees() {
$proj4 = new Proj4php();
$projSource = new Proj4phpProj('EPSG:'.$this->parametres['epsg-src'], $proj4);
$projDestination = new Proj4phpProj('EPSG:'.$this->parametres['epsg-dest'], $proj4);
$pointSrc = new proj4phpPoint($this->parametres['x'], $this->parametres['y']);
$pointDest = $proj4->transform($projSource, $projDestination, $pointSrc);
 
$this->coordonnees['x'] = round($pointDest->x, 5);
$this->coordonnees['y'] = round($pointDest->y, 5);
$this->coordonnees['EPSG'] = $this->parametres['epsg-dest'];
}
}