Bienvenue! Inscrivez-vous et rejoignez notre communauté :)
  • Login:

Bienvenue sur Forum SIG - Systèmes d'Information Géographique et Géomatique.

Bienvenue sur le forumSIG. S'il s'agit de votre première visite, assurez vous de faire une recherche préalable dans les FAQ SIG. Vous devez vous inscrire avant de pouvoir poster.

Affichage des résultats 1 à 9 sur 9
  1. #1

    Date d'inscription
    juillet 2005
    Localisation
    Lyon
    Emploi
    Etudiant en chimie
    Âge
    35
    Messages
    6

    Par défaut [Conversion] Lat/Long vers Lambert 93

    Bonjour,

    Je cherche depuis un bon moment à convertir des données géographiques en coordonnées lambert-93. sans trop de succès.

    J'ai trouvé ceci:
    http://mathworld.wolfram.com/Lambert...rojection.html

    Mais je n'obtient pas les bons résultats, est-ce que c'est les bonnes formules ? en quel unités je dois introduire mes données ?

    Je ne veux pas de logiciels mais les formules mathématiques. c'est pour ajouté un petit module de cartographie à un script php. j'ai la carte en lambert-93 et je peux placer les points avec les coordonnées lambert-93. Il ne me manque plus que la conversion des coordonnées (lat,long).

    Merci,
    Pascal

    EDIT ADMIN - Merci de faire attention où vous postez merci !
    Dernière modification par Le Docteur ; 10/07/2005 à 22h40.

  2. #2

    Date d'inscription
    juillet 2005
    Localisation
    Lyon
    Emploi
    Etudiant en chimie
    Âge
    35
    Messages
    6

    Par défaut

    Désolé pour l'erreur de POST, La première fois que j'ai vu le mot SIG c'est la semaine dernière... Mes derniers cours de géo remonte au lycée.

    Je suis en DEA de chimie et je fais un script de généalogie en PHP ou j'ajoute un petit module de cartographie. Ce qui est le chemin normal pour arriver sur ce forum...

  3. #3

    Date d'inscription
    juillet 2005
    Localisation
    Lyon
    Emploi
    Etudiant en chimie
    Âge
    35
    Messages
    6

    Par défaut

    J'ai trouvé les formules adéquates, en fait c'était sur le site de l'ign mais je l'avais jamais vu:
    http://www.ign.fr/affiche_rubrique.asp?rbr_id=1700&lng_id=FR
    J'ai galérer toute la journée pour arriver calculer mes coordonnées, mais ca marche maintenant!

    Le principal:
    Code:
       /**** Conversion latitude,longitude en coordonée lambert 93 ****/
    	// Projection conforme sécante, algo détailler dans NTG_71.pdf : http://www.ign.fr/affiche_rubrique.asp?rbr_id=1700&lng_id=FR
    	//  > ACCUEIL > L'offre IGN Pro > Géodésie > RGF93 > Outils 
    	
    	//variables:
    	$a=6378137; //demi grand axe de l'ellipsoide (m)
    	$e=0.08181919106; //première excentricité de l'ellipsoide
    	$l0=$lc=deg2rad(3);
    	$phi0=deg2rad(46.5); //latitude d'origine en radian
    	$phi1=deg2rad(44); //1er parallele automécoïque
    	$phi2=deg2rad(49); //2eme parallele automécoïque
    	
    	$x0=700000; //coordonnées à l'origine
    	$y0=6600000; //coordonnées à l'origine
    	
    	$phi=deg2rad($latitude);
    	$l=deg2rad($longitude);
    	
    	//calcul des grandes normales
    	$gN1=$a/sqrt(1-$e*$e*sin($phi1)*sin($phi1));
    	$gN2=$a/sqrt(1-$e*$e*sin($phi2)*sin($phi2));
    	
    	//calculs des latitudes isométriques
    	$gl1=log(tan(pi()/4+$phi1/2)*pow((1-$e*sin($phi1))/(1+$e*sin($phi1)),$e/2));
    	$gl2=log(tan(pi()/4+$phi2/2)*pow((1-$e*sin($phi2))/(1+$e*sin($phi2)),$e/2));
    	$gl0=log(tan(pi()/4+$phi0/2)*pow((1-$e*sin($phi0))/(1+$e*sin($phi0)),$e/2));
    	$gl=log(tan(pi()/4+$phi/2)*pow((1-$e*sin($phi))/(1+$e*sin($phi)),$e/2));
    	
    	//calcul de l'exposant de la projection
    	$n=(log(($gN2*cos($phi2))/($gN1*cos($phi1))))/($gl1-$gl2);//ok
    	
    	//calcul de la constante de projection
    	$c=(($gN1*cos($phi1))/$n)*exp($n*$gl1);//ok
    	
    	//calcul des coordonnées
    	$ys=$y0+$c*exp(-1*$n*$gl0);
    	
    	$x93=$x0+$c*exp(-1*$n*$gl)*sin($n*($l-$lc));
    	$y93=$ys-$c*exp(-1*$n*$gl)*cos($n*($l-$lc));
    Dernière modification par pascalp ; 13/09/2005 à 11h30.

  4. #4

    Date d'inscription
    juillet 2011
    Messages
    1

    Par défaut

    N'ayant pas trouvé d'algo réalisant cette conversion en perl alors que j'en avais besoin, j'ai bêtement traduit le code de pascalP du php vers le perl.

    Si cela peut un jour servir à quelqu'un je le met ici à disposition :

    Code:
    use Math::Trig;
    
    sub convertirGeo2Lambert83{
       #Conversion latitude,longitude en coordonée lambert 93 
       # Projection conforme sécante, algo détaillé dans NTG_71.pdf : http://www.ign.fr/affiche_rubrique.asp?rbr_id=1700&lng_id=FR
       # > ACCUEIL > L'offre IGN Pro > Géodésie > RGF93 > Outils
       #Algo de pascalP récupéré sur http://www.forumsig.org/showthread.php?t=3239 et traduit du php vers le perl
      
    my ($latitude,$longitude) = @_;
    
    
       #variables:
       my $a=6378137;       #demi grand axe de l'ellipsoide (m)
       my $e=0.08181919106;    #première excentricité de l'ellipsoide
       my $l0= my $lc=deg2rad(3);
       my $phi0=deg2rad(46.5); #latitude d'origine en radian
       my $phi1=deg2rad(44);   #1er parallele automécoïque
       my $phi2=deg2rad(49);   #2eme parallele automécoïque
    
       my $x0=700000; #coordonnées à l'origine
       my $y0=6600000; #coordonnées à l'origine
    
       my $phi=deg2rad($latitude);
       my $l=deg2rad($longitude);
    
       #calcul des grandes normales
       my $gN1=$a/sqrt(1-$e*$e*sin($phi1)*sin($phi1));
       my $gN2=$a/sqrt(1-$e*$e*sin($phi2)*sin($phi2));
    
       #calculs des latitudes isométriques
       my $gl1=log(tan(pi()/4+$phi1/2)*(((1-$e*sin($phi1))/(1+$e*sin($phi1)))**($e/2)));
       my $gl2=log(tan(pi()/4+$phi2/2)*(((1-$e*sin($phi2))/(1+$e*sin($phi2)))**($e/2)));
       my $gl0=log(tan(pi()/4+$phi0/2)*(((1-$e*sin($phi0))/(1+$e*sin($phi0)))**($e/2)));
       my $gl=log(tan(pi()/4+$phi/2)*(((1-$e*sin($phi))/(1+$e*sin($phi)))**($e/2)));
    
       #calcul de l'exposant de la projection
       my $n=(log(($gN2*cos($phi2))/($gN1*cos($phi1))))/($gl1-$gl2);
    
       #calcul de la constante de projection
       my $c=(($gN1*cos($phi1))/$n)*exp($n*$gl1);
    
       #calcul des coordonnées
       my $ys=$y0+$c*exp(-1*$n*$gl0);
    
       my $x93=$x0+$c*exp(-1*$n*$gl)*sin($n*($l-$lc));
       my $y93=$ys-$c*exp(-1*$n*$gl)*cos($n*($l-$lc));
       
       return ($x93, $y93);
    
    }

  5. #5

    Date d'inscription
    août 2011
    Messages
    1

    Par défaut

    Bonjour à tous,

    je recherche les variables pour effectuer des convertions en Lambert 93 mais pour l'Italie.

    quelqu'un connait-il les variable a modifier ?

    Code:
    //système WGS84
    $a=6378137; //demi grand axe de l'ellipsoide (m)
    $e=0.08181919106; //première excentricitè de l'ellipsoide
    
    //paramètres de projections
    $l0=$lc=deg2rad(3); //longitude de rèfèrence
    $phi0=deg2rad(46.5); //latitude d'origine en radian
    $phi1=deg2rad(44); //1er parallele automatique
    $phi2=deg2rad(49); //2eme parallele automatique
    
    $x0=700000; //coordonnées à  l'origine
    $y0=6600000; //coordonnées à  l'origine

  6. #6

    Date d'inscription
    août 2013
    Messages
    1

    Par défaut Re : [Conversion] Lat/Long vers Lambert 93

    Bonjour,

    J'avais besoin de la formule de conversion latitude/longitude to Lambert93 en C++, et je suis tombé sur ce post.
    Merci donc du temps gagné, voici la version du code en C++:


    //a modifier
    double latitude = 49.036705880377674;
    double longitude = 2.046720988527103;


    //variables:
    float a = 6378137; //demi grand axe de l'ellipsoide (m)
    float e = 0.08181919106; //première excentricité de l'ellipsoide
    float lc = osg::DegreesToRadians(3.f);
    float l0 = osg::DegreesToRadians(3.f);
    float phi0 = osg::DegreesToRadians(46.5f); //latitude d'origine en radian
    float phi1 = osg::DegreesToRadians(44.f); //1er parallele automécoïque
    float phi2 = osg::DegreesToRadians(49.f); //2eme parallele automécoïque

    float x0 = 700000; //coordonnées à l'origine
    float y0 = 6600000; //coordonnées à l'origine

    float phi = osg::DegreesToRadians(latitude);
    float l = osg::DegreesToRadians(longitude);

    //calcul des grandes normales
    float gN1 = a/sqrt( 1 - e * e * sin(phi1) * sin( phi1 ) );
    float gN2 = a/sqrt( 1 - e * e * sin(phi2) * sin( phi2 ) );

    const double pi = 3.14159265358979323846;
    //calculs des latitudes isométriques
    float gl1 = log( tan( pi / 4 + phi1 / 2) * pow( (1 - e * sin( phi1 ) ) / ( 1 + e * sin( phi1 ) ), e / 2) );
    float gl2 = log( tan( pi / 4 + phi2 / 2) * pow( (1 - e * sin( phi2 ) ) / ( 1 + e * sin( phi2 ) ), e / 2) );
    float gl0 = log( tan( pi / 4 + phi0 / 2) * pow( (1 - e * sin( phi0 ) ) / ( 1 + e * sin( phi0 ) ), e / 2) );
    float gl = log( tan( pi / 4 + phi / 2) * pow( (1 - e * sin( phi ) ) / ( 1 + e * sin( phi ) ), e / 2) );

    //calcul de l'exposant de la projection
    float n = ( log( ( gN2 * cos( phi2 ) ) / ( gN1 * cos( phi1 )))) / ( gl1 - gl2);//ok

    //calcul de la constante de projection
    float c = (( gN1 * cos( phi1 )) / n) * exp( n * gl1);//ok

    //calcul des coordonnées
    float ys = y0 + c * exp( -1 * n * gl0);

    float x93 = x0 + c * exp( -1 * n * gl) * sin( n * ( l - lc));
    float y93 = ys - c * exp( -1 * n * gl) * cos( n * ( l - lc));


    ps: désolé pour la mauvaise mise en forme, les tabulations ne sont pas très bien passées...
    Dernière modification par Le Docteur ; 08/08/2013 à 19h29.

  7. #7
    Admin' Général Supporter(rice)

    Date d'inscription
    septembre 2003
    Localisation
    ...dans mon TARDIS
    Organisme
    Bad Wolf
    Âge
    37
    Messages
    9 598

    Mes réseaux sociaux

    Follow Le Docteur On Twitter Add Le Docteur on Google+

    Par défaut Re : [Conversion] Lat/Long vers Lambert 93

    Merci beaucoup pour le suivi, j'ai mis à jour la balise CODE avec XCODE pour une meilleure visibilité
    >>>>>>>> Pas d'assistance technique par email ou mp : le forum est là pour ça <<<<<<<<<<<<


  8. #8

    Date d'inscription
    janvier 2014
    Messages
    3

    Par défaut Re : [Conversion] Lat/Long vers Lambert 93

    Bonjour ,

    Je cherche également à passer de WGS84 à Lambert93. J'ai utilisé le code de Xitarem, mais j'obtiens un décalage de 60 cm par rapport à CIRCE pour les coordonnées WGS84 : 44.42301506 -0.4589726 63.4281
    Comment expliquer ce décalage ?
    CIRCE : E= 424715.747 m, N=6375360.423 m
    CODE C++ : E = 424715.71875 m, N=6375361 m

    Du coup ça ne me convient pas, je cherche une autre solution:
    - Lancer CIRCE en batch : il existe de la doc sur le batch pour CIRCE ? Je n'ai pas trouvé !
    - Utilisation de proj4 : j'ai essayé avec la projection de départ : str_projDepart = "+proj=latlong ";
    str_projDepart += "+proj=latlong ";
    str_projDepart += "+datum=WGS84 ";
    str_projDepart += "+ellps=WGS84 ";
    str_projDepart += "+nodefs";
    Et la projection d'arrivée :
    str_projArrivee= "+proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs";
    Mais les résultats ne sont pas bons du tout (quelques dizaines de mètres pour l'un environ 20 000 m pour l'autre).

    Je vais créer deux nouveaux posts pour le batch avec CIRCE et proj4, j'ai du mal à trouver les infos sur le net.

    Merci pour votre aide.

  9. #9

    Date d'inscription
    avril 2005
    Localisation
    Isère
    Emploi
    Géomètre
    Organisme
    Etat
    Messages
    61

    Par défaut Re : [Conversion] Lat/Long vers Lambert 93

    Bonjour,

    Un petit coup de google devrait te renseigner sachant que les deux solutions sont possibles : par circe en ligne de commande et par proj4

    pour la première, c'est plus rapide à mettre en oeuvre, tu devrais trouver cela sur le site de l'IGN
    pour la seconde, il te faut récupérer la grille de l'IGN au format exploitable par proj4 (NTV2 entre autre)

    tu ne peux avoir de précision au dela de 2 m en faisant une conversion standard sans grille

    un lien qui peut t'aider : http://geodesie.ign.fr/contenu/fichi...GrilleNTV2.pdf

    cordialement

 

 

Discussions similaires

  1. [MapInfo 7.x] Problème de conversion Lat/Long en Lambert II
    Par Cuchlainn dans le forum Assistance Technique
    Réponses: 5
    Dernier message: 25/05/2011, 15h40
  2. [ArcGIS 9.x] Conversion Lambert II étendu vers Lambert II carto
    Par Hélène dans le forum Assistance Technique
    Réponses: 8
    Dernier message: 04/08/2009, 16h25
  3. [PHP] Conversion coord. Lambert II étendu vers Lat/Long
    Par fichtre! dans le forum Assistance et Programmation
    Réponses: 4
    Dernier message: 18/05/2006, 19h01
  4. [Conversion] Lat/Long vers UTM
    Par Nico dans le forum Assistance et Programmation
    Réponses: 2
    Dernier message: 22/06/2005, 09h04
  5. [Conversion] Lat/Long vers Geometryfromtext
    Par donovan78 dans le forum Assistance et Programmation
    Réponses: 5
    Dernier message: 19/06/2005, 21h53

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •