Saya memiliki kerangka data geopanda dari sekelompok linestrings yang memiliki beberapa data yang terkait dengan setiap titik /:
Point_x = (Lat, Lon, Time, ID, Data1, Data2, Data3)
Poin dikonversi ke linestrings berdasarkan ID dan dipesan oleh Time.
Saya ingin memecahkan linestrings di mana pada titik di mana beberapa kondisi terpenuhi. Saat ini juga ketika jarak antara Poin lebih besar dari beberapa nilai. Di masa depan bisa jadi di mana fungsi bidang Data adalah beberapa nilai. Misalnya, pisahkan linestring ketika Kecepatan melintasi 5 kpj.
Masalah saat ini adalah bahwa beberapa trek terbentuk dari titik-titik yang memiliki duplikat ID sehingga linestring melompat bolak-balik jarak yang sangat jauh dan saya ingin ambang batas untuk memecah garis-garis ini.
Adakah ide tentang cara yang benar untuk menyusun ini atau perpustakaan / metode yang mungkin berguna?
Kerangka data memiliki lebih dari 150k trek dengan banyak titik per trek di dalamnya sehingga efisiensi akan lebih baik.
Berikut adalah contoh trek 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...
Berikut ini contoh dari poin DF. Ada 18 kolom termasuk Datetime, Point (Lon, Lat), Speed, Size dll.
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: Berusaha sedikit lebih jelas.
gd.head()
akan disambut.Jawaban:
Saya belum pernah menggunakan shapely / geopanda, jadi saya hanya bisa memberikan pseudocode:
Fungsi jarak haruslah sesuatu yang sudah ditawarkan lib Anda, atau Anda harus mengimplementasikannya sendiri (teman Pythagoras akan membantu Anda).
Efisiensi dapat ditingkatkan sesuai kebutuhan dari sana, tetapi harus menjadi titik awal yang baik.
sumber