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

#1 Tue 28 January 2014 19:50

GAEL_AM
Participant actif
Lieu: Engordany (Andorra)
Date d'inscription: 12 Mar 2011
Messages: 58

Calculer les déplacements entre deux points.

Bonjour,
Je vous explique mon « problème » qui ne va plus l’être vous efficacité des membres de ce forum wink !
Jais une table avec les points heure par heure de bouquetins marqués par collier GPS. Je souhaite calculer le déplacement entre deux points, et savoir a quel moment de la journée ils sont les plus long…
Ma table se compose de 4 colonnes : date (JJMMAAA) ; heure (HH :MM :SS) ; X (en UTM) et Y(en UTM).
Je voudrais savoir quelle distance a étais parcourue (a vol d’oiseau) entre le point de 8h et celui de 9h.
Merci !
Mon programme est MapInfo 10.0

Hors ligne

 

#2 Wed 29 January 2014 20:21

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Calculer les déplacements entre deux points.

Salut,

Je voudrais savoir quelle distance a été parcourue (à vol d’oiseau) entre le point de 8h et celui de 9h


Une solution possible est de travailler avec la FMB (Fenêtre MapBasic) -> Options -> Afficher Fenêtre MapBasic.
Voilà le code à coller dedans (en modifiant les noms de Table et de champs pour ton cas personnel).

Code:

Dim OriginX as float
Dim OriginY as float
Dim DestinX as float
Dim DestinY as float
Dim Dist as Float
set coordsys table TaTable
select * from TaTable where (Date = "JJMMAA" and heure = "08:00:00") or (Date = "JJMMAA" and heure = "09:00:00") into Selection
Fetch First From Selection
OriginX=centroidX(Selection.obj)
OriginY=centroidY(Selection.obj)
Fetch next From Selection
DestinX=centroidX(Selection.obj)
DestinY=centroidY(Selection.obj)
Dist = Distance(OriginX, OriginY, DestinX, DestinY, "m")
print Dist
undim OriginX
undim OriginY
undim DestinX
undim DestinY
Undim Dist

PS:Attention il te faudra sélectionner tout le code avant validation sinon la FMB ne prendra en compte que la dernière ligne wink .
A+
Joël

Hors ligne

 

#3 Wed 29 January 2014 23:20

GAEL_AM
Participant actif
Lieu: Engordany (Andorra)
Date d'inscription: 12 Mar 2011
Messages: 58

Re: Calculer les déplacements entre deux points.

Salut Joël,
Oui celas marche mais pour calculer le déplacement un jour J a l’heure H.
En fait je voudrais quelque chose (peut être impossible….) pour calculer touts les déplacements et obtenir une table ou une colonne avec les distances….. Jais 12 individus avec des tables allant de 658 a 2450 positions…

Hors ligne

 

#4 Thu 30 January 2014 10:50

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Calculer les déplacements entre deux points.

Salut,

OK, je croyais que tu voulais interroger ta table ponctuellement.
Maintenant si tu veux les distances dans ta table.
Une solution possible est de créer un nouveau champ dans ta table de nature "entier" appelons le "Num".
Puis tu incrémentes cette colonne avec la fonction "RowId".
--> Table --> Mettre à jour colonne.
Tu remplis la fenêtre avec le nom de table et le nom de la colonne à incrémenter puis dans valeur --> mettre RowId.
Ensuite tu fais une copie de cette table.Tu modifies le champ "Num" avec -> Mettre à jour colonne -> Dans Valeur -> mettre "RowId+1".
Enfin une jointure comme ceci:

Code:

Select * from TaTable, CopieTaTable where TaTable.Num=CopieTaTable.Num into Resultat.

