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 :

Comparaison des coordonnées Gps sur 2 tableaux Excel avec des coordonnées légèrement différentes [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2015
    Messages : 33
    Points : 10
    Points
    10
    Par défaut Comparaison des coordonnées Gps sur 2 tableaux Excel avec des coordonnées légèrement différentes
    Bonjour,
    J'aimerai si possible faire une macro qui récupère les coordonnées GPS d'un tableau Excel, et, qui compare la latitude et la longitude avec une marge d'erreur suffisante pour trouver la correspondance mais pas trop.

    Par exemple la latitude 46,8956 et la longitude 5,6985 pourrait être dans l'autre tableau 46,456 et 5,875.
    Ceci afin de marquer en entrant dans le premier tableau les informations du deuxième tableau et bi-réciprolattérallement ou vice-versa si vous préférez.

    On peut aller jusqu'à laisser le choix des réponses multiples à l'utilisateur mais que dans la mesure ou une réponse proche pour les 2 coordonnées n'est pas trouvée.

    Les 2 tableaux contiennent environ 25000 coordonnées (lignes) chacun il est donc important d'automatiser l'opération en VBA en minimisant l'intervention humaine.

    Les opérations sur les valeurs ne donnent pas de bons résultats ( ex Latitude & Longitude ou Latitude * Longitude ou Latitude + longitude)

    La fonction evaluate ne donne pas de résultats fiables ou du moins pour ce que j'en ai testé. Merci par avance de votre aide.

    Sincères salutations à tous

  2. #2
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2006
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 542
    Points : 712
    Points
    712
    Par défaut
    Bonjour à toutes et tous

    Bonjour delattre13


    Je ne comprends pas le but final de ta question. La fourchette que tu donnes est énorme. En supposant que les nombres donnés soient des secondes-décimales, la différence entre lat : 46.8956 et lat : 46.456, nous donne 0.4396 donc plus de 26 secondes (1 seconde=0.00027777777777 degré). Cela représente environ 750m sur une carte.

    J'ai eu ce problème de comparaison. Je me suis arrété, si lat exacte trouvée, à l'écart de + ou -1 seconde maxi pour la long, et je n'ai que 1000 lignes. Pour mon pb cela donne 3 boucles : x+1, x et x-1. x représentant la long recherchée. La lat étant fixe et non y+1, y et y-1.

    Dans ton cas, si tu restes avec les 26 secondes de différence, et dans les 2 sens pour les 2 points (53 boucles par lat et 53 par long et pour chaque point), je n'ose pas faire le temps de calcul pour les 25000 points. A la fin, il restera la décision du choix et peut-être refaire les boucles !!!!

    La question est donc de savoir où tu veux en venir.

    Eric

    PS : j'espère avoir été clair

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2015
    Messages : 33
    Points : 10
    Points
    10
    Par défaut
    Bonsoir ou bonjour à tous
    en particulier à edelweissericn

    J'aime bien sa façon de calculer les distances car c'est pile poil le problème.

    On a 2 tableaux avec des coordonnées relevées avec des GPS à la volée. D'autres points sont estimés et relevés sur cartes donc effectivement on peut avoir un delta d'1Km pour 1 point mais les coordonnées de 2 vrais points sont en général distant de plus de 2Km.

    Donc il faut comparer les points d'un tableau et voir s'il y a un point voisin dans l'autre tableau et on marque les points dans les 2 tableaux comme étant validé en mettant le code du point du tableau 1 dans le tableau 2 et le code du tableau 2 dans le tableau 1.

    Ce n'est pas très compliqué mais le problème c'est que les coordonnées sont difficiles à trier car quand on prend un point avec une latitude de -5,256° et un longitude de 43,856° si on les manipules en multipliant ou en ajoutant les valeurs, le critère de tri perd de sa pertinence avec un autre point qui aurait comme latitude 43,9013 et une longitude de -5,1895

    Si on tri sur la latitude et ensuite la longitude on peut avoir des points dans l'océan Indien qui suivent des points en Afrique ou en Amérique du Sud du coup ce n'est pas pratique de plus les tableaux ainsi triés sont toujours au mieux décalés de quelques points mais parfois le point correspondant se retrouve 1 millier de points plus loin. Ce qui rend la comparaison fastidieuse.

    Si on fait manuellement l'opération cela donne:
    On prend la latitude du point 1 du tableau 1 on fait une recheche en tronquant la valeur sur 2 décimales dans le tableau 2 en affichant toutes les valeurs ensuite on vérifie visuellement les longitudes on prend les valeurs les plus approchantes et vérifie dans GoogleMap si les points sont bien similaires à environ 1Km près.
    Inutile de dire qu'au bout de 100 points ça fume.
    D'où l'intérêt d'une macro dans Excel même si cette macro ramène plusieurs valeurs voisines avec la latitude et la longitude ce sera toujours plus facile que de tout faire en manuel.

    Salutations à tous

  4. #4
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2006
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 542
    Points : 712
    Points
    712
    Par défaut
    Bonjour à toutes et tous
    Bonjour delattre13

    C'est un peu plus clair. Avant d'aller plus loin il faudrait quelques précisions :

    Pour ta phrase :
    ......D'autres points sont estimés et relevés sur cartes donc effectivement on peut avoir un delta d'1Km pour 1 point mais les coordonnées de 2 vrais points sont en général distant de plus de 2Km.

    - Faut il prendre les "vrais points" exclusivement ? ou en priorité ? ou sans distinction
    - Quelle est la distance max pour la comparaison ? cette réponse est capitale pour la suite.


    Pour ta phrase :
    ......Donc il faut comparer les points d'un tableau et voir s'il y a un point voisin dans l'autre tableau et on marque les points dans les 2 tableaux comme étant validé en mettant le code du point du tableau 1 dans le tableau 2 et le code du tableau 2 dans le tableau 1.

    - on marque les points : comment ? on les incorpore dans l'autre tableau ? ce qui nous ferait à la fin les 2 tableaux identiques ?
    - en mettant le code du point : qu'appelles tu le code ? la ligne entière ?


    Les tableaux sont-ils dans le même fichier ? sur la même feuille ?

    Les points GPS sont en deg-min-sec/decim (ou deg/decim ou deg-min/decim) ?

    La lat et la long sont-elles dans 2 colonnes différentes ou dans une seule avec un séparatif type "," ?

    Donc un bout de fichier avec quelques(~50) lignes des 2 tableaux pourrait nous aider.

    Cordialement
    Eric

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2015
    Messages : 33
    Points : 10
    Points
    10
    Par défaut
    Bonsoir à toutes et tous
    Bonsoir particulièrement à Éric "edelweisseric"

    Les tableaux 1 et 2 ont des références pour chaque point il s'agit d'un code numérique du style 165234 associé aux coordonnées il s'agit d'un code qui s'incrémente quand on ajoute un point dans le tableau 1 et le tableau 2 à le même genre de données mais il vit sa vie de son côté. Ils ont été crées et gérés par des équipes de terrain différentes d'où les différences. Il s'agit de 2 tableaux Excel différents.

    Sauf que maintenant il faut comparer les 2 tableaux et consolider les données en repérant les "doublons" d'un tableau sur l'autre et repérer les points vraiment différents de l'un à l'autre.

    Ce sont ces codes qui servent à valider un point dans les 2 tableaux
    le tableau 1 comporte
    une colonne "Réf Tableau 1" et une colonne "ref Tableau 2"
    et le tableau 2 comporte
    une colonne "Ref Tableau 2" et une colonne "Réf Tableau 1"

    Pour le test des valeurs il faut taper au plus prés de la Latitude et Longitude et s'éloigner jusqu'à + ou - 1,5km si il n'y a pas de point dans cette fourchette on peut considérer qu'il s'agit d'un nouveau point.

    Mais on peut avoir 2 Points différents dans une distance très proche.

    Donc faire varier les coordonnées en ajoutant ou retirant les milliers de degrés, puis les centaines, les dizaines et le unités.
    Par exemple avec 5,8962 en latitude et 6,9532 en Longitude sur le tableau 1 on fait la comparaison avec ces valeurs sur le tableau 2.

    Manuellement, s'il n'y a pas de correspondance on recommence la recherche avec les points tronqués.
    Ce qui donne 5,896 en latitude et 6,953 en Longitude ainsi de suite en s'éloignant progressivement jusqu' à trouver la correspondance par exemple 6,0362 en latitude et 7,0002 en Longitude dans le tableau 2.
    Comme on le voit il ne faut pas hésiter à incrémenter les coordonnées après les avoir diminuer sans résultat.

    Par exemple on peut penser à une boucle qui incrémente la valeur de test avec une comparaison en ajoutant la valeur et dans cette même boucle retirer cette valeur. Et bien sûr dès qu'il y a concordance on sort de cette boucle.
    Tous les points sont en degrés d'angle décimaux.
    Je prépare un tableau exemple avec des coordonnées types et je vous le posterais dès que possible.

    Merci à Éric et bonne nuit à tous.

    Bonsoir ou bonjour à tous
    en particulier à edelweissericn
    Voici le classeur de test dans lequel les 2 tableaux sont regroupés en 1 seul classeur et je n'ai laissé que 500 points par tableaux
    Classeur_Test_GPS.xlsm
    Tant qu'on y est ce serait parfait si en plus on pouvait renseigner automatiquement les informations récupérées dans GoogleMap.
    Il y a dans le module 1 de quoi visualiser ces informations mais il manque le choix des champs et le copier / coller de GoogleMap à Excel.
    Salutations à tous

  6. #6
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    Un essai pour débroussailler, on verra ce qu'il faut améliorer.
    Je calcule la distance de tous les points 2 à 2 et je garde la plus petite (si <20).
    Vu le nombre de points je calcule sur le plan pour aller plus vite. Si tu as besoin de plus de précision on peut calculer sur la sphère (n'oublie pas qu'il va y avoir 625000000 calculs).

    Pour l'instant certains points sont retrouvés plusieurs fois. Je ne sais pas si c'est dû à la fabrication des tableaux de tests ou pas.
    Si ça persiste trouve une idée pour le résoudre
    Regarde ce que ça donne et si ça te parait globalement cohérent.

    Contrôle quand même mon calcul de distance, il est tard ;-)

    eric
    Fichiers attachés Fichiers attachés

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2015
    Messages : 33
    Points : 10
    Points
    10
    Par défaut
    Bonjour Éric,

    Merci pour le bouton rapprocher il est bien fait en tout cas le résultat ne se fait pas attendre.
    Ton code est nickel je vais l'essayer sur les fichiers réels et je te tiens au courant.
    J'ai vu que tu es un fervent disciple de Pythagore ce qui est une bonne aproximation pour le calcul des distances.

    En fait il y a 2 petits problèmes c'est la ligne 1 contient les titres de colonne.
    un On error resume next et ça baigne ce qui permet d'aller jusqu'au bout même si des lignes contiennent des caractères "parasites" comme ' en début de cellule.
    L'autre petit problème c'est les données d'origine sont toutes en format texte mais je vais mettre la virgule à la place du point et les convertir en numérique. En fait ce sont des données au format Anglo-saxon considérées comme du texte sur un PC en Français.

    Reste aussi à récupérer les informations de GoogleMap comme le lieu (Océan Indien par exemple) ou si le point est sur terre le Pays,la Région, le Département, la ville, la route (Ex: Tanzani parc National du Sérenguéti B144) quand ces informations sont disponibles.

    Encore Merci
    Bon dimanche avec les cigales et les doigts de peids en éventail dans l'eau.

  8. #8
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    En fait il y a 2 petits problèmes c'est la ligne 1 contient les titres de colonne
    Précise le pb rencontré car je prend les données à partir de la ligne 2

    un On error resume next et ça baigne ce qui permet d'aller jusqu'au bout même si des lignes contiennent des caractères "parasites" comme ' en début de cellule.
    Là aussi précise le pb et donne des exemples de données, il y a peut-être une normalisation des données à faire.
    Ou alors on teste si l'erreur est connue mais on laisse toutes les autres s'afficher pour déboguer.
    C'est normal qu'il y ait une phase de mise au point pour affiner le résultat.
    Mettre la poussière sous le tapis n'est pas une solution.

    L'autre petit problème c'est les données d'origine sont toutes en format texte mais je vais mettre la virgule à la place du point et les convertir en numérique. En fait ce sont des données au format Anglo-saxon considérées comme du texte sur un PC en Français.
    Ca peut être fait par le programme à condition que tu fournisses un fichier avec les données brutes (y compris tous les cas de saisies non standards à traiter en me précisant à coté le cas) et que tu précises quel(s) séparateur décimal système est utilisé.

    eric

  9. #9
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2015
    Messages : 33
    Points : 10
    Points
    10
    Par défaut
    Bonjour Éric,

    Pour le système décimal du PC, la ligne des titres, c'est réglé.
    Faire une macro pour convertir, remplacer un point par la virgule et chasser les caractères insolites c'est déjà fait.

    J'ai fait un test sur fichier tronqué avec que 16000 données triés sur la Latitude et la Longitude avec la distance réglée à 30m. Dans le tableau_1 dans la colonne F ça affiche 15999 doublons. Ce qui est largement exagéré. Ce n'est que la dernière valeur qui ne ramène pas de doublon. De plus il y a souvent la même référence donnée comme doublon avec une distance de 0 par rapport aux points testés. C'est étonnant car même si certains points n'ont pas de référence (Référence 0) il y a des points qui sont donnés comme étant doublons sur plusieurs points avec une distance proche de 0 alors que les coordonnées sont différentes et la référence du point n'est présente qu'une fois dans le Tableau_2.

    Si j'utilise Poimixer avec les mêmes fichiers en réglant la distance à 400m il ne trouve que 4400 doublons(pas de doublons à 30m) . Le problème avec Poimixer c'est que le résultat n'est pas facilement exploitable sous Excel mais le résultat est plus cohérent. C'est largement plus long et ensuite il faut sauvegarder en ASC et reprendre sous Excel.

    Bien sûr que ce genre de programme ne peut pas donner des résultats miracle du premier coup et qu'il faut peaufiner aussi bien les données que le programme pour arriver à un résultat fiable. C'est pour ça qu'on cherche.

    Pour l'instant je vais essayer de voir les variables pendant l'exécution du programme pas à pas.

    J'aurais ainsi une idée plus précise du problème.
    C'est très chronophage ces tests mais à bientôt.

    Je te tiens au courant.
    Salutations à toutes et tous

  10. #10
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    avec la distance réglée à 30m
    A 30 'je ne sais pas quoi', je n'ai jamais dit que c'était des mètres.
    C'est un simple calcul de distance à partir de tes positions en °.

    dans la colonne F ça affiche 15999 doublons
    Pas sûr qu'on parle de la même chose. Pourquoi appelles-tu ça des doublons ?
    J'appellerai ça des paires.
    Pour chaque point1 je met en F le point2 le plus proche.
    Ils ont forcément tous un point le plus proche... Ce n'est pas ce que tu voulais ?
    Le pb c'est qu'il peut y avoir 2-3 point1 qui ont le même point2 le plus proche. Et en corollaire une soixantaine de point2 qui n'ont pas été rapprochés avec un point1.
    On pourrait très bien marquer les point2 déjà rapprochés pour ne pas les ré-utiliser mais ça ne sera pas forcément les meilleures associations. Tu dis si ça n'a pas une importance critique et si c'est acceptable. C'est ce qui sera le plus rapide en calcul.

    Contrôle quand même de près ma mesure des distances. Je n'arrive pas à y voir d'erreur mais des fois l'évidence ne crève pas les yeux.

    Voici un autre fichier ou je complète pour les point2 utilisés plusieurs fois le 2nd point2 le plus proche (du point1 en A).
    Si ça peut te permettre d'analyser et d'en tirer un algorithme pour les ré-associer au mieux.
    Pour celui attribué 3 fois ça ne suffira peut-être pas

    Et si j'ai mal compris le besoin, ce qui est fort possible, fait-le moi savoir.
    Donne-moi au moins cette dernière réponse. Si j'ai le temps ce soir je ferais un essai avec calcul de distances sur la sphère voir si une plus grande précision diminue de manière significative les doubles attributions.

    eric

    Edit :
    Fichier remplacé, j'ai ajouté l'option de calcul sur sphère. Ca ne change pas grand chose au résultat si ce n'est que c'est beaucoup plus long.
    Peut-être que les nombres te parleront plus.
    Si des points sont très proches il faudrait une règle pour les départager.Ou sinon on fait premier arrivé, premier servi. Tu dis...
    Fichiers attachés Fichiers attachés

  11. #11
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2015
    Messages : 33
    Points : 10
    Points
    10
    Par défaut
    Bonjour ou bonne nuit Éric,
    Pour les doublons c'était précisé dans ma première réponse à tes questions
    message du 03/07/2015, 01h19
    Peu importe hier j'ai refait des tests en affichant les variables mais avec les tableaux réduits à 2000 points environ cela a quand même pris 4 à 5 heures avec l'ancienne version.

    En fait tu as raison que ce soit des mètres ou une autre unité ce n'est important ce qui est important c'est de savoir à quelle distance en mètres correspond le 20 dans ton test. Ou quelle valeur mettre pour avoir 400m.

    J'ai vu ton nouveau programme mais hélas aujourd'hui je n'ai pas eu le temps pour faire les tests.
    J'ai vu aussi que tu as mis des filtres je pense aussi que cela devrait faire partie de la solution.
    Bien sûr l'idéal serait d'avoir une base Oracle et faire des extractions en intégrant les calculs dans les requêtes SQL. Mais hélas on a pas de licence Oracle ni celle de Toad. Donc on revient à notre Excel.

    Si j'ai le temps ce soir je vais refaire des essais et je te tiens au courant.
    Encore merci pour ta disponibilité et ton savoir faire.

    Pour moi maintenant c'est Bonne nuit

    Cordialement.

  12. #12
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    Conforté par le fait que tes 2 listes faisait la même longueur (à 1 près) j'avais compris que les 2 équipes avaient les même points et qu'il fallait les mettre en correspondance.
    D'autant plus que dès le début je t'ai dit "Je calcule la distance de tous les points 2 à 2 et je garde la plus petite" sans aucune réaction de ta part.
    Donc là je comprend que ce sont 2 listes indépendantes et que seulement qq points sont communs.
    Statistiquement je ne pense pas que tes données soient vraiment représentatives. Sur 500 points tu en as 7 distants de moins de 2km et 400 à 7 km. Déduire que tu donnes 500 points pour seulement 7 qui devraient être appairés n'est pas la 1ère chose qui vient à l'esprit.

    Et je comprend que tu n'as peut-être pas tout le temps dispo que tu voudrais mais attendre le lendemain soir pour une question posée le matin (ou 3 jours comme là) est un peu long. Reprendre après une longue interruption complique les choses et prend du temps, qu'on n'a pas forcément prévu pour ça à cette période.
    Donc voit si tu peux assurer un suivi correct sinon reporte à plusieurs semaines quand tu auras le temps.

    Si tu poursuis il faudrait vraiment que tu t'investisses sur ta partie. Là ça me laisse l'impression que tu donnes le boulot sans prendre le temps de donner toutes les consignes et que tu pars regarder ton match de foot...
    Plusieurs fois je t'ai demandé quoi faire si plusieurs points sont à la même distance, sans analyse ni réponse de ta part.
    Et d'autre part que tu dises quelle est la priorité : temps de traitement ou précision ? Et de quelle précision tu as besoin sur les distances ?

    eric

  13. #13
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2015
    Messages : 33
    Points : 10
    Points
    10
    Par défaut
    Bonjour ou bonne nuit Éric,
    Ce sont 2 tableaux de tests tronqués à environ 500 points.
    Les points sont donnés par 3 équipes.
    Une équipe regarde sur les images satellites les points remarquables (points références 0).
    Les 2 autres vont sur le terrain vérifier ces points.
    Suivant les moyens du bord ils contrôlent la véracité du point et donnent une référence au point.
    Ensuite on collectionne ces données et on les compile ce qui veut dire qu'on met sur un seul tableau Excel par équipe tous ces points.
    Comme tu as pu le voir ces points sont répartis sur la surface du globe.
    Donc il est très difficile de savoir si ces points sont vraiment redondants ou s'ils existent bien en tant que point spécifique.
    En particulier quand ces points sont dans des zones océaniques ou dans des déserts.
    Les points de moins de 400m sont en général des doublons.
    D'où l'importance de connaître la distance entre 2 points dit redondants ou doublons.
    En plus 2 points peuvent être à 1m près et avoir des spécificités différentes.
    Cela implique que seules les équipes du terrain peuvent dire si c'est un doublon ou pas.
    Pour faciliter la tâche de tout le monde il est donc intéressant de connaître la distance entre 2 points et vérifier si ces point sont réellement à supprimer ou pas
    Tout le monde est bénévole et finance ses déplacements s'il y a lieu.
    Pour ce qui me concerne je ne sais que 5 choses
    1- Les données sont en général fiables (les coordonnées sont cohérentes) mais certaines sont redondantes entre les tableaux 1 et 2
    2- En général les points n’ont pas des doublons dans le même tableau.
    3- En général tous ces points ont des références uniques sauf pour ceux qui n'en n'ont pas.
    4- Le tableau 1 fait 32689 points, le tableau 2 fait 45963 points pour l’instant regroupés sur 10 ans environ.
    Quand ils seront regroupés cela fera environ 70000 donc environ 8000 soit près de 10% seront supprimés.
    Ensuite seules les équipes de terrain décident à partir du tableau de concordance s'il y a doublon ou pas.
    5- Ces tableaux sont à diffusion restreinte car il est possible qu'ils fassent l'objet de publications avec droits d'auteur.
    Ce que je ne sais pas et qui ne m'intéresse pas du tout c'est à quoi servent ces points.
    Donc on peut prendre n'importe quelle liste de points pour faire des exemples en téléchargeant des PI de n'importe quoi et vérifier s'il y a doublon ou pas.
    Pour ce qui me concerne j'ai aussi une vie de famille et un travail et je n'ai pas toujours le temps de me consacrer à ce problème.
    D'où mes messages à des heures indues ou tardives.
    En plus j'ai mon PC qui vient d'avoir un problème de disque dur illisible. Ma maquette Excel est perdue corps et bien.
    Donc achat d'un nouveau disque dur, installation du système d'exploitation et des logiciels nécessaires.
    En tout cas même si tu trouves que mes réponses ne sont pas aussi rapides que le souhaites ce sera difficile d'accélérer le mouvement.
    Je vais refaire ma maquette. Il s'agit d'un classeur avec les copies des tableaux 1 et 2 dans un tableau_3 qui récupère les points des tableaux 1 et 2(Qui sont bien sûr intouchables) en mettant 3 colonnes avec la référence et les coordonnées du tableau 1, 3 colonnes avec la référence et les coordonnées du tableau 2 qui ont une distance de moins de 400m.
    Et ensuite il faut que je trouve le moyen de récupérer les informations en français de GoogleMaps comme dans mon tableau d'exemple. Ce qui facilitera la détection des doublons.

    J'ai pu enfin tester ton classeur avec la macro et les distances mais ce qui serait bien c'est que dans le tableau de résultats on puisse avoir les codes et coordonnées des points des 2 tableaux mis en concurrence. La macro devrait générer le tableau croisé dynamique mis dans la feuille TDC avec toutes les informations (code/coordonnées/distance en mètres et lieu si présent).

    Le but final c'est une fois les doublons validés, ils doivent disparaître d'un des 2 tableaux le choix du tableau qui doit garder l'information sera à l'appréciation des équipes de contrôle.

    Je comprends tout à fait ta réaction quand tu dis qu'après une pause reprendre le programme fait perdre du temps, car il faut ré-analyser les instructions et se remémorer ce qui en découle.
    Je suppose aussi que pour toi c'est aussi très dur de trouver du temps pour répondre à ce genre de questions et de le faire aussi généreusement.
    Dans tous les cas je te remercie de ton aide si efficace. J'espère que tu continueras à contribuer au projet.

    Dans un message chaque mot à son importance c'est vrai que quand on lit à la va vite on interprète ce qui nous parle le plus, mais parfois il vaut mieux consacrer du temps à lire l'énoncé du problème qu'à corriger ses erreurs. Je parle pour moi bien sûr.

    En tout cas tu as maintenant toutes les billes en main.
    Tu peux te créer des tableaux d'exemple en récupérant des PI (points intéressants)
    De magasins ou des hôtels,
    ou des stations de charge des voitures électriques,
    sur des sites différents, en général c’est disponible gratuitement.
    Et vérifier s'ils sont en doublons.
    Et ça te permettra d'avancer à la vitesse que tu veux.

    Quand les américains sont allés sur la Lune, la seule chose qu'on en retient c'est qu'ils l'ont fait.
    Peut importe les difficultés, les conditions de travail, et le temps qu'ils ont mis.

    Sincères salutations à tous.
    Albert.

  14. #14
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    Je vois mieux le contexte.
    Donc il faut un minimum de précision, mais pour 1.5 milliard d'opérations... Ca fait beaucoup.
    Il faut que je fasse des tests chronométrés sur plusieurs options. Et d'abord que je prépare une base de donnée un peu plus variée.

    J'ai pu faire mes tests.
    Il faut prendre la précision max, mais ça prend beaucoup plus de temps.
    J'ai donc fait un compromis. Un premier calcul approximatif (retenus < seuil1), suivi du calcul précis (retenus < seuil2) sur beaucoup moins de couples. Ca permet d'être 20 fois plus rapide si tes points sont répartis sur le globe.
    Seuil1 est à 10km. Je te conseille de ne pas trop le baisser, même si tu passes seuil2 à 0.400 km. Ca ne fera gagner que quelque % en temps de calcul, mais au risque de rater des couples acceptables (bien qu'en théorie la distance approximative devrait toujours être inférieure à la précise...).
    Par point 16 couples maxi sont mémorisés. Réglable par une constante maxMemoPt en début de code. Baisse-le si tu es vraiment juste en mémoire et si tu penses que c'est excessif. A augmenter si tu constates que la dernière position est utilisée.
    Les couples sont triés par distance.

    Seul Tableau_1 est rempli. Il faut que tu testes et que tu valides les résultats pour pouvoir faire Tableau_2 sur le même modèle.
    Par curiosité donne-moi le temps pour une grosse base.

    eric

    PS: j'ai jeté un oeil sur ton lien google, je ne vois nulle part une mention de zone géographique comme Antartique...
    Fichiers attachés Fichiers attachés

  15. #15
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2015
    Messages : 33
    Points : 10
    Points
    10
    Par défaut
    Bonjour Éric et à tous
    Merci pour ton investissement.

    C'est vrai que maintenant ta solution est utilisable. Une fois ta macro exécutée il suffit de trier sur la colonne "Code pt1" et on a d'un coup d'oeil les points qui posent problème dans ton tableau d'exemple. Cela représente 40 points sur 500 soit un ratio normal pour ce type de données.

    Ce qui serait bien aussi ce serait le remplissage automatique des infos à partir des cartes comme Google-Map, Map-Quest, ou Bing-Map etc...
    Je sais que GoogleMap limite le nombre de requêtes pour éviter la surcharge de leur serveurs.

    Ensuite une fois ces doublons traités et supprimés manuellement en cliquant par exemple sur la cellule avec la référence contenant le point à supprimer, il ne restera plus qu'à fusionner les 2 tableaux.

    Sur mon PC ta macro met 0,3125s soit 1/3 de seconde autant dire rien sur les 500 points.
    Avec 16000 sur le tableau_1 et 2500 sur le 2 et comme seuil respectivement 2 et 0,5 Km cela met 25 secondes donc tout à fait raisonnable.


    Sincères salutations

  16. #16
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    Ce qui serait bien aussi ce serait le remplissage automatique des infos à partir des cartes comme Google-Map, Map-Quest, ou Bing-Map etc...
    Sans doute. On verra ce qui est faisable quand tu auras trouvé un tel lien mais les requêtes web sont loin d'être ma spécialité.

    Un clic-droit sur un point en F, J, etc permet de supprimer ce point.
    Ajout d'un bouton pour fusionner mais je ne supprime pas Tableau_2

    eric
    Fichiers attachés Fichiers attachés

  17. #17
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2015
    Messages : 33
    Points : 10
    Points
    10
    Par défaut
    Bonjour Éric et les autres,

    Ton tableau est bien ta macro est opérationnelle juste un petit ajustement à faire :
    Lorsque la colonne Code pt2 contient une valeur le clic droit supprime le point Code pt1 et Code pt2 c'est bien mais pas nécessairement souhaité.

    Bien sûr le seul moyen de vérifier la validité d'un point c'est la visualisation du point sur la carte ce qui se fait dans la macro Google. Mais le faire pour tous les points c'est long et fastidieux. D'où l'intérêt du remplissage automatique des informations à partir du logiciel (Google, Bing etc...)

    Autre question subsidiaire peut-on coupler le classeur avec un GPS. Bien sûr je ne parle pas de mettre les données dans Tomtom ou Falk Navigator ou d'autre logiciel comme Google Earth ce serait trop facile. Mais plutôt brancher le GPS (par exemple celui de Microsoft Autoroute) sur le PC et quand on approche d'un point référencé dans le fichier la ligne qui contient le point s'active et ainsi les personnes qui sont sur le terrain pourraient valider ou pas le point et en tout cas ne pas l'ajouter s'il y est déjà.

    Encore une fois merci de ton aide précieuse.

    Salutations à tous

  18. #18
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    Lorsque la colonne Code pt2 contient une valeur le clic droit supprime le point Code pt1 et Code pt2 c'est bien mais pas nécessairement souhaité.
    On peut modifier ça.
    Mais dit clairement ce que tu souhaites :
    - supprimer la ligne du point dans Tableau_2 ? C'est que je faisais car je pensais que c'était suite à un choix de rapprochement et que tu parlais de fusion en suivant
    - supprimer juste le point cliqué dans Tableau_1 ?
    - les 2 ? Avoir des choix ?

    Bien sûr le seul moyen de vérifier la validité d'un point c'est la visualisation du point sur la carte ce qui se fait dans la macro Google. Mais le faire pour tous les points c'est long et fastidieux. D'où l'intérêt du remplissage automatique des informations à partir du logiciel (Google, Bing etc...)
    J'ai bien compris. Relis mes réponses en détails je te dis pourquoi non avec ce que tu fournis.

    Autre question subsidiaire peut-on coupler le classeur avec un GPS.
    Sans doute, mais au-delà de ce que je peux faire.

    eric

  19. #19
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2015
    Messages : 33
    Points : 10
    Points
    10
    Par défaut
    Bonsoir Éric

    Pour répondre à ta question sur la suppression je colle une information déjà donnée :

    Le but final c'est une fois les doublons validés, ils doivent disparaître d'un des 2 tableaux le choix du tableau qui doit garder l'information sera à l'appréciation des équipes de contrôle.

    Je traduit :
    ça veut dire que si le clic est sur le code du point sur le tableau 1 c'est ce point là qui disparaît du tableau 1
    S'il y a plusieurs doublons en provenance du tableau 2 seul le point cliqué doit disparaître même s'il y a d'autres points en double. Et bien sûr il ne disparaît que de son tableau d'origine.

    ou

    Si tu préfères on peut dire que :
    Si on prend la liste des hôtels, on peut avoir dans le même coin un Campanile, un Formule1, un Première-Classe, avec en face un Novotel, etc...
    Géographiquement ils peuvent être distant de 100m et pourtant on garde tous ces points. Par contre on pourrait, pour ce coin géographique, avoir les 2 même listes sur les 2 tableaux et donc on choisi de supprimer les points en doubles qui sont les moins précis sur l'une des 2 listes.

    Le choix se fait au cas par cas. Soit on supprime le point sur la liste 1 soit sur la liste 2 c'est l'utilisateur final qui fait le choix.

    Pour tes compétences sur les requêtes Web j'ai bien compris que tu ne te sens pas à l'aise, mais peut-être qu'un lecteur intéressé par le projet pourrait y mettre son grain de sel et apporter les informations complémentaires ou proposer une solution pour cela.

    Dans tous les cas je te remercie pour l'excellent Excel que tu as déjà fourni.

    Sincères salutations à toi et à tous les autres lecteurs

  20. #20
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    Un clic-droit sur un point propose sa suppression. En A pour celui de Tableau_1.
    Regarde si ça va.

    eric
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Placer des coordonnées GPS sur une image du monde à plat
    Par DotNET74 dans le forum Windows Phone
    Réponses: 11
    Dernier message: 02/01/2013, 10h48
  2. Réponses: 9
    Dernier message: 20/07/2012, 16h15
  3. placer des coordonnées GPS sur une carte
    Par tomkiki dans le forum Débuter
    Réponses: 7
    Dernier message: 15/01/2011, 17h55
  4. Remontées coordonnées GPS sur serveur
    Par ojalic dans le forum Mobiles
    Réponses: 1
    Dernier message: 25/05/2009, 14h32
  5. Réponses: 1
    Dernier message: 08/10/2008, 15h30

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