Pages: 1
- Sujet précédent - Conversion de coordonnées géographiques (lat,long) en coordonnées x,y - Sujet suivant
#1 Thu 07 June 2007 18:05
- gheloise
- Juste Inscrit !
- Date d'inscription: 7 Jun 2007
- Messages: 7
Conversion de coordonnées géographiques (lat,long) en coordonnées x,y
Bonjour,
Je recherche un module en perl qui pourrait faire la conversion de coordonnées géographiques (lat,long) en coordonnées x,y.
J'ai une base de données qui me fournit la latitude et la longitude des villes.
Je souhaiterais récupérer des coordonnées en x et en y.
J'ai déjà visité un peu les forums à ce sujet, mais aucun ne propose de module en PERL et surtout de méthode digeste.
Si quelqu'un peut me venir en aide!
Bien sur s'il n'y a pas de module en PERL pouvant correspondent, je suis prenante pour tout autre solution.
Merci d'avance!!
Gabrielle
Hors ligne
#2 Fri 08 June 2007 09:28
- Lionel B
- Participant actif
- Lieu: Macon
- Date d'inscription: 5 Sep 2005
- Messages: 83
Re: Conversion de coordonnées géographiques (lat,long) en coordonnées x,y
bonjour,
En perl vous pouvez utiliser des exécutables systèmes.
je pense que vous pouvez utililser sans problème les programmes binaires livrés avec la librairie proj4 (commande proj ou cs2cs) pour réaliser des changements de projections.
cordialement
Lionel
Hors ligne
#3 Mon 11 June 2007 14:12
- gheloise
- Juste Inscrit !
- Date d'inscription: 7 Jun 2007
- Messages: 7
Re: Conversion de coordonnées géographiques (lat,long) en coordonnées x,y
Bonjour,
Merci pour ta réponse Lionel!!
Pour les coordonnées géographiques suivantes :
latitude = 48.816667 et longitude = 2.266667
J'obtiens des coordonnées en x et y mais en lambert 93 je crois.
x = 5715525.74450435 et y = 168079.951955856
et avec la variable init :
x = 2434149.98545833 et y = 938103.167756713
Alors que je les souhaiterais en Lambert 2 étendu.
Donc je rappelle à l'aide.
GH
Hors ligne
#4 Mon 11 June 2007 14:31
Re: Conversion de coordonnées géographiques (lat,long) en coordonnées x,y
Bonjour,
Si vous utilisez proj4, vous pouvez utiliser le code EPSG 27572 qui correspond au lambert 2 et.
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#5 Mon 11 June 2007 14:49
- gheloise
- Juste Inscrit !
- Date d'inscription: 7 Jun 2007
- Messages: 7
Re: Conversion de coordonnées géographiques (lat,long) en coordonnées x,y
Re
Je l'ai déja utilisé, voici mon code :
# To Convert from Lat/Long to LAMBERT:
#!/usr/bin/perl
use strict;
use Geo::Proj4;
my $proj = Geo::Proj4->new( proj => "lcc", ellps => "clrk80", init => "epsg:27572");
# , datum => NTF (Paris));
my $lat = 48.816667;
my $long = 2.266667;
my ($x, $y) = $proj->forward($lat, $long);
print "conversion to LAMBERT II : y is $y\n";
print "conversion to LAMBERT II : x is $x\n";
my ($lat, $long) = $proj->inverse($x, $y);
print "inverse conversion: lat is $lat \n" ;
print "inverse conversion: long is $long \n" ;
J'obtiens ce résultat avec :
x = 2434149.98545833 et y = 938103.167756713
C'est sur que je me rapproche du résultat voulu mais le "y" est un peu énorme.
A moins que je l'écris mal.
Des propositions??
GH
Hors ligne
#6 Mon 11 June 2007 15:09
Re: Conversion de coordonnées géographiques (lat,long) en coordonnées x,y
Bonjour,
À priori vous n'avez pas besoin de définir une proj, ellps et un datum quand vous utilisez le paramètre init :
my $proj = Geo::Proj4->new(init => "epsg:27572");
C'est juste une proposition
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#7 Mon 11 June 2007 15:14
- gheloise
- Juste Inscrit !
- Date d'inscription: 7 Jun 2007
- Messages: 7
Re: Conversion de coordonnées géographiques (lat,long) en coordonnées x,y
Merci pour le raccourci, c'est vrai quand on regarde bien le fichier epsg ça donne toutes les infos.
Et concernant, le résultat obtenu, qu'en pensez vous?
Y a i il une erreur quelque part???
Hors ligne
#8 Mon 11 June 2007 15:35
Re: Conversion de coordonnées géographiques (lat,long) en coordonnées x,y
Bonjour,
Où se situe ce point (sans indiscretion) ? Quelle version de proj4 utilisez vous ?
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#9 Mon 11 June 2007 16:25
- gheloise
- Juste Inscrit !
- Date d'inscription: 7 Jun 2007
- Messages: 7
Re: Conversion de coordonnées géographiques (lat,long) en coordonnées x,y
Re,
Le point correspond à la ville "issy les moulineaux".
Je pense que c'est la derniere : proj4 version 4.4.9.
Entre temps j'ai mis la derniere version 4.5.0.
Les résultats que j'obtiens sont differents:
y is 2426646.42005569
x is 766532.73567244
G.H.
Dernière modification par gheloise (Mon 11 June 2007 16:27)
Hors ligne
#10 Mon 11 June 2007 16:28
Re: Conversion de coordonnées géographiques (lat,long) en coordonnées x,y
Bonjour,
La dernière version de proj4 corrige un problème avec la projection lambert2 et. Votre longitude semble correcte, mais clairement, la latitude est fausse.
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#11 Mon 11 June 2007 16:34
- gheloise
- Juste Inscrit !
- Date d'inscription: 7 Jun 2007
- Messages: 7
Re: Conversion de coordonnées géographiques (lat,long) en coordonnées x,y
Re,
Ca c'est sur!!
Vous pensez que l'erreur vient de mon code ou d'ailleurs?
C'est frustrant d'être si pres du but.
G.H.
Hors ligne
#12 Mon 11 June 2007 16:56
Re: Conversion de coordonnées géographiques (lat,long) en coordonnées x,y
Bonjour,
Toujours une proposition, vous ne définissez pas de système de départ, comment proj "sait" que vous lui donnez des coordonnées en lat long (EPSG:4326) ?
[Edit] je viens de jeter un oeil sur la doc, votre syntaxe semble correcte et je reproduit le même problème en passant par la ligne de commande.
Y.
Dernière modification par Yves (Mon 11 June 2007 17:01)
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#13 Mon 11 June 2007 17:30
- gheloise
- Juste Inscrit !
- Date d'inscription: 7 Jun 2007
- Messages: 7
Re: Conversion de coordonnées géographiques (lat,long) en coordonnées x,y
Re,
j'ai trouvé ça mais je n'arrive pas à l'intégrer à mon code
my $from = Geo::Proj4->new("+proj=latlong +datum=NAD83");
my $to = Geo::Proj4->new("+proj=utm +zone=10 +datum=WGS84");
my $point = [ 1.12, 3.25 ]; # See Geo::Point
my $pr_point = $from->transform($to, $point);
G.H.
my $pr = $from->transform($to, [ $point1, $point2 ]);
my $pr_point1 = $pr->[0];
my $pr_point2 = $pr->[1];
Hors ligne
#14 Thu 14 June 2007 10:58
Re: Conversion de coordonnées géographiques (lat,long) en coordonnées x,y
Bonjour,
J'ai posé la question sur le site de proj, à priori la définition de la projection dans le code EPSG n'est pas correcte :-/ Voici la commande qui résoud le problème :
proj +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=2.33722917 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +pm=paris +units=m +no_defs -S -r
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#15 Thu 14 June 2007 14:09
Re: Conversion de coordonnées géographiques (lat,long) en coordonnées x,y
Bonjour,
2.266667°E et 48.816667°N (WGS84)
Pour contrôle, les coordonnées Lambert II étendu retournées par Circé 2000 (IGN) pour ces coordonnées géographiques :
N(m) = 2424254 et E(m) = 594868
le long de la D130 à Issy-les-Moulineaux.
Ceci dit, dans "Proj4text" de "spatial_ref_sys" (srid=27572, voir ci-dessous), au passage, lon_0 = 0 et pm=paris???
Les coordonnées géographiques sont tjrs exprimées en référence au méridien de Greenwich, non?
proj4txt pour srid =27572 dans spatial_ref_sys :
+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs
Cordialement
Dernière modification par ph_de_fr (Thu 14 June 2007 14:45)
Hors ligne
#16 Thu 14 June 2007 14:21
- fabrice_martin
- Juste Inscrit !
- Date d'inscription: 23 Feb 2007
- Messages: 1
Re: Conversion de coordonnées géographiques (lat,long) en coordonnées x,y
Bonjour,
Je ne partage pas l'avis selon lequel la projection dans l'EPSG est fausse. Celle avec lon_0=0 et pm=paris est juste, mais elle est destinée à être utilisé avec un outil prenant en compte le prime meridian (pm). Or, c'est une "feature" que proj et invproj ne le prennent pas en compte, alors que cs2cs le fait. Ainsi, vous obtenez le bon résultat avec cs2cs.
La "correction" que vous avez apportée à la projection EPSG revient à prendre en compte deux fois le prime meridian, une fois à travers le lon_0 et une deuxième avec le pm. Cela ne fonctionne pas avec cs2cs.
Ce qui marcherait dans tous les cas, c'est de mettre lon_0=2.33... et pas pm, mais ce n'est semble-t-il pas l'esprit des programmeurs de proj. Dans tous les cas, il vaut mieux utiliser cs2cs (cad pj_transform() ).
Cordialement,
Fabrice.
Hors ligne
#17 Thu 14 June 2007 19:30
Re: Conversion de coordonnées géographiques (lat,long) en coordonnées x,y
Bonjour,
concernant proj4, vous n'obtiendrez pas les mêmes coordonnées que CIRCE étant donné que CIRCE utilise une grille "made in france" différente des grilles utilisées par proj4 (l'une est basée sur un décalage des coordonnées cartésiennes, l'autre sur un décalage des coordonnées géographiques) en conséquence vous ne pourrez et ceci en récupérant les bons facteurs (ellipsoide et projection) qu'avoir la précision d'environ 2 mètres.
Pour information, vous devriez pouvoir trouver les bons paramètres sur le WEB : il faut redefinir l'elipsoide car en principe la lat et long sont en rapport à l'ellipsoide WGS84 et le lambert2 est en rapport avec l'eelipsoide Clarke80 (qui est un Clarke80 modifié par l'IGN donc vous ne trouverez les bons paramètres que chez eux -l'IGN). Donc vous ne pouvez utiliser proj mais devez utiliser cs2cs
Je sais également qu'un simili de grille existe et qu'il est possible de constituer une grille type NAD à partir de la grille IGN mais le système des grilles sur proj pose un gros problème en cela qu'il existe une multitude de version et que la grille n'est jamais adapté à la version que l'on a. (Bref, il est nécessaire de retoucher le code si on veut vraiment travailler avec des grilles)
Si vous ne trouvez pas les bons paramètres, "email me" !
(proj4 est tres bien et tres puissant mais comme beaucoup de libre, il n'est pas mis en valeur par une bonne documentation francaise)
Hors ligne
#18 Fri 15 June 2007 12:06
Re: Conversion de coordonnées géographiques (lat,long) en coordonnées x,y
Merci Fabrice et Christian pour vos commentaires (suis pas un pro des projections ni de proj d'ailleurs). Pour la documentation de proj, cela finira bien par arriver. Déjà celle de GDAL arrive
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#19 Mon 18 June 2007 21:23
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: Conversion de coordonnées géographiques (lat,long) en coordonnées x,y
PROJ4 est une librairie C faisant de la transfo de SRS, il se peut qu'on module perl existe (http://devpit.org/wiki/Perl/Geo-Proj4)
Sinon, GDAL/OGR; la lib SIG de reference, utilise proj4 et peut se piloter en python, c, java (sur) et peut etre en perl:
http://fedora.kiewel-online.de/extras/6 … perl.html.
Nicolas
Hors ligne
#20 Fri 29 June 2007 14:27
- lionel_
- Participant actif
- Lieu: meaux
- Date d'inscription: 20 Apr 2006
- Messages: 88
Re: Conversion de coordonnées géographiques (lat,long) en coordonnées x,y
il est possible en perl d'attaquer circe en ligne de dommande et en entrant lat/long en parametre sur la ligne d'options de la commande. Cette commande retourne les valeurs que vous avez besoin et qu il doit être possible de récuperer dans une varaible de perl ( pense qu'il faut jeter un coup d oeil du coté stdout stdin )
circebatch.exe [ -v ] -init fichier -mode mode -type type -sys1 code -sys2 code [ -alt type [ code ]] -typcoor1 type [ unité méridien | code ] -typcoor2 type [ unité méridien | code ] { -x x -y y -z z | -lon longitude -lat latitude [ -he hauteur ] | -E easting -N northing [ -H altitude ] | -f1 format fichier -f2 format fichier }
circe
-----------------------------------------------
pouvez vous me donner les valeur de retour dans lambert IIe par utilisation
1) de gdal
2) des coordonnées gps suivantes en entré wgs84 (x long3.506703, y lat50.385147)
pour information circe retourne x long 683381.47 y lat 2599518.375
Merci
Dernière modification par lionel_ (Fri 29 June 2007 14:30)
Hors ligne
#21 Sat 21 July 2007 20:03
- epierre
- Juste Inscrit !
- Date d'inscription: 21 Jul 2007
- Messages: 1
Re: Conversion de coordonnées géographiques (lat,long) en coordonnées x,y
Bonjour,
je suis intéressé moi aussi par scripter cette transformation, avez vous pu avancer sur cela ?
Emmanuel
Hors ligne
Pages: 1
- Sujet précédent - Conversion de coordonnées géographiques (lat,long) en coordonnées x,y - Sujet suivant