#1 Tue 10 February 2009 14:20
- Dredd
- Participant occasionnel
- Date d'inscription: 10 Feb 2009
- Messages: 11
[MapGuide OS 2.0]Convertir lat/lon
Bonjour,
Je suis un petit nouveau dans le développement d'applications SIG web.
Je développe actuellement un widget pour fusion, ce widget à pour but de récupérer des données au format JSON venant du service de GeoCoding de google map.
Jusque là, pas de problèmes, je récupère parfaitement les données venant du service google mais je ne sais pas comment convertir les données reçues en un point exploitable pour ma map.
Les données récupérée sont par ex :
Code:
"ExtendedData": { "LatLonBox": { "north": 50.4107476, "south": 50.4044524, "east": 3.8541890, "west": 3.8469159 } }, "Point": { "coordinates": [ 3.8494595, 50.4084872, 0 ] }
Comment exploiter ces données sur une carte qui commence à 0,0?
Merci d'avance pour votre aide.
Hors ligne
#2 Tue 10 February 2009 17:25
- poulet1212
- Participant actif
- Date d'inscription: 10 Apr 2007
- Messages: 74
Re: [MapGuide OS 2.0]Convertir lat/lon
Bonjour Dredd,
les coordonnées qui te sont fournies par le service google Maps sont des coordonnées non-projetées lat/long (EPSG:3785). Mais tout d'abord, comme tu sembles arriver dans le monde SIG, je vais essayer de faire une petite analogie pour expliquer en gros les systèmes de projections:
En fait, c'est comme l'argent. Si on veut changer de l'argent, on doit connaitre la devise source, la devise cible et le taux de change. Pour les transformations, il faut connaître le système source, le système cible et la transformation à appliquer...
C'est un peu simpliste mais efficace. Donc voilà ce qu'on connais:
-Système source: EPSG:3785
-Système cible: Celui de ta map!
Dès le moment où on connais ces 2 systèmes, l'Api est en mesure de transformer tes points.
En gros, je penmse qu'avec tes points tu dois créer (programmatiquement) une FeatureSource dans le bon système, ajouter les points dedans, puis appeler la transformation.
Plus d'infos ici (rubrique Coordinate Systems):
http://mapguide.osgeo.org/sites/mapguid … vGuide.pdf
Et n'hésite pas à regarder dans les samples codes:
http://mapguide.osgeo.org/download/rele … .x-samples
Bon courage!
Hors ligne
#3 Tue 10 February 2009 20:40
- Dredd
- Participant occasionnel
- Date d'inscription: 10 Feb 2009
- Messages: 11
Re: [MapGuide OS 2.0]Convertir lat/lon
Je te remercie de ton aide poulet1212, je vais creuser dans ce sens.
Hors ligne
#4 Mon 16 February 2009 16:23
- Dredd
- Participant occasionnel
- Date d'inscription: 10 Feb 2009
- Messages: 11
Re: [MapGuide OS 2.0]Convertir lat/lon
Bon, après quelques recherche personnelles et un peu d'aide j'en suis arrivé à développer une servlet qui permet la conversion d'un point venant de google en un point utilisable sur ma map.
Pour rappel, la source est EPSG:4326 et la cible est EPSG:31370
Code:
MgGeometryFactory geometryFactory = new MgGeometryFactory(); MgCoordinate coord = geometryFactory.CreateCoordinateXY(x, y); MgPoint point = geometryFactory.CreatePoint(coord); MgCoordinateSystemFactory coordSys = new MgCoordinateSystemFactory(); MgCoordinateSystem coordSrc = coordSys.CreateFromCode("EPSG:4326"); MgCoordinateSystem coordTar = coordSys.CreateFromCode("EPSG:31370"); MgCoordinateSystemTransform xform = coordSys.GetTransform(coordSrc, coordTar); point = (MgPoint) point.Transform(xform); coord = point.GetCoordinate(); System.out.println(coord.GetX()+ "-"+coord.GetY());
Je récupère les données du nouveau point créé mais j'ai une imprécision de +/- 200 m en x et +/- 100 m en y.
J'ai vérifié tout les paramètres des systèmes epsg:4326 et epsg:31370 et tout me semble correct.
J'ai testé la conversion à l'aide de l'outil convers dispo icihttp://vtopo.free.fr/convers.htm et là, l'erreur est réduite à maximum 6 mètres.
Je ne comprend pas pourquoi j'ai une erreur si importante avec l'API Mapguide!
Dernière modification par Dredd (Tue 17 February 2009 08:52)
Hors ligne
#5 Mon 16 February 2009 22:57
Re: [MapGuide OS 2.0]Convertir lat/lon
Dredd, utilise la description littérale, des codes EPSG, car tu t'emmêles un peu les pinceaux, 4326 / 3426, 31300 / 31370.
Pourquoi a-t-on plusieurs centaines de mètres d'écart avec MapGuide ?
Simplement parce que le système géodésique de la source est le WGS84, et que le système géodésique de la destination est le Belge 1972. Ces deux systèmes ne sont pas équivalent et il faut faire une transformation pour passer entre ces deux systèmes géodésiques. MapGuide ne connait pas de transformation pour cela, donc il suppose que ces deux système géodésiques sont équivalents.
Avec Convers, tu as une erreur de 6 m car ce logiciel connait une transformation générique, des paramètres de translation et voir de rotation à appliquer où qu'on soit en Belgique. Pour avoir une précision encore meilleure, il faudrait une grille de paramètres, où les paramètres de transformation sont fonction de la position où on se trouve.
Voici pour la théorie. Maintenant pour savoir comment dire à MapGuide que tu connais les paramètres de transformation (prendre ceux de Convers puisqu'ils ont l'air satisfaisant), il va falloir qu'un connaisseur de MapGuide intervienne...
Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !
Hors ligne
#6 Tue 17 February 2009 09:00
- Dredd
- Participant occasionnel
- Date d'inscription: 10 Feb 2009
- Messages: 11
Re: [MapGuide OS 2.0]Convertir lat/lon
Oups oui effectivement, j'ai fait quelques fautes de frappe. C'est bien de epsg:4326 vers epsg:31370
Hors ligne
#7 Tue 17 February 2009 20:49
- Gwenael Bachelot
- Participant assidu
- Lieu: Bureau Autodesk : Paris 12ème
- Date d'inscription: 5 Sep 2005
- Messages: 608
- Site web
Re: [MapGuide OS 2.0]Convertir lat/lon
Bonsoir,
Dredd, pourrais tu donner un point exemple ?
Il faudrait :
1- X/Y en EPSG:4326
2- la valeur X/Y renvoyée par MapGuide en EPSG:31370
3- la valeur X/Y renvoyée par Convers en EPSG:31370
Enfin, MGOS est en train de passer de Proj4 à CS-Map pour supporter ces conversions de système de projection.
Pour ce que j'en sais, le code source est à jour (intègre bien CS-Map), mais les binaires ne sont pas encore réalisés.
Si je lis bien (voir http://trac.osgeo.org/mapguide/ticket/709), ce sera pour MGOS 2.1.
Proj4 et CS Map pourraient gérer cette conversion de manière différente.
Cordialement,
Gwenael Bachelot
Autodesk
Dernière modification par Gwenael Bachelot (Wed 18 February 2009 09:46)
Hors ligne
#8 Wed 18 February 2009 08:52
- Dredd
- Participant occasionnel
- Date d'inscription: 10 Feb 2009
- Messages: 11
Re: [MapGuide OS 2.0]Convertir lat/lon
Bonjour,
1- 50.4570702 , 3.9550750 (EPSG:4326)
2- 120714.33789402813 , 127468.1369683398 (EPSG:31370 MapGuide)
3- 120625.795922 , 127440.041334 (EPSG:31370 Convers)
La valeur attendue se situe aux alentour de 120614 , 127390
Hors ligne