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

Annonce

Printemps des cartes 2024

#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

Jeirhome
Membre
Lieu: Liverion
Date d'inscription: 22 Aug 2006
Messages: 4298
Site web

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... big_smile


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

 

Pied de page des forums

Powered by FluxBB