begin process at 2012 02 04 22:59:40
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > CONVERTISSEUR LAMBERT2 ÉTENDU EN COORDONNÉE GÉOGRAPHIQUE (LONGITUDE/LATITUDE)

CONVERTISSEUR LAMBERT2 ÉTENDU EN COORDONNÉE GÉOGRAPHIQUE (LONGITUDE/LATITUDE)


 Information sur la source

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths & Algorithmes Classé sous :lambert, coordonnées, géographique, convertion, algorithme Niveau :Débutant Date de création :26/08/2010 Date de mise à jour :04/09/2010 17:53:47 Vu / téléchargé :6 310 / 136

Auteur : varfendell

Ecrire un message privé
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 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

  • <?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
  • ?>
<?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
?>


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

04 septembre 2010 17:53:47 :
ajout d'information sur le fonctionnement du code suite a de nombreuse question en MP

 Sources de la même categorie

EXEMPLE D'APPLICATION DE L'ALGORITHME DE DIJKSTRA EN PHP par philtr8
CLEF POUR EAN 13 ET 14 par RaftY
FONCTION DE CALCUL DU NOMBRE DE DUEL UNIQUE POUR UN NOMBRE N... par mtrix000
Source avec Zip Source avec une capture TRIANGLE DE PASCAL ET SON ÉQUATION par vendeeHdLR89
FONCTION QUI VÉRIFIE SI L'ARGUMENT EST UN NOMBRE PREMIER par darkelda

 Sources en rapport avec celle ci

EXEMPLE D'APPLICATION DE L'ALGORITHME DE DIJKSTRA EN PHP par philtr8
FONCTION DE CALCUL DU NOMBRE DE DUEL UNIQUE POUR UN NOMBRE N... par mtrix000
Source avec une capture IMAGES GENETIQUES par coucou747
SUITE LOGIQUE par Palleas_44
Source avec Zip LABYRINTHES EN PHP (GD + HTML) GÉNÉRATION + RÉSOLUTION par nax333

Commentaires et avis

Commentaire de alfrai le 27/08/2010 12:21:20

Salut varfendell et merci pour la source.

Comment je peux utiliser ce script ?


Commentaire de varfendell le 27/08/2010 12:42:57

oups, trompé, pour cette source il te suffit donc de la télécharger et suivant ton besoin l'utiliser comme suis:

pour un usage exclusif du fichier, decomente cette partie:
# $lon = 5802906.829;
# $lat = 6453674.479;
#
# $L = new Convert($lon, $lat);
# $L->convert();

et remplace les valeur lon et lat par tes valeurs en lambert2 étendu. ajoute print_r devant $L->convert();
==> print_r($L->convert());

sinon pour l'utiliser en l'appelant d'un autre fichier php, procede comme suis:

ajoute ces lignes dans ton code apres avoir inclu le fichier:


$convertion = new Convert(5802906.829, 6453674.479);
$newCoord = $convertion->convertion();
$Longitude = $newCoord[0]; //X
$Latitude = $newCoord[1];  //Y

Commentaire de LeFauve42 le 30/08/2010 11:34:59 8/10

Ca a l'air interessant, mais est-ce qu'une simple fonction ne serait pas plus pratique qu'une classe ici ?

Commentaire de varfendell le 30/08/2010 12:21:33

Disons que j'ai pour habitude de décomposer au maximum mon code afin de pouvoir faire des évolution facilement. Dans le cas de cette fonction, on pourra modifier le code pour ajouter d'autre type de convertisseur (lambert1, lambert2, lambert3, ...)

De plus le faite de créer une classe à l'avantage qu'on pourra l'utiliser pour plusieurs application.

Bien sur pour la rapidité des calcul, il est en effet préférable de développer cette algorithme comme une fonction à l'intérieur même de notre application.

Commentaire de Pedeboy le 31/08/2010 17:43:45

Super source !! mais comment peut-on adapter le code pour non pas du lambert 2 étendu mais du lambert 2 centre ???

Commentaire de varfendell le 31/08/2010 18:22:09

Malheureusement c'est une question d'algorithme....il faut changer les calcul. Je ne les connais pas, mais je vais essayer de les trouver, d'autant plus qu'il semblerait que l'algorithme que j'utilise decale de 100m vers la droite...ma source ne devait pas être exacte :(

Je vais vérifier ça demain. J'en profiterait pour trouver l'algorithme du lambert 2 centre

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Convertion nom==>chiffre [ par goliath2002 ] Bonjour, Je voudrais construire un formulaire tout a fait special.Permettre a l'utilisateur d'entrer dans un formulaire un "nom" et de trouver un chif Algorithme de tri ... [ par LocalStone ] Salut à tous ! Il y a peut-être 1 mois et demi, j'ai lu un article - ou plutôt un tutorial - sur comment mettre en place un algorithme de tri automati convertion de format de date [ par fonetiklilian ] Bonjour a vous...Je cherche juste a realiser une petite fonction qui convertit l'affichage d'une date au format dd/mm/yyyy au format yyyy-mm-ddMerci p Convertion html > xhtml [ par JoJo738 ] Bonjour, Je cherche &#224; recuperer les atributs des balises html, pour les ajouter dans un atribut style="" Algorithmique ... [ par LocalStone ] Salut &#224; tous ...Alors voil&#224;, j'ai eu une id&#233;e et je cherche des personnes suc&#233;ptibles de pouvoir m'aider &#224; cr&#233;er une tel recuperation coordonnées image dans base de données (suite) [ par elodielole ] dsl j'ai oubli&#233; de mettre mon fichier examen.css : form { position: absolute; top: 30%; right: 10%; width: 50px; background-color: salmon; border aide pour un algorithme ! [ par shaoling ] Bonjour, j'ai une &#233;nigme &#224; r&#233;soudre, et pour cela je compte bien m'aider du php ! Voici l'&#233;nigme :Pour la somme de 5 euros, on a a Convertion de date [ par kishkaya ] J'essaye de convertir le format d'une date en timestamp UNIX j'ai essay&#233; avec mktime mais j'y arrive vraiment pas ma date est de la forme jj/mm/a un tit casse tête de pondération ... [ par caviar ] Salut ... alors voila je planche sur un truc en ce moment et j'ai un e problématique peu courante ...dans une BDD j'ai deux champscoord_x et coord_y . convertion XML vers BD [ par agatha55 ] Bonjour,J'aimerai convertir un fichier XML vers une BD (Sql). Comment faire ?Merci beaucoup


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,092 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales