J'ai un cadre de données géopandas d'un tas de chaînes de lignes qui ont des données associées à chaque sommet / point:
Point_x = (Lat, Lon, Time, ID, Data1, Data2, Data3)
Les points sont convertis en chaînes de lignes en fonction de l'ID et classés par heure.
Je veux briser les chaînes de lignes où au point où une condition est remplie. En ce moment, c'est quand la distance entre les points est supérieure à une valeur. À l'avenir, cela pourrait être le cas où une fonction des champs de données a une certaine valeur. Par exemple, divisez une chaîne de caractères lorsque la vitesse passe à 5 km / h.
Le problème actuel est que certaines des pistes sont formées à partir de points qui ont des identifiants en double, de sorte que la chaîne de caractères saute d'avant en arrière sur d'énormes distances et je veux un seuil pour briser ces lignes.
Avez-vous des idées sur la bonne façon de structurer cela ou des bibliothèques / méthodes qui pourraient être utiles?
La trame de données a plus de 150 000 pistes avec de nombreux points par piste, donc l'efficacité serait agréable.
Voici un exemple des pistes DF:
ID geometry
204235000 LINESTRING (37.62001 -28.99535, 37.62015 -28.9...
205400000 LINESTRING (3.807816666666666 -18.083181666666...
207138000 LINESTRING (22.73206 -34.97915833333333, 22.73...
209016000 LINESTRING (8.447673333333331 -23.522783333333...
Voici un exemple des points DF. Il y a 18 colonnes comprenant Datetime, Point (Lon, Lat), Speed, Size etc etc:
Index Heading Latitude Longitude ID
20 92.8 -35.946802 13.089695 210725000
21 93.5 -35.946912 13.091808 210725000
22 95.4 -35.965520 13.497698 210725000
23 94.7 -35.965803 13.501898 210725000
24 94.9 -35.965987 13.504573 210725000
EDIT: J'ai essayé d'être un peu plus clair.
gd.head()
serait la bienvenue.Réponses:
Je n'ai pas encore utilisé / geopandas galbé, donc je ne peux fournir que le pseudocode:
La fonction de distance devrait être quelque chose que vos bibliothèques offrent déjà, ou vous devrez l'implémenter vous-même (mon copain Pythagoras vous aidera).
L'efficacité peut être améliorée selon les besoins à partir de là, mais cela devrait être un bon point de départ.
la source