Policzenie ilości kresek w danym miejscu

Odpowiedz Nowy wątek
2019-04-19 23:56
0

Dzięki programowi GPSMapEdit udało mi się nanieść wiele moich rowerowych tras na jednej zbiorczej mapce.
Teraz chciałbym pójść krok dalej. Chcę sprawdzić ile razy przejechałem przez dane miejsce. W przypadku dużej ilości śladów nie jest to możliwe by zrobić to ręcznie. W przykładzie załączonym (link z obrazkiem) jest już nieco gorzej, a przy większej ilości danych to już jest niemożliwe.
Już tłumaczę. Niebieska kreska czemu służy? Chciałbym policzyć przecięcie tej niebieskiej kreski z ilością czerwonych kresek - czyli ile razy przejechałem przez to dane miejsce.
Dodałem zdjęcie, jak najbardziej mam świadomość tego, że konieczny byłby właściwy plik:)

Ma Ktoś pomysł jak takie coś zrobić?
przyklad.ilerazydanemiejsce.png

Dzięki :)

edytowany 9x, ostatnio: matiz17, 2019-04-20 00:04

Pozostało 580 znaków

2019-04-20 00:05
0

Jeśli każdą trasę masz w postaci par liczb (x, y) to sprawdź, czy są one w bliskim otoczeniu interesujących się punktów. W tym przypadku (x, y) mogą oznaczać współrzędne geograficzne lub kartezjańskie.

Pozostało 580 znaków

2019-04-20 00:08
0

"Jeśli każdą trasę masz w postaci par liczb (x, y)"
Nie rozumiem, nie mam chyba tak. Są to pliki .gpx , .tcx lub od pewnego czasu .fit
Natomiast są współrzędne geograficzne w tym pliku zapisywane - co 1 czy tam 2 sekundy, w zależności :)

No i masz dostęp do tych współrzędnych? Z jaką dokładnością są one zapisywane? - Pyxis 2019-04-20 00:09

Pozostało 580 znaków

2019-04-20 00:11
0

Ciężko powiedzieć z jaką dokładnością, bo musiałbym to sprawdzić. Na pewno pewien odchył jest, ale myślę, że dość dokładnie :)

Pozostało 580 znaków

2019-04-20 00:25
1
  • Ustalasz sobie jakieś miejsce, które Cię interesuje. Na przykład przejazd kolejowy o współrzędnych (x0, y0),
  • Zakładasz jakieś niewielkie otoczenie wokół tego miejsca (dx, dy),
  • Bierzesz pojedynczą trasę i dla każdego punktu (x, y) sprawdzasz, czy zachodzi:
    x > (x0 - dx) i x < (x0 + dx) i y > (y0 - dy) i y < (y0 + dy).
  • Jeśli choć jeden punkt (x, y) spełnia ten warunek, to znaczy że jadąc tą trasą minąłeś to miejsce.

Pozostało 580 znaków

2019-04-20 02:07
0

A z pliku z GPSMapEdit nie ma szans tego zrobić?

Przecież @Pyxis nie wspomniał ani słowa o formacie - nie ma on znaczenia dla algorytmu. Potrzebujesz mieć spis punktów - a to skąd je weźmiesz (czy z GPSMapEdit, czy może rand()-em) jest drugorzędne. - Patryk27 2019-04-20 10:32

Pozostało 580 znaków

2019-04-20 13:00
0

To tego typu dane? https://ridewithgps.com/trips/1.json (link z innego Twojego wątku).
Tam zdarzają się 9 sek. odstępy czasu. Nie wiem jak to się przekłada na przejechaną odległość w tym czasie ale:

  1. możesz zwiększyć odpowiednio dx, dy w algorytmie @Pyxis
  2. potraktować punkty jako odcinki i badać ich przecięcia z zadanym odcinkiem, prostokątem lub okręgiem

Jeżeli podczas jednego przejazdu robisz "kółka" to licz przecięcia tylko gdy minął jakiś ustalony czas od poprzedniego znalezionego przecięcia.

Pozostało 580 znaków

2019-04-20 15:58
0

"potraktować punkty jako odcinki i badać ich przecięcia z zadanym odcinkiem, prostokątem lub okręgiem"
Dokładnie chodzi mi o takie coś... chcę potraktować odcinki jako punkty i zbadać ich przecięcie z zadanym odcinkiem (no bo prosta to już w nieskończoność)

Pozostało 580 znaków

2019-04-20 16:09
2019-04-23 17:16
0

Ktoś pomoże na przykładzie?

Pozostało 580 znaków

2019-04-23 18:35
0

Zainstaluj sobie Pythona, do niego bibliotekę geopandas i/lub shapely, tam możesz wczytywać wszelkiej maści mapy numeryczne i na pęczki metod w stylu cośtam.intesects(srośtam) dla właściwie dowolnego obiektu geometrycznego:

  • punktu
  • linii
  • multilinii np. jakichś łamanych
  • poligonów
  • multipoligonów

Jak interesuje Cię też "bliskie sąsiedztwo" czegoś, dają też gotowe metody które pozwalają zrobić np. obrys wokół interesującej Cię geometrii i wtedy też łatwo sprawdzisz, czy jakieś linie są tożsame. Do wyboru, do koloru. A, no i generalnie mają wsparcie dla różnych projekcji, więc omijają Cię zagadki w stylu "na mapie A 0.001 to 20cm, a na mapie B odległość 0.001 to już 200m" :D


Prosząc o pomoc w wiadomości prywatnej odbierasz sobie szansę na otrzymanie pomocy od kogoś bardziej kompetentnego :)

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0