J'essaie de filtrer les coordonnées de 2 listes prises à partir d'un fichier txt par distance, je ne peux pas comprendre ce qui ne va pas car il ne supprime pas toutes les coordonnées qui ne sont pas Ne pas passer l'instruction if si la distance est supérieure à 12 mètres, supprimer l'élément dans la liste.Python - boucle - liste de calcul de distance supprimer
code:
x = [] # contains a list of x coordinates in EPGS: 2202
y = [] # contains a list of y coordinates in EPGS: 2202
keepItWorking = 0 # this is supposed to avoid offset once a coordinate is deleted.
xStore = x[0] # Stores x variable to evaluate distance and delete coordinates.
yStore = y[0] # Stores y variable to evaluate distance and delete coordinates.
def distance(x1, x2, y1, y2):
return (math.sqrt(((x2 - x1)**2) + ((y2 - y1)**2)))
for i in range(1, len(x)):
try:
if distance(x[i - keepItWorking], xStore, y[i - keepItWorking], yStore) > 12 #if distance is greater than 12 store coordinates values and proceed to delete next coordinates with the new evaluation.
xStore = x[i - keepItWorking]
yStore = y[i - keepItWorking]
elif distance(x[i - keepItWorking], xStore, y[i - keepItWorking], yStore) < 12 # if distance is lower than 12 meters delete values from list.
del x[i - keepItWorking]
del y[i - keepItWorking]
keepItWorking = keepItWorking + 1
except IndexError: # avoids error when index gets out of range becouse of the items eliminations.
continue
Apparemment, je résolu le problème que je faisais tout à réécrire le code ici ... Il fonctionne parfaitement.
Pourriez-vous s'il vous plaît partager des données avec nous? –
La suppression d'éléments d'une liste lors d'une itération par index est problématique. Lorsque vous supprimez un élément, tous les index changent de 1. –
Est-ce que x [0] correspond toujours à y [0]? Pourquoi ne pas stocker les coordonnées sous forme de paires ordonnées par liste (tuples)? Code-Apprentice a raison. Je pense que l'utilisation d'une compréhension de liste est votre meilleur pari. Pouvez-vous partager un exemple de liste de points, quelles comparaisons doivent être effectuées et à quoi devrait ressembler la liste filtrée? – RagingRoosevelt