IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Reverse geocoding Openstreetmap


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    chercheur de code
    Inscrit en
    Mai 2023
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : chercheur de code
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2023
    Messages : 5
    Par défaut Reverse geocoding Openstreetmap
    Bonjour,
    Je suis en train de tenter de créer un petit module sous vba afin de pouvoir convertir des coordonnées (latitude, longitude) en adresse avec OpenStreetMap. Le code fonctionne quand je saisis des nombres entiers mais malheureusement dès que je rentre des valeurs négatives ou des coordonnées non entières, j'obtiens des messages d'erreur de type "valeur" ou bien une erreur de type "impossible to geocode". Je souhaiterais bénéficier de votre aide afin que cela puisse fonctionner (cela ne fait pas longtemps que j'ai commencé à me mettre à Vba).

    Nom : Erreurs reverse geocode.jpg
Affichages : 144
Taille : 69,4 Ko

    Voici mon code :
    Function NominatimReverseGeocode(lat As Double, lng As Double) As String
    On Error GoTo eh
    Dim xDoc As New MSXML2.DOMDocument
    xDoc.async = False
    Url = "https://nominatim.openstreetmap.org/reverse?lat=" & lat & "&lon=" & lng
    xDoc.Load (Url)
    If xDoc.parseError.ErrorCode <> 0 Then
    Application.Caller.Font.ColorIndex = vbErr
    NominatimReverseGeocode = xDoc.parseError.reason
    Else
    xDoc.SetProperty "SelectionLanguage", "XPath"
    Dim loc As MSXML2.IXMLDOMElement
    Set loc = xDoc.SelectSingleNode("/reversegeocode/result")
    If loc Is Nothing Then
    Application.Caller.Font.ColorIndex = vbErr
    NominatimReverseGeocode = xDoc.XML
    Else
    Application.Caller.Font.ColorIndex = vbOK
    NominatimReverseGeocode = loc.Text
    End If
    End If
    Exit Function
    eh:
    Debug.Print err. Description
    End Function

  2. #2
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 157
    Par défaut
    Hello,
    tu peux essayer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Url = "https://nominatim.openstreetmap.org/reverse?lat=" & _
          Replace(CStr(lat), ",", ".") & "&lon=" & Replace(CStr(lng), ",", ".")
    Pour le 10 -20 qui ne fonctionne pas il y a peut-être des zones qui ne sont pas référencées dans OpenStreetMap (10 -5 fonctionne)

    EDIT : 10 -20 se trouve en pleine mer au large de l'Afrique.

    Ami calmant, J.P

  3. #3
    Membre à l'essai
    Homme Profil pro
    chercheur de code
    Inscrit en
    Mai 2023
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : chercheur de code
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2023
    Messages : 5
    Par défaut Merci mais cela ne fonctionne toujours pas
    Merci bcp pour cette réponse, malheureusement cela ne fonctionne toujours pas, j'ai remplacé le"." par des virgules et tenté plusieurs valeurs le dernières en date étant lat : "51,0839" et longitude : "-38,0503"; j'obtiens toujours le message d'erreur "unble to convert". Je suis très loin être un expert et là j'y perd complètement mon latin.

    Mikael

  4. #4
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 157
    Par défaut
    je ne sais pas où tu vas chercher tes coordonnées mais
    51,0839 -38,0503

    se trouve aussi en pleine mer entre l'europe et l'amérique du nord et là il n'y a pas d'adresse

    Pour tester les coordonnées , il suffit dans google maps dans la zone de recherche de rentrer les coordonnées ex 51.0839,-38.0503

  5. #5
    Membre à l'essai
    Homme Profil pro
    chercheur de code
    Inscrit en
    Mai 2023
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : chercheur de code
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2023
    Messages : 5
    Par défaut
    Ce sont des coordonnées de bateau de pêche
    Plus sérieusement c'est afin de tester mon code et j'ai rentré des coordonnées au hasard, pour le coup je viens de tester avec des coordonnées "terrestres" et.... ça fonctionne.
    En revanche pour le coup tu m'as permis de mettre le doigt sur une problématique et cela m'interroge, Openstreet map ne remonte pas le nom de l'ocean ou de la mer sur lequel serait par exemple situé un navire dont je possèderait les coordonnées ou autre cas un avion qui survolerait l'Atlantique ?
    Autre question et visiblement autre erreur de ma part : les coordonnées que j'ai sont avec des "." je dois donc les remplacer avec des "," ?
    Je te remercie pour ton aide

    Mikael

  6. #6
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 157
    Par défaut
    Hello,
    Citation Envoyé par mikasara Voir le message
    Openstreet map ne remonte pas le nom de l'ocean ou de la mer sur lequel serait par exemple situé un navire dont je possèderait les coordonnées ou autre cas un avion qui survolerait l'Atlantique ?
    même le geocoding de google ne renvoie pas d'infos si le point n'est pas une adresse valide ( un point dans la mer n'a pas d'adresse) et même si il renvoyait l'information de mer on ne saurait pas trop où dans cette mer. Le mieux c'est de visualiser sur google maps les coordonnées au moins là on a une idée sur la position par rapport à des points terrestres.
    Citation Envoyé par mikasara Voir le message
    Autre question et visiblement autre erreur de ma part : les coordonnées que j'ai sont avec des "." je dois donc les remplacer avec des "," ?
    cela dépend dans quel format sont des coordonnées dans la feuille Excel. Si c'est du texte il n'y a pas de problème , si c'est du numérique double dans un excel en français il faut transformer les , en . pour l'url à construire ce que fait le code que je t'ai montré.
    Ami calmant, J.P

  7. #7
    Membre à l'essai
    Homme Profil pro
    chercheur de code
    Inscrit en
    Mai 2023
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : chercheur de code
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2023
    Messages : 5
    Par défaut
    Merci bcp pour ces infos, ça marche parfaitement, ormis que les resultats sont affichés dans la langue du pays concerné, par exemple si un lieu est localisé en allemagne, le resultat apparait en allemand et non pas en français. Il y a pas pas un moyen pour renvoyer les infos dans une langue donnée ?

  8. #8
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 157
    Par défaut
    Citation Envoyé par mikasara Voir le message
    Merci bcp pour ces infos, ça marche parfaitement, ormis que les resultats sont affichés dans la langue du pays concerné, par exemple si un lieu est localisé en allemagne, le resultat apparait en allemand et non pas en français. Il y a pas pas un moyen pour renvoyer les infos dans une langue donnée ?
    Tu peux essayer le paramètre accept-language=fr-fr

    exemple d'utilisation :
    https://nominatim.openstreetmap.org/...&lat=30&lon=30

    sans le paramètre :
    30 30 مطروح, مصر
    avec le paramètre :
    30 30 Matruh, Égypte

  9. #9
    Membre à l'essai
    Homme Profil pro
    chercheur de code
    Inscrit en
    Mai 2023
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : chercheur de code
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2023
    Messages : 5
    Par défaut Merci merci merci
    Merci bcp, tout fonctionne Nickel, tu es trop fort !!! Je vais clôturer ce post, me reste "juste" qu'à continuer à me former.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Google Maps] Geocode + Reverse Geocoder
    Par mGraph dans le forum APIs Google
    Réponses: 5
    Dernier message: 24/06/2015, 23h52
  2. Reverse geocoding depuis une carte
    Par marmot73 dans le forum IGN API Géoportail
    Réponses: 38
    Dernier message: 10/04/2014, 09h39
  3. Le reverse geocoding fonctionne avec openlayers et le geoportail ?
    Par newbieSIG dans le forum IGN API Géoportail
    Réponses: 3
    Dernier message: 01/09/2013, 09h38
  4. [Google Maps] récupérer une adresse avec reverse geocode
    Par erwah dans le forum APIs Google
    Réponses: 13
    Dernier message: 10/05/2011, 20h19
  5. Reverse geocoding en javaSE
    Par bagra dans le forum API standards et tierces
    Réponses: 0
    Dernier message: 27/12/2010, 11h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo