Convertisseur lambert2 étendu en coordonnée géographique (longitude/latitude)

Description

Il s'agit d'un fichier php assez utile que j'ai du développer dans le cadre d'un projet qui permet, en lui fournissant les coordonnées X et Y en entré, d'avoir en entrée la longitude et la latitude.

Pour répondre à de nombreuses questions, je vais vous éclaircir sur les trois ligne suivante du fichier html:
>
>InitTab(a);
>var maCarte = new Carte(b, c, d, e);
>maCarte.addMarker(f, g, h, i, j, k, l, m);
>
>a: nombre de type de marqueur (donc de type de checkbox) différents. Dans mon exemple vous pouvez le voir, il y a 8 type de marqueur, 8 checkbox, 8 couleurs de marqueur.
>
>b: zoom initial de la carte
>
>c et d: longitude et latitude initial du centre de la carte (change ensuite car la carte se met automatiquement a un zoom et une position pour pouvoir afficher tout les marqueurs grâce a l'option s setBounds)
>
>e: type de la map (ROADMAPpar défaut, mais existe aussi HYBRID, SATELLITE ou TERRAIN (peut etre changer en cliquant sur les option en haut a droite de la carte affiché)
>
>f: contenu de l'info bulle qui s'affiche lorsque l'on clique sur le marqueur (ecrit en format html, on peut donc utiliser toute les balises html)
>
>g: information qui s'affiche sur le marqueur lors du passage de la souris sur celui ci
>
>h: image du marqueur. Peut etre soit une adresse URL qui pointe sur une image, soit une adresse local de votre ordinateur (/image/imafe.jpg)
>
>i et j: longitude et latitude du marqueur
>
>k: type du marqueur
>
>l: numero du type du marqueur (dans mon exemple il y a par exemple 5 marqueur de type 1, et il peut y avoir 90 marqueur de type 2....., donc il faut les numéroter pour pouvoir y avoir acces en javascrpit.
>
>m: booléen, true ou false, permet de choisir si on veut afficher le marqueur au chargement de la page
>
>Voila, j'espère que ces informations vous simplifieront la compréhension, si vous avez d'autre question, n'hésitez pas.

Source / Exemple :


<?php
/**

  • @author Florent Cardot
  • Y = Latitude
  • X = Longitude
  • /
/* $lon = 5802906.829; $lat = 6453674.479; $L = new Convert($lon, $lat); $L->convert();
  • /
class Convert { private $X; private $Y; private $Coord; private $Cm; private $n; private $XSm; private $YSm; private $a; private $f1; /**Contructeur (initialise les variables qui doivent l'être)**/ function __construct($X, $Y) { $this->Cm = 11745793.393435; $this->n = 0.728968627421412; $this->XSm = 600000; $this->YSm = 8199695.76800186; $this->a = 6378249.2000; $this->f1 = 6356515.0000; $this->X = $X - $this->XSm; $this->Y = $Y - $this->YSm; }//end function public function convertion() { $this->Coord[0] = self::ConvertX(); //X $this->Coord[1] = self::ConvertY(); //Y return $this->Coord; }//end function public function ConvertX() { $longitude = atan(-($this->X)/($this->Y)); $longitude = $longitude / $this->n; $longitude = $longitude * 180 / pi(); $constante = 2 + (20 / 60) + (14.025 / 3600); $longitude = $longitude + $constante; return($longitude); }//end function public function ConvertY() { $latitude = sqrt(pow($this->X, 2) + pow($this->Y, 2)); $f = ($this->a - $this->f1) / $this->a; $e² = 2 * $f - pow($f, 2); $e = sqrt($e²); $Latiso = log($this->Cm / $latitude) / $this->n; $latitude = tanh($Latiso); for ($i = 0; $i < 6; $i++) { $latitude = tanh($Latiso + $e * self::atanh($e * $latitude)); } $latitude = asin($latitude); $latitude = $latitude / pi(); $latitude = $latitude * 180; return($latitude); }//end function public function atanh($x) { $resultat = log((1 + $x) / (1 - $x)) / 2; return $resultat; }//end function }//end classs ?>

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.