#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 !
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 .
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
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 )
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
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