Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#1 Mon 10 July 2023 13:48

zedrummer
Juste Inscrit !
Date d'inscription: 10 Jul 2023
Messages: 2

Mathématique de conversion long lat wgs84 en XY lambert 93- RGF93

Bonjour
Certes ce post est très vieux et a été répondu, mais comme il m'a servi de base pour trouver la solution, je me permets de donner ici du code en C# (qui ne doit donc pas être très loin du code en C) pour convertir dans les 2 sens entre (lat, long) et Lambert-93:

Code:

        const double C = 11754255.426096; //constante de la projection
        const double E = 0.0818191910428158; //première excentricité de l'ellipsoïde
        const double N = 0.725607765053267; //exposant de la projection
        const double Xs = 700000.0; //coordonnées en projection du pole
        const double Ys = 12655612.049876; //coordonnées en projection du pole
        const double L0 = 3; // longitude de référence

        public void ConvertLatLongToLambert93(double lat, double lon, ref double px, ref double py)
        {
            double lat_rad = lat / 180 * Math.PI;
            double lat_iso = Math.Atanh(Math.Sin(lat_rad)) - E * Math.Atanh(E * Math.Sin(lat_rad)); //latitude isométrique
            px = ((C * Math.Exp(-N * (lat_iso))) * Math.Sin(N * (lon - L0) / 180 * Math.PI) + Xs);
            py = (Ys - (C * Math.Exp(-N * (lat_iso))) * Math.Cos(N * (lon - L0) / 180 * Math.PI));
        }

        public void ConvertLambert93ToLatLong(double px, double py, ref double lat, ref double lon)
        {
            double x = px - Xs;
            double y = py - Ys;
            double latiso = Math.Log(C / Math.Sqrt((x * x) + (y * y))) / N;
            double sinPhi = Math.Tanh(latiso + E * Math.Atanh(E * Math.Sin(1)));
            for (int i = 0; i < 6; i++) sinPhi = Math.Tanh(latiso + E * Math.Atanh(E * sinPhi));
            lat = Math.Asin(sinPhi) * 180.0 / Math.PI;
            lon = ((Math.Atan(-x / y)) / N + L0 / 180.0 * Math.PI) / Math.PI * 180.0;
        }

Dernière modification par zedrummer (Mon 10 July 2023 16:40)

Hors ligne

 

#2 Mon 10 July 2023 15:01

zedrummer
Juste Inscrit !
Date d'inscription: 10 Jul 2023
Messages: 2

Re: Mathématique de conversion long lat wgs84 en XY lambert 93- RGF93

Par contre, je suis très surpris, je lis partout que les cartes aéronautiques auxquelles on a accès sont en lambert (https://coursdubia.pagesperso-orange.fr/NSR%202.pdf) et quand je vois par exemple la TMA de LFSB ici https://www.dircam.dsae.defense.gouv.fr … e_lfsb.pdf (page "AD 2 LFSB AMSR 01" vers le milieu du pdf) et que j'utilise les coordonnées de cette carte que je convertis en Lambert, si je dessine, moi j'arrive à ça:
[img]https://i.servimg.com/u/f88/17/72/22/03/scree306.png[/img]

Ça parait plus écrasé, ce qui fait que si je traçais des cercles concentriques sur l'ARP, ce serait complètement faux. Quelqu'un peut m'aiguiller sur la conversion utilisée dans la carte du PDF, SVP?

Dernière modification par zedrummer (Mon 10 July 2023 15:05)

Hors ligne

 

Pied de page des forums

Powered by FluxBB