Comment puis-je calculer la distance entre les coordonnées sur plusieurs lignes correspondantes dans Excel?


0

J'ai une feuille avec 20 000 lignes. Chaque ligne a un ID d'objet, qui peut apparaître plusieurs fois dans la feuille. Chaque ligne contient également des coordonnées, car ce sont des points du monde réel. Chaque objet peut apparaître plusieurs fois dans la feuille car une ligne représente un objet trouvé dans une image. Et 1 image = 1 jour, d’où l’attribut date.

Je dois interroger la colonne avec les ID d'objet, ce que je sais faire à l'aide de INDEX: MATCH. Mais je dois ensuite calculer, pour chaque objet, la distance entre les coordonnées successives. Je calcule la distance en utilisant cette formule: d = (sqrt ((x2-x1) ^ 2 + (y2-y1) ^ 2)). Le problème que j'ai est comment créer une formule Excel pour calculer entre les lignes de correspondance successives.

screenshot

Dans l'exemple, j'ai mis en surbrillance les lignes avec l'ID d'objet 30. Elles apparaissent 7 fois. Il me faudrait calculer la distance entre les entrées successives, 30 (1) vs. 30 (2), 30 (2) vs. 30 (3), etc., soit six calculs de distance. Je dois le faire pour chaque ID d'objet (à l'exception des ID d'objet uniques)


1) Pour 7 occurrences, vous parlez de 21 distances? 2) Quelle est la formule?
fixer1234

@ fix1234 Désolé, je devrais préciser que plusieurs occurrences d'un ID d'objet sont des objets apparaissant sur plusieurs jours. Ainsi, les distances ne doivent être calculées que séquentiellement, pas entre chaque enregistrement (la distance parcourue chaque jour). Il n'y aurait besoin que de 5 calculs pour 7 enregistrements, distance entre les jours 1 et 2, distance entre les jours 2 et 3, etc. etc. La formule pour la distance entre les coordonnées est d = (sqrt ((x2-x1) ^ 2 + (y2-y1) ^ 2))
T.Fazio

(1) Les identifiants apparaissant plusieurs fois, vous devriez probablement supprimer le mot «unique» ou bien préciser votre sens. (2) Si vous avez sept enregistrements pour un objet, alors vous avez six paires d'enregistrements consécutifs - voir erreur de poteau de clôture . (3) C’est drôle; @ fix1234 et je vis sur une planète sphérique - tu vis sur un monde en deux dimensions? Et vous avez un accès Internet là-bas?! ……………………………………… S'il vous plaît ne répondez pas dans les commentaires; modifier votre question pour le rendre plus clair.
G-Man

J'ai corrigé l'ID et vous aviez raison d'avoir six paires au lieu de cinq, ce qui était mon mauvais, mis à jour en post. Cependant, je ne comprends pas votre petite fouille dans votre troisième commentaire.
T.Fazio

Le point 3 de G-Man concerne la manière dont vous calculez la distance. Si les distances sont courtes, votre formule est probablement assez proche. Mais la distance réelle est le long d'un arc car la surface est sphérique. Point-à-point serait la distance tunnel sous la surface. Le cas le plus défavorable serait les côtés opposés de la planète (diamètre par rapport à la circonférence). Voir en.wikipedia.org/wiki/Great-circle_distance .
fixer1234

Réponses:


1

J'ai supposé une disposition de données minimale - les lignes contiennent l'ID, la coordonnée X, et Y se coordonnent dans les colonnes A, B, et C, respectivement. En colonne D, utilisation MATCH pour trouver la ligne suivante avec le même identifiant. En colonnes E et F, utilisation INDEX trouver les coordonnées X et Y pour la prochaine occurrence du même identifiant. En colonne G, calcule la distance entre ce point et le suivant.

  • D2=MATCH(A2, A3:A$9, 0)+ROW()
  • E2=INDEX(B:B, $D2, 1)
  • F2=INDEX(C:C, $D2, 1)
  • G2=IF(ISERROR(D2), "", SQRT((E2-B2)^2+(F2-C2)^2))

(remplaçant le 9 dans la formule pour D2 avec votre dernier numéro de ligne de données valide) et faites glisser / remplir vers le bas.

Les valeurs de distance s'avèrent être des entiers parce que j'ai choisi les deux premiers triples pythagoriciens (3-4-5 et 5-12-13) pour les vecteurs inter-points.


Merci Scott, cela a bien fonctionné après un peu de jeu.
T.Fazio
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.