Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 1085 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1085 jpm 1
<?php
2
// declare(encoding='UTF-8');
3
 
4
// Inclusion des dépendances à Proj4Php.
5
require 'vendor/autoload.php';
6
 
7
/**
1090 jpm 8
 * @api {get} /coord-transfo/point?x=:x&y=:y&epsg-src=:epsg-src&epsg-dest=:epsg-dest Transforme des coordonnées.
9
 * @apiName GetCoordTransfo
10
 * @apiGroup coord-transfo
11
 * @apiGroupDescription Transforme les coordonnées X et Y d'un point en fonction d'un EPSG source (epsg-src) et d'un EPSG de
1085 jpm 12
 * destination (epsg-dest).
13
 * Exemples d'EPSG fonctionnels :
1090 jpm 14
 * - Lambert 93 : 'EPSG:2154'
15
 * - WGS84 : 'EPSG:4326'
1085 jpm 16
 *
1090 jpm 17
 * @apiParam {String} x info de l'axe des x (longitude).
18
 * @apiParam {String} y info de l'axe des y (latitude).
19
 * @apiParam {Number} epsg-src nombre entier correspondant au code EPSG du système de coordonnée source.
20
 * @apiParam {Number} epsg-dest nombre entier correspondant au code EPSG du système de coordonnée de destination.
21
 *
22
 * @apiSuccess {String} x info de l'axe des x (longitude) transformé.
23
 * @apiSuccess {String} y info de l'axe des y (latitude) transformé.
24
 * @apiSuccess {String} EPSG nombre entier correspondant au code EPSG du système de coordonnée de destination.
25
 *
1085 jpm 26
 * @category   eFlore
27
 * @package    Services
28
 * @subpackage Coord-transfo
29
 * @version    0.1
30
 * @author     Mathias CHOUET <mathias@tela-botanica.org>
31
 * @author     Jean-Pascal MILCENT <jpm@tela-botanica.org>
32
 * @author     Aurelien PERONNET <aurelien@tela-botanica.org>
33
 * @license    GPL v3 <http://www.gnu.org/licenses/gpl.txt>
34
 * @license    CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
35
 * @copyright  1999-2014 Tela Botanica <accueil@tela-botanica.org>
36
 */
37
class Point {
38
 
39
	private $parametres = array();
40
	private $ressources = array();
41
 
42
	private $coordonnees = array();
43
 
44
	public function consulter($ressources, $parametres) {
45
		$this->ressources = $ressources;
46
		$this->parametres = $parametres;
47
 
48
		$retour = null;
49
		try {
50
			$this->transformerCoordonnees();
51
			$retour = $this->coordonnees;
52
		} catch (Exception $erreur) {
53
			$retour = $erreur->getMessage();
54
		}
55
		return $retour;
56
	}
57
 
58
	private function transformerCoordonnees() {
59
		$proj4 = new Proj4php();
60
		$projSource = new Proj4phpProj('EPSG:'.$this->parametres['epsg-src'], $proj4);
61
		$projDestination = new Proj4phpProj('EPSG:'.$this->parametres['epsg-dest'], $proj4);
62
		$pointSrc = new proj4phpPoint($this->parametres['x'], $this->parametres['y']);
63
		$pointDest = $proj4->transform($projSource, $projDestination, $pointSrc);
64
 
65
		$this->coordonnees['x'] = round($pointDest->x, 5);
66
		$this->coordonnees['y'] = round($pointDest->y, 5);
67
		$this->coordonnees['EPSG'] = $this->parametres['epsg-dest'];
68
	}
69
}