#1 Wed 29 October 2014 15:26
- loic.buscoz
- Juste Inscrit !
- Lieu: Rumilly
- Date d'inscription: 17 Apr 2013
- Messages: 8
- Site web
Conversion WGS84 vers RGF93 en PHP
Bonjour à toutes et à tous,
Pour les besoins d'une application sous MapguideOS, j'ai codé quelques lignes en PHP permettant de récupérer des coordonnées WGS84 passées via une URL, et de les convertir en RGF93. Si cela peut aider certains d'entre vous, voici la partie du code effectuant la conversion:
Code:
<?php // récupération des coordonnées $latitude= $_GET[latitude]; $longitude= $_GET[longitude]; // définition des constantes $c= 11754255.426096; //constante de la projection $e= 0.0818191910428158; //première exentricité de l'ellipsoïde $n= 0.725607765053267; //exposant de la projection $xs= 700000; //coordonnées en projection du pole $ys= 12655612.049876; //coordonnées en projection du pole // pré-calculs $lat_rad= $latitude/180*PI(); //latitude en rad $lat_iso= atanh(sin($lat_rad))-$e*atanh($e*sin($lat_rad)); //latitude isométrique //calcul $x= (($c*exp(-$n*($lat_iso)))*sin($n*($longitude-3)/180*PI())+$xs); $y= ($ys-($c*exp(-$n*($lat_iso)))*cos($n*($longitude-3)/180*PI())); ?>
En javascript, il faudrait utiliser Math. devant les fonctions : Math.cos(), Math.sin(), Math.atanh(), Math.exp(), Math.PI
Dernière modification par loic.buscoz (Wed 29 October 2014 15:27)
Loïc Buscoz, administrateur S.I.G. / CC Rumilly Terre de Savoie
Hors ligne
#2 Fri 12 December 2014 14:23
- sergemorvanenib
- Juste Inscrit !
- Date d'inscription: 20 Feb 2008
- Messages: 1
Re: Conversion WGS84 vers RGF93 en PHP
Bonjour,
J'ai exactement le problème inverse, je souhaite transformer des valeurs Latlon en RGF93 vers WGS84.
Avez vous aussi les constantes ?
Merci
Hors ligne
#3 Mon 15 December 2014 09:09
Re: Conversion WGS84 vers RGF93 en PHP
Bonjour,
Sinon vous avez aussi des adaptations de Proj4 pour PHP
https://github.com/jsor/proj4php
edit:
extrait de l'exemple
$proj4 = new Proj4php();
$projL93 = new Proj4phpProj('EPSG:2154',$proj4);
$projWGS84 = new Proj4phpProj('EPSG:4326',$proj4);
$pointSrc = new proj4phpPoint('652709.401','6859290.946');
echo "Source : ".$pointSrc->toShortString()." in L93 <br>";
$pointDest = $proj4->transform($projL93,$projWGS84,$pointSrc);
echo "Conversion : ".$pointDest->toShortString()." in WGS84<br><br>";
Dernière modification par Dof (Mon 15 December 2014 09:12)
Hors ligne
#4 Tue 16 December 2014 09:16
- loic.buscoz
- Juste Inscrit !
- Lieu: Rumilly
- Date d'inscription: 17 Apr 2013
- Messages: 8
- Site web
Re: Conversion WGS84 vers RGF93 en PHP
Merci Dof pour le partage. C'est effectivement bien plus pratique !
Pour répondre à Serge, si vous ne souhaitez pas utiliser ce que propose Dof, voici le code inverse (fait à la va-vite, le calcul doit pouvoir être épuré. En tous cas, le résultat est correct) :
Code:
<?php // récupération des coordonnées $X = $_GET[X]; $Y = $_GET[Y]; // définition des constantes $c= 11754255.426096; //constante de la projection $e= 0.0818191910428158; //première exentricité de l'ellipsoïde $n= 0.725607765053267; //exposant de la projection $xs= 700000; //coordonnées en projection du pole $ys= 12655612.049876; //coordonnées en projection du pole // pré-calcul $a=(log($c/(sqrt(pow(($X-$xs),2)+pow(($Y-$ys),2))))/$n); // calcul $LONGITUDE = ((atan(-($X-$xs)/($Y-$ys)))/$n+3/180*PI())/PI()*180; $LATITUDE = asin(tanh((log($c/sqrt(pow(($X-$xs),2)+pow(($Y-$ys),2)))/$n)+$e*atanh($e*(tanh($a+$e*atanh($e*(tanh($a+$e*atanh($e*(tanh($a+$e*atanh($e*(tanh($a+$e*atanh($e*(tanh($a+$e*atanh($e*(tanh($a+$e*atanh($e*sin(1))))))))))))))))))))))/PI()*180; ?>
Loïc Buscoz, administrateur S.I.G. / CC Rumilly Terre de Savoie
Hors ligne
#5 Fri 01 December 2017 14:09
- snike
- Participant actif
- Date d'inscription: 29 Mar 2007
- Messages: 114
Re: Conversion WGS84 vers RGF93 en PHP
Bonjour,
J'ai essayé le code avec les coordonnées de la Tour Eiffel (2.294529579762268,48.85824127776232) je trouve -1.362778205187 , -5.9838251971327
Savez-vous où je me trompe.
Merci par avance.
Hors ligne