distance entre deux localisations extremes

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Delalande Lucas
Messages : 40
Enregistré le : 14 Déc 2017, 08:48

distance entre deux localisations extremes

Messagepar Delalande Lucas » 09 Mar 2018, 16:03

Bonjour,

J'ai des localisation gps sur plusieurs jours et je souhaite calculer la distance entre le premier et le dernier point de la journée pour chaque journée ..
Imaginons le tableau suivant :
>-DF

idligne X Y Date Jour
1 977388.2 6483090 2017-11-01 06:16:48 01-11
2 977386.8 6483094 2017-11-01 10:17:05 01-11
3 977391.7 6483089 2017-11-01 14:17:38 01-11
4 977372.1 6483221 2017-11-02 06:18:15 02-11
5 977372.1 6483221 2017-11-02 09:18:15 02-11
6 977224.0 6483352 2017-11-02 18:18:29 02-11
...

Il me faudrait donc un tapply avec les distances entre ligne 3 et 1 (correspondant au 01/11) et la distance entre 6 et 4 (correspondant au 2/11).. etc

Dites moi si je ne suis pas clair..

Merci,

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: distance entre deux localisations extremes

Messagepar Pierre-Yves Berrard » 10 Mar 2018, 10:15

Bonjour,

Une solution avec le package dplyr :

Code : Tout sélectionner

library(dplyr)

DF %>%
  group_by(Date) %>%
  summarise(DIST = ma_distance(first(X), first(Y), last(X), last(Y)))


Il faut bien sûr définir au préalable la formule adéquate pour ma_distance

Code : Tout sélectionner

ma_distance <- function(x1, y1, x2, y2) {
  # ...
}
PY

Delalande Lucas
Messages : 40
Enregistré le : 14 Déc 2017, 08:48

Re: distance entre deux localisations extremes

Messagepar Delalande Lucas » 12 Mar 2018, 14:28

merci ! malheureusement je ne vois pas comment créer cette fonction ..

Bertrand Vassor
Messages : 46
Enregistré le : 18 Sep 2017, 10:18

Re: distance entre deux localisations extremes

Messagepar Bertrand Vassor » 12 Mar 2018, 15:36

Bonjour,

Je comprends qu'on est dans un plan. Si on applique Pythagore la distance est égale à :
sqrt ((x'-x)^2 +(y'-y)^2) ou x, y sont les coordonnées d'un point i et x', y' les coordonnées d'un point k.

On peut éventuellement (je pense qu'il y a d'autres méthodes) faire une double boucle pour calculer toutes les distances de tous les points 2 à 2 par jour et prendre la valeur maximale.

Cdlt.
BVA

Delalande Lucas
Messages : 40
Enregistré le : 14 Déc 2017, 08:48

Re: distance entre deux localisations extremes

Messagepar Delalande Lucas » 12 Mar 2018, 15:53

Oui c'est un peu ce que j'etait entrain d'essayer.. mais sans succés..

pour l'istant j'ai une liste qui contient mes tableau par jour :
a$1
x y date ...

977388.2 6483090 2017-11-01 06:16:48
977386.8 6483094 2017-11-01 10:17:05
977391.7 6483089 2017-11-01 14:17:38



a$2
x y date

977372.1 6483221 2017-11-02 06:18:15
977372.1 6483221 2017-11-02 09:18:15
977224.0 6483352 2017-11-02 18:18:29
...

J'arrive a calculer separement (par jour) mes distance entre derniere loc et premiere de la journée avec :
avec par ex pour la liste 1 (a$1) :
spDists(a[[1]][1,1:2], a[[i]][nrow(a[[i]]),1:2])

mais je n'arrive pas a automatiser le truc pour l'avoir directement sur chaque liste..


j'ai tenté ca :
test<-0
vec<-as.numeric(names(a))
for (i in vec){
test<-spDists(as.matrix(a[[i]][1,1:2]),as.matrix(a[[i]][nrow(a[[i]]),1:2]))
}

mais pas très doué en boucle je crois..

Delalande Lucas
Messages : 40
Enregistré le : 14 Déc 2017, 08:48

Re: distance entre deux localisations extremes

Messagepar Delalande Lucas » 13 Mar 2018, 08:07

je m'en suis sorti avec

sapply(1:length(a), function(i) as.numeric(dist(a[[i]][c(1,nrow(a[[i]])),c(1,2)])))

Delalande Lucas
Messages : 40
Enregistré le : 14 Déc 2017, 08:48

Re: distance entre deux localisations extremes

Messagepar Delalande Lucas » 13 Mar 2018, 10:07

efin ca, ca me donnait la distance entre le dernier point de la journée et le premier, maintenant pour avoir la distance maximale parcourue entre deux points de la journée je sais pas trop comment faire,

en effet la matrice de distance entre tous les points deux a deux semble bien mais comment la générer ?..


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités

cron