Mam ramkę danych geopandas wiązki linii, które mają pewne dane związane z każdym wierzchołkiem / punktem:
Point_x = (Lat, Lon, Time, ID, Data1, Data2, Data3)
Punkty są konwertowane na linie na podstawie identyfikatora i uporządkowane według czasu.
Chcę przełamać pasy w miejscu, w którym spełniony jest jakiś warunek. W tej chwili odległość między punktami jest większa niż pewna wartość. W przyszłości może się zdarzyć, że funkcja pól danych ma pewną wartość. Na przykład podziel linię, gdy prędkość przekroczy 5 km / h.
Obecny problem polega na tym, że niektóre ścieżki są tworzone z punktów, które mają zduplikowane identyfikatory, więc linia liniowa skacze tam iz powrotem na duże odległości i chcę, aby próg przekroczył te linie.
Jakieś pomysły na właściwy sposób ustrukturyzowania tego lub bibliotek / metod, które mogą być przydatne?
Rama danych ma ponad 150 000 ścieżek z wieloma punktami na ścieżkę, więc wydajność byłaby niezła.
Oto przykład utworów 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...
Oto próbka z punktów DF. Istnieje 18 kolumn, w tym Datetime, Point (Lon, Lat), Speed, Size itp. Itd .:
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
EDYCJA: Próbowałem być trochę jaśniejszy.
gd.head()
byłaby mile widziana.Odpowiedzi:
Nie używałem jeszcze shapely / geopandas, więc mogę podać tylko pseudokod:
Funkcja odległości powinna być czymś, co już oferują twoje biblioteki, albo będziesz musiał ją zaimplementować (stary przyjacielu Pitagoras ci pomoże).
Stamtąd można poprawić efektywność, ale powinien to być dobry punkt wyjścia.
źródło