Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 1085 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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