Tu enregistres la table "Resultat", tu effaces les champs superflus.
Ainsi tu retrouveras dans cette table pour chaque ligne, 2 séries de coordonnées (début et fin d'un segment de déplacement).
Avec ceci il est facile de créer ces segments de droite avec la fonction "CreateLine(X1, Y1, X2, Y2)".
Pour terminer il te faut créer une nouvelle colonne "Distance" -> pour la remplir --> Utilise la fonction "ObjectLen(obj, "m")".
Un lien intéressant --> http://georezo.net/forum/viewtopic.php?id=90006.
PS:Il est trés facile maintenant d'interroger ta table pour connaître les heures où tes bouquetins sont les plus actifs wink
En espérant que celà t'aide
A+
Joël

Dernière modification par Spacejo (Thu 30 January 2014 10:52)

Hors ligne

 

#5 Thu 30 January 2014 11:05

GAEL_AM
Participant actif
Lieu: Engordany (Andorra)
Date d'inscription: 12 Mar 2011
Messages: 58

Re: Calculer les déplacements entre deux points.

Salut,
Je sui spas très douer sur mapbasic voire nul… (je sais je dois mi mettre…)
Peux-tu m’écrire le code….
Merci
Gaël

Hors ligne

 

#6 Thu 30 January 2014 11:12

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Calculer les déplacements entre deux points.

Les manips qui te posent problème sont t'elles celles ci:
"CreateLine(X1, Y1, X2, Y2)" et "ObjectLen(obj, "m")"?

Hors ligne

 

#7 Thu 30 January 2014 11:19

GAEL_AM
Participant actif
Lieu: Engordany (Andorra)
Date d'inscription: 12 Mar 2011
Messages: 58

Re: Calculer les déplacements entre deux points.

les deux manips....

Hors ligne

 

#8 Thu 30 January 2014 11:30

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Calculer les déplacements entre deux points.

Pour "objectlen" tu peux passer par la fenêtre --> Table -> Mettre à jour colonne -> à côté de valeur, il y a un bouton qui te donne accés à toutes les fonctions dispos.Il te suffit de cliquer sur objectLen et de modifer l'unité de mesure (passer de Km en m).
Pour "CreateLine".
Lors de la création de tes segments:

Code:

update TaTable Set obj = createline(ChampX1, ChampY1, ChampX2, ChampY2)

PS:Lorsque tu auras de nouveaux points

Code:

Select * from TaTable where Champ distance=0 into AModifier
update AModifier Set obj = createline(ChampX1, ChampY1, ChampX2, ChampY2)

Dernière modification par Spacejo (Thu 30 January 2014 11:36)

Hors ligne

 

#9 Thu 30 January 2014 11:54

GAEL_AM
Participant actif
Lieu: Engordany (Andorra)
Date d'inscription: 12 Mar 2011
Messages: 58

Re: Calculer les déplacements entre deux points.

Ok je tape directement « CreateLine(X1, Y1, X2, Y2) », et ca ne marchais pas… je sais je suis nul sur mapbasic…
la le problème c’est que touts mes point ont disparus de la table carte et je ne vois pas de segments non plus….
Jai ecris ca :
update Resultat Set obj = createline(_X, _Y, _X_2, _Y_2)Browse * From Resultat

Hors ligne

 

#10 Thu 30 January 2014 12:00

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Calculer les déplacements entre deux points.

Attention avant toutes manips --> Faire une copie de tes tables que tu mets de côté (sécurité oblige wink )
Si on reprends toute la procédure où en es tu?

Hors ligne

 

#11 Thu 30 January 2014 12:05

GAEL_AM
Participant actif
Lieu: Engordany (Andorra)
Date d'inscription: 12 Mar 2011
Messages: 58

Re: Calculer les déplacements entre deux points.

jen suis a crée les lignes, jais fais ma table resultat en « combinan » les deux tables (la copie avec Rowid+1 et la l’originelle) jais enregistre, ré ouvert ma table, et quand jais ecris:
“update Resultat Set obj = createline(_X, _Y, _X_2, _Y_2)Browse * From Resultat”
sur ma table Resultat, tous les points on disparus et aucun segment est apparu

Hors ligne

 

#12 Thu 30 January 2014 12:10

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Calculer les déplacements entre deux points.

et avec ceci:

Code:

Set coordsys table Resultat
update Resultat set obj=createline(_X, _Y, _X_2, _Y_2)

Dernière modification par Spacejo (Thu 30 January 2014 12:10)

Hors ligne

 

#13 Thu 30 January 2014 12:14

GAEL_AM
Participant actif
Lieu: Engordany (Andorra)
Date d'inscription: 12 Mar 2011
Messages: 58

Re: Calculer les déplacements entre deux points.

idem....
l'ordi pedale un moment mais et tout disparé

Dernière modification par GAEL_AM (Thu 30 January 2014 12:15)

Hors ligne

 

#14 Thu 30 January 2014 12:30

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Calculer les déplacements entre deux points.

Quand on ne peux pas passer par la porte on passe par la fenêtre wink
Il existe un petit outil --> http://www.mapinfotools.com/index.php?o … ;Itemid=53
A+
Joël

Hors ligne

 

#15 Thu 30 January 2014 12:32

GAEL_AM
Participant actif
Lieu: Engordany (Andorra)
Date d'inscription: 12 Mar 2011
Messages: 58

Re: Calculer les déplacements entre deux points.

On va faire ca!!!
Merci encore Joël

Hors ligne

 

#16 Thu 30 January 2014 12:49

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Calculer les déplacements entre deux points.

Encore mieux --> Voir -> Create Lines from Database
--> http://www.geoas.net/Help/1200/GeoAS_Ma … tabase.htm
Voilà où télécharger --> http://www.geoas.de/pages/en/download-center.php

Dernière modification par Spacejo (Thu 30 January 2014 13:04)

Hors ligne

 

#17 Thu 30 January 2014 14:01

GAEL_AM
Participant actif
Lieu: Engordany (Andorra)
Date d'inscription: 12 Mar 2011
Messages: 58

Re: Calculer les déplacements entre deux points.

Salut,
Avec:
Set CoordSys Table Resultat
   Update Resultat set obj = createLine(_X, _Y, _X_2, _Y_2)
Ca marche!!
Merci encore de ta patience!

Hors ligne

 

Pied de page des forums

Powered by FluxBB