Czy tworzysz „mapę cieplną” opartą na polilinii ze ścieżek GPS?

30

Tej zimy planuję śledzić narciarstwo zjazdowe / snowboarding za pomocą GPS. Większość mojej jazdy będzie miała miejsce w tym samym ośrodku. Chciałbym móc stworzyć rodzaj „mapy cieplnej”, która pokazuje liczbę przebiegów, które wykonałem w danym obszarze. W miarę dodawania coraz więcej śladów GPS do mojej bazy danych, moim celem byłoby zobaczyć rodzaj liniowej mapy cieplnej najczęściej podróżowanych obszarów. Biorąc pod uwagę naturę narciarstwa zjazdowego, można się spodziewać, że linie wyciągów krzesełkowych będą „najgorętsze”, ponieważ będą to jedyne odwiedzane miejsca w kółko.

Biorąc pod uwagę, że 1) moja ścieżka nie będzie za każdym razem taka sama i 2) obszar objęty jednym „biegiem” może mieć szerokość kilkuset stóp, co może być najlepszym sposobem analizy tych „liniowych” danych w celu utworzenia sortowania mapy cieplnej? Myślałem o buforowaniu linii, a następnie przecięciu biegunów, aby uruchomić coś w rodzaju diagramu Venna. Wolę korzystać z technologii open source. Mam QGIS i PostGIS załadowane i dostępne.

AKTUALIZACJA : W odniesieniu do odpowiedzi @ blah238, myślałem o czymś, co może być w stanie „zebrać” liczbę przebiegów („przebiegów”) przez obszar, a następnie symbolizować przez liczbę. Koncepcyjnie byłoby to podobne do ArcGIS „ Zbieraj zdarzenia ” (ale dla linii, a nie punktów) lub Zwiń podwójne linie do linii środkowej (ale dla wielu linii w mniej więcej tym samym obszarze).

Bardziej wizualnym przykładem podobnej koncepcji może być mapa ruchu, w której obszary o dużym natężeniu ruchu byłyby równe trasom / obszarom o dużym natężeniu ruchu:

Mapa ruchu Google

Przeczytałem następujące pytania, które mogą dać pewne pomysły, ale tak naprawdę nie odnoszą się do tego, co próbuję osiągnąć:

Grupowanie trajektorii (dane GPS punktów (x, y)) i wyszukiwanie danych

Zarządzanie błędami w trasach GPS (ramy teoretyczne?)

RyanDalton
źródło
Zakładając, że korzystasz z danych GPX, powinien on po prostu dokonywać odczytów lat / long w odstępach, więc powinien już znajdować się w funkcjach punktowych. Czy nie byłbyś wtedy w stanie użyć mapy cieplnej? A może nie używasz urządzenia kompatybilnego z GPX?
RomaH,
Ach, er. Źle odczytałem, czego chciałeś ... Nieważne.
RomaH
@RomaH, tak naprawdę, bardzo dobrze podoba ci się pomysł wykorzystania punktów do wygenerowania mapy cieplnej zamiast korzystania z linii. Nie rozważałem wcześniej użycia punktów źródłowych, więc zdecydowanie to zbadam.
RyanDalton
Masz do czynienia z polem, gdzie jako ulica ma dobrze zdefiniowane krawędzie. Jeśli chcesz zrobić model liniowy, możesz wykonać kilka nakładek poli, złączeń i użyć wtyczki point2one, aby utworzyć mapę linii z odziedziczonymi wartościami. Ale musisz zdecydować, jak daleko trzeba jeździć na nartach, aby uzasadnić nową cechę linii. Dla mnie osobiście byłbym zadowolony z rozwiązania mapy cieplnej, ale znowu nie jestem świadomy twoich potrzeb.
RomaH
Natknąłem się na to pytanie, które jest bardzo fajnym sposobem na osiągnięcie zasadniczo tego samego, ale przy użyciu GPS Track Points do stworzenia mapy cieplnej.
RyanDalton,

Odpowiedzi:

17

W GeoTools / GeoServer wykonałem trochę pracy, rozszerzając transformację renderowania mapy cieplnej o obsługę geometrii innych niż punkty.

Mapa termiczna dostaw pizzy

To jeszcze nie koniec, ale możesz pobrać gałąź funkcji z mojego repozytorium na GitHub .

Zrzut ekranu przedstawia ślady GPS z czasów, kiedy pracowałem jako kierowca dostawy pizzy.

smithkm
źródło
Nadal nie generuje geometrii wektorowych, ale zbiera nakładanie się, aby uzyskać wyższą wartość.
smithkm
jakieś pomysły, jak uzyskać ten efekt za pomocą postgis? lub qgis?
chrismarx
15

Oto dobry samouczek do robienia tego dokładnie przy użyciu MapBox i TileMill :

Zrzut ekranu

blah238
źródło
1
Uzgodniono, że koncepcja ta jest prawie identyczna i można ją łatwo wykonać w dowolnym systemie GIS. Ale to w zasadzie sugeruje „po prostu uczyń wszystkie swoje trasy czerwonymi jasnozielonym buforem”, a wyróżnią się na mapie? Dla efektu wizualnego na pewno będę działać. Wydaje mi się, że pierwotnie zastanawiałem się nad próbą czegoś bardziej „analitycznego”, co mogłoby pokazać „liczbę” „uruchomień” w tym przykładzie. Zastanowię się nad tym.
RyanDalton
@ blah238 Szukałem podobny przykład ... wielkie dzięki !!
Sunil
1
@ blah238, Po dłuższym zastanowieniu udzieliłeś bardzo ważnej odpowiedzi na moje pierwsze pytanie. Powinienem był bardziej jasno myśleć. Dziękuję za odpowiedź i zaktualizowałem moje pytanie, aby dokładniej odzwierciedlało to, co próbowałem osiągnąć. Doceniam pomoc.
RyanDalton
5

oto moje proste podejście:

  1. utwórz nową mapę w umap: http://umap.openstreetmap.fr/en
  2. kliknij opcję Importuj dane, a następnie zaznacz wszystkie posiadane pliki GPX i prześlij je na mapę (możesz zaimportować wszystkie jednocześnie)
  3. wejdź w Edytuj ustawienia mapy> Właściwości domyślne, wybierz krycie 0,25, waga 10.

Powyższe trzy kroki potrwają 5 minut i oto wynik: wprowadź opis zdjęcia tutaj

Matell
źródło
3

Oto moje podejście do QGIS. Dotyczyło to zestawu tras autobusowych i chciałem ustalić, które drogi mają największe zagęszczenie przejeżdżających linii autobusowych.

  • Użyłem wtyczki Qchainage do konwersji moich linii na punkty. Testowałem różne scenariusze, dopóki nie wygenerowałem dużej liczby punktów na linię (1500 na linię, a linie miały około 9 km).
  • Zastosowano renderowanie symboliki termicznej, które Qgis ma wbudowane w zakładkę stylu. właściwości warstwy> styl> mapa cieplna
  • Graj promieniem i wartością maksymalną. Wybierz najlepszą jakość renderowania.
  • Utworzono nowy kolor rampy (wybierz ciągły), zaczynając od czerni i dowolnego innego jasnego koloru po drugiej stronie.

I voila.

wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

Diego Canales
źródło
2

Zdaję sobie sprawę, że jest to dość stary post, jednak natknąłem się na niego podczas podobnych badań. Opracowałem dość prosty model / przepływ pracy, który może to osiągnąć w ArcGIS (prawdopodobnie QGIS, ale jeszcze go tam nie wdrożyłem).

Jeśli masz konkretnie plik GPX lub TCX (choć działa dowolny plik punktowy), można go po prostu otworzyć w programie Excel, a następnie przekonwertować na plik CSV i przenieść do ArcGIS. Za pomocą tego Points to Linenarzędzia konwertujesz punkty GPS z CSV na trajektorie, sortując punkty według czasu (możesz również pogrupować je za pomocą unikalnego identyfikatora, który w tym przypadku może być według ośrodka, trasy lub konkretnej daty zdarzenia - np. Dzień 1, 2 itd.). Spowoduje to utworzenie pojedynczej warstwy polilinii (chyba że zgrupujesz je według unikalnego identyfikatora). Następnie używasz Split Line at Verticesnarzędzia, które tworzy segmenty linii między każdym kolejnym punktem. Stamtąd używasz Line Densitynarzędzia, które zlicza liczbę linii przechodzących przez komórkę, biorąc pod uwagę określony rozmiar komórki i promień wyszukiwania, i wysyła raster. Ten raster może być symbolizowany jako mapa ciepła.

Często to wdrażam i kontynuuję, a poniżej zamieściłem przykładowy wynik:

wprowadź opis zdjęcia tutaj

andrew-ryan
źródło
To wygląda na naprawdę interesującą technikę. Nigdy nie zrealizowałem tego pomysłu, więc zbadam to dalej. Dziękujemy za odpowiedź na stare pytanie!
RyanDalton
Nie ma problemu! Jest to dość prosty model wykorzystujący tylko te trzy narzędzia z Arc Toolbox. Alternatywnie, można go uprościć dalej do dwóch narzędzi przy użyciu tylko te Track Intervals to Line, a Line Densitynarzędzia
andrew-Ryan
1

Wykorzystanie tego polega na przekierowaniu uczniów do ich szkoły za pomocą PGRouting.

Wyniki poszczególnych tras stanowią u podstaw zbiór węzłów (które są przekształcane w linie poprzez opcjonalne połączenie powiązanych krawędzi).

Jeśli poprowadzisz wielu uczniów do jednej szkoły, zbiór wyjściowy węzłów można następnie wyświetlić w QGIS za pomocą renderera map cieplnych, który pokazuje „punkty aktywne” zebranych tras do szkoły (patrz poniżej).

Mapy te zostały wykorzystane do informowania obszarów, które powinny być celem dalszej infrastruktury bezpieczeństwa, takich jak skrzyżowania, sygnały, znaki itp.

wprowadź opis zdjęcia tutaj

DPSSpatial
źródło
Dzięki udostępnianie obrazu, podoba mi się. Spróbuję przetworzyć wierzchołki GPX zamiast linii, aby sprawdzić, czy punkty aktywne działają w małym
RyanDalton
0

Utwórz siatkę siatki, przekonwertuj dane gps na pliki kształtów, poligonizuj linie, wyodrębnij dane punktów x, y z tabel, utwórz gęstość powierzchni lub mapę cieplną, stosując standardową praktykę w tym miejscu. Następnie można połączyć z liniowymi danymi wektorowymi, aby uzyskać wartości pikseli na wyświetlaczu rastrowym lub w celu dalszego przetwarzania numerycznego.

chwytak
źródło
0

Większość ludzi (w tym ja) patrzy na plik GPX i myśli o nim jako o sekwencji pozycji (punktów), podczas gdy zamiast tego można go doskonale postrzegać jako sekwencję segmentów linii .

Twoje sformułowanie problemu obejmuje „mapę cieplną”, dzięki czemu możesz wizualnie sprawdzić swoje trajektorie, więc istnieje dość prosty sposób na ominięcie złożonej części polegającej na rozkładaniu liczb przez przekazanie jej bezpośrednio do silnika kreślenia.

Gdy powiesz „buforuj linie”, będzie to grubość linii. Kiedy mówisz „zbieraj przepustki”, oznaczałoby to ciągłe kreślenie przezroczystych linii, a tym samym „budowanie” coraz więcej kolorów.

Sugeruję więc, aby narysować każdą trajektorię jako pojedynczą polilinię o grubości wystarczającej do pewnego nakładania się (zależy to od powiększenia, więc będziesz chciał ustawić grubość w odległości mapy zamiast pikseli), z dość niskim kryciem , powiedzmy, 0,05, na czarno.

Ważne jest, aby nie drukować każdego segmentu, ponieważ jeśli to zrobisz, ich końce będą się nakładać, podwajając ich krycie i tworząc „kropkę” o mocniejszym kolorze.

Na koniec otrzymasz obraz w skali szarości, na którym możesz zastosować wybraną mapę kolorów.

Prawdopodobnie zrobiłbym to przy użyciu Python / Cairo, ale zrobiłby to Python / Matplotlib, a Html / Canvas lub Html / SVG (lub programowy SVG) z pewnością by to zrobiły.

Wynik końcowy zależałby tylko od rozdzielczości nośnika wyjściowego.

heltonbiker
źródło
0

Zdaję sobie sprawę, że to dość stare pytanie, ale ponieważ ten post jest jednym z najlepszych wyników wyszukiwania dla tego tematu, pomyślałem, że opublikuję link do przepływu pracy do tworzenia map ciepła polilinii w ArcGIS, który odpowiada na to pytanie, ponieważ obecnie nie ma rozwiązania dla ArcGIS w tym poście.

https://luke-webber.github.io/polyline-heatmap/

bendycat_bumbersplat
źródło