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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Fri 10 February 2006 13:11

casper
Participant occasionnel
Date d'inscription: 30 Nov 2005
Messages: 21

Calcul de distance

Bonjour à tous,

J'aimerais savoir s'il est possible de calculer les distances entre chaque commune (730)et de centraliser
Ces données au sein d'une base de données ACCESS depuis MapInfo

Merci d'avance

David

Hors ligne

 

#2 Mon 13 February 2006 11:55

pierre agha
Participant actif
Lieu: TOULOUSE
Date d'inscription: 15 Oct 2005
Messages: 97

Re: Calcul de distance

Il y a un outil MBX dispo à cette adresse qui pourrait vous intéresser mais c'est peut-être un peu laborieux.

http://www.directionsmag.com/files/index.php/view/268
Pour commencer, le calcul des distances entre des communes (polygones) prend en compte tous les sommets de tous les polygones. Cela risque de donner des résultats absurdes.
Dommage qu'il ne puisse pas prendre en compte les centroïdes. vous pouvez toujours créer une table qui reprend les centroïdes des communes et exécuter le mbx sur cette table.
Mais là encore, le mbx calcule la distance de chaque centroïde (devenu point)  par rapport à tous les autres. Vous risquez donc d'avoir 700 enregistrements*700.

Bon courage

Hors ligne

 

#3 Mon 13 February 2006 15:45

editeur
Administrateur
Date d'inscription: 15 Jun 2005
Messages: 1527

Re: Calcul de distance

Pour avoir calculer quelques distanciers, je confirme il faut prévoir 730*730 enregistrements.
Mais la question est voulez-vous des distance à vol d'oiseaux ou voulez-vous une distance routière, dans ce cas là l'aller est différent du retour.

Hors ligne

 

#4 Tue 14 February 2006 08:29

casper
Participant occasionnel
Date d'inscription: 30 Nov 2005
Messages: 21

Re: Calcul de distance

Il s'agit de distance à vol d'oiseaux
L'outil MBX proposé par Pierre agha fonctionne très bien, il m'a effectivement créé une table 730*730.
Mais le problème est qu'il reprend les identifiants MapInfo (et non le nom des communes), si bien que j'ai du mal à savoir quel numéro correspond à quelle commune. Savez-vous comment obtenir le nom des communes dans la table générée par MapInfo (et non des chiffres)?

Merci pour vos réponses

Hors ligne

 

#5 Tue 14 February 2006 10:37

Mataio
Participant occasionnel
Date d'inscription: 17 Oct 2005
Messages: 39

Re: Calcul de distance

Bonjour,

L'autre solution serait de faire une table de correspondance qui associerait l'identifiant de l'objet graphique au nom de la commune qu'il représente et vous permettrait alors de mettre à jour votre nouvelle table en faisant un lien attributaire. Il faut pour cela accéder aux identifiants objets définis par MapInfo. Aprés quelques recherches, je n'ai pas trouvé de fonction permettant d'accéder à cette information. Il existe bien la fonction rowid, mais elle est une simple fonction d'incrémentation et ne permet en aucun cas d'accéder aux identifiants d'objets définis dans la table MapInfo. Je fais donc appel au GeoRezo.
Cordialement

Mataio

Hors ligne

 

#6 Tue 14 February 2006 13:32

magali di salvo
Participant actif
Lieu: Lyon
Date d'inscription: 21 Sep 2005
Messages: 70

Re: Calcul de distance

bonjour,
une autre solution est de passer par une requête SQL, mais qui nécessite de dupliquer la table "commune" initiale car MapInfo ne permet pas de faire une multiplication d'une table sur elle même...

Etape 1: Ajouter à la table " commune.tab " une colonne quelconque appelée "jointure" de type entier initialisée à 0.
Cette colonne permet de faire le lien entre toutes les communes entre elles dans la clause "where" de la requête SQL de l'étape 3. S'il n'y a pas de "where", mapinfo refuse de faire la requête.

Etape 2: Dupliquer la table "commune"  car mapinfo n'accepte pas les requêtes sur 2 fois la même table.
Ouvrir commune2.tab

Etape 3: Faire la requête suivante (utilisez la colonne INSEE ou NOM_COM en fonction de ce que vous voulez voir apparaitre dans le résultat de la sélection...)

Code:

Select commune.INSEE, commune2.INSEE, distance(centroidx(commune.obj), centroidy(commune.obj), centroidx(commune2.obj), centroidy(commune2.obj), "km") "distance" from commune, commune2 where commune.jointure=commune2.jointure order by distance into sel1

Etape 4: Exporter le résultat de la selection en dbf si vous voulez en faire une vraie matrice via un rapport de tableau croisé dynamique sous Excel...

S'il y a plus simple, ça m'intéresse aussi...

magali

Hors ligne

 

#7 Tue 14 February 2006 13:42

Christophe
Membre
Lieu: Gaillac
Date d'inscription: 23 Jun 2005
Messages: 77

Re: Calcul de distance

Bonjour,

L' identifiant sur lequel peut se faire la jointure peut être constitué de la concaténétion du X et du Y des centroides des polygones dans la table des distances et dans la table des communes.
Ensuite la jointure pour récupérer les noms peut se faire sur ce nouvel identifiant créé. Tu obtiens donc une table des distances avec le nom de la commune de départ et le nom de la commune d' arrivée ( à vol d'oiseau ).

Bien à toi

Christophe

Hors ligne

 

Pied de page des forums

Powered by FluxBB