Créer une «carte thermique» basée sur une polyligne à partir de traces GPS?


30

Cet hiver, je prévois de suivre mon ski alpin / planche à neige à l'aide d'un GPS. La majeure partie de ma circonscription aura lieu au même endroit. J'aimerais pouvoir créer une sorte de "heatmap" qui montre la quantité de courses que j'ai faites dans une zone donnée. Comme j'ajoute de plus en plus de traces GPS à ma base de données, mon objectif serait de voir une sorte de carte thermique linéaire des zones les plus fréquentées. Compte tenu de la nature du ski alpin, vous vous attendez à ce que les télésièges en montée soient les plus "chauds" car ce seront les seuls endroits visités encore et encore.

Étant donné que 1) ma piste ne sera pas la même à chaque fois et 2) la zone couverte par la suite d'une "course" peut avoir une largeur de quelques centaines de pieds, quelle pourrait être la meilleure façon d'analyser ces données "linéaires" pour créer un tri de heatmap? Mes pensées étaient de tamponner les lignes, puis d'intersecter les polys pour obtenir une sorte de truc de diagramme de Venn. Ma préférence est d'utiliser des technologies open source. J'ai QGIS et PostGIS chargés et disponibles.

MISE À JOUR : En ce qui concerne la réponse de @ blah238, je pensais à quelque chose qui pourrait être en mesure de "collecter" le nombre de passes ("runs") à travers une zone, puis symboliser par le nombre. Conceptuellement, cela serait similaire à ArcGIS « Collect Events » (mais pour les lignes, pas les points) ou Collapse Dual Lines To Centerline (mais pour plusieurs lignes dans à peu près la même zone).

Un exemple plus visuel d'un concept similaire pourrait être une carte des flux de trafic, où les zones très encombrées équivaudraient à des pistes / domaines de ski «très fréquentés»:

Google Traffic Map

J'ai lu les questions suivantes qui peuvent donner quelques idées, mais elles ne traitent pas vraiment de ce que j'essaie d'accomplir:

Trajectoires de regroupement (données GPS des points (x, y)) et exploration des données

Gérer les erreurs avec les itinéraires GPS (cadre théorique?)


En supposant que vous utiliseriez des données GPX, elles devraient simplement prendre des lectures lat / longues à intervalles, donc elles devraient déjà être dans les entités ponctuelles. Ne seriez-vous pas en mesure d'utiliser ensuite une carte thermique à ce sujet? Ou n'utilisez-vous pas un appareil compatible GPX ??
RomaH

Ah, euh. J'ai mal lu ce que tu voulais .. Peu importe.
RomaH

@RomaH, en fait, vous pouvez très bien être sur quelque chose avec votre idée d'utiliser les points pour générer une carte thermique au lieu d'utiliser les lignes. Je n'avais pas envisagé d'utiliser les points sources auparavant, c'est donc quelque chose que je vais certainement étudier.
RyanDalton

Vous avez affaire à un champ, où une rue a des bords bien définis. Si vous voulez faire un modèle de ligne, vous pouvez faire plusieurs superpositions de poly, jointures et utiliser le plugin point2one pour créer une carte de ligne avec des valeurs héritées. Mais ensuite, vous devez décider à quelle distance doit-on skier pour justifier une nouvelle fonctionnalité de ligne. Personnellement, pour moi, je serais satisfait d'une solution de carte thermique, mais encore une fois, je ne suis pas au courant de vos besoins.
RomaH

Je suis tombé sur cette question qui est un moyen très cool d'accomplir essentiellement la même chose, mais en utilisant les points de suivi GPS pour créer la carte de chaleur.
RyanDalton

Réponses:


17

J'ai fait un peu de travail à ce sujet dans GeoTools / GeoServer en étendant la transformation de rendu Heatmap pour prendre en charge des géométries autres que des points.

Carte thermique des livraisons de pizza

Ce n'est pas encore fini, mais vous pouvez obtenir la branche de fonctionnalité de mon référentiel sur GitHub .

La capture d'écran est des traces GPS de mon travail de chauffeur-livreur de pizza.


Il ne génère toujours pas de géométries vectorielles, mais il recueille le chevauchement pour donner une valeur plus élevée.
smithkm

des idées pour obtenir cet effet avec seulement des postgis? ou qgis?
chrismarx

15

Voici un bon tutoriel pour faire exactement cela en utilisant MapBox et TileMill :

Capture d'écran


1
D'accord, ce concept est presque identique et pourrait facilement être appliqué à n'importe quel SIG. Mais cela suggère essentiellement "faites juste toutes vos pistes rouges avec un tampon vert clair" et elles se démarqueront sur la carte? Pour l'effet visuel, je vais certainement travailler. Je suppose que je pensais à l'origine essayer quelque chose de plus "analytique" qui pourrait montrer les "comptes" de "runs" dans cet exemple. Je vais continuer à réfléchir.
RyanDalton

@ blah238 Je cherchais un exemple similaire ... merci beaucoup !!
Sunil

1
@ blah238, Après y avoir réfléchi un peu plus longtemps, vous avez fourni une réponse très valable à ma question initiale. J'aurais dû être plus clair sur mes pensées. Merci pour votre réponse, et j'ai mis à jour ma question pour refléter plus précisément ce que j'essayais de réaliser. J'apprécie l'aide.
RyanDalton

5

voici mon approche simple:

  1. créer une nouvelle carte dans umap: http://umap.openstreetmap.fr/en
  2. cliquez sur Importer des données pour sélectionner tous les fichiers gpx dont vous disposez et les télécharger dans la carte (vous pouvez tous les importer en une seule fois)
  3. entrez Modifier les paramètres de la carte> Propriétés par défaut, choisissez l'opacité 0,25, le poids 10.

Les trois étapes ci-dessus prendront 5 minutes et voici le résultat: entrez la description de l'image ici


3

Voici mon approche sur QGIS. C'était pour un ensemble de lignes de bus, et je voulais identifier les routes qui avaient la plus grande densité de lignes de bus qui passaient.

  • J'ai utilisé le plugin Qchainage pour convertir mes lignes en points. J'ai testé différents scénarios jusqu'à ce que je produise beaucoup de points par ligne (1 500 par ligne, et les lignes mesuraient environ 9 km).
  • Appliqué le rendu de symbologie de la carte thermique que Qgis a intégré dans l'onglet style. propriétés des calques> style> heatmap
  • Jouez avec le rayon et la valeur maximale. Assurez-vous de sélectionner la meilleure qualité de rendu.
  • Création d'une nouvelle rampe de couleurs (choisissez continu) à partir du noir et de toute autre couleur vive de l'autre côté.

Et voilà.

entrez la description de l'image ici entrez la description de l'image ici


2

Je me rends compte que c'est un poste assez ancien, cependant, je l'ai rencontré en faisant des recherches similaires. J'ai développé un modèle / flux de travail assez simple qui peut accomplir exactement cela dans ArcGIS (peut-être QGIS, mais je ne l'ai pas encore implémenté là-bas).

Si vous avez un fichier GPX ou TCX spécifiquement (tout fichier de points fonctionne cependant), il peut simplement être ouvert dans Excel, puis converti en CSV et importé dans ArcGIS. À l'aide de l' Points to Lineoutil, vous convertissez les points GPS du CSV en trajectoires en triant les points par le temps (vous pouvez également les regrouper en utilisant un identifiant unique, qui dans ce cas peut être par la station, l'itinéraire ou la date spécifique de l'événement - par exemple Jour1, 2, etc.). Cela créera un seul calque de polyligne (sauf si vous les regroupez par l'ID unique). Vous utilisez ensuite l' Split Line at Verticesoutil qui crée des segments de ligne entre chaque point successif. À partir de là, vous utilisez l' Line Densityoutil qui compte le nombre de lignes passant par une cellule en fonction d'une taille de cellule et d'un rayon de recherche spécifiés, et génère un raster. Ce raster peut être symbolisé par une carte thermique.

J'ai, et continue à implémenter cela fréquemment, et j'ai inclus un exemple de résultat ci-dessous:

entrez la description de l'image ici


Cela ressemble à une technique vraiment intéressante. Je n'ai jamais réalisé cette idée, je vais donc approfondir cette question. Merci d'avoir répondu à une vieille question!
RyanDalton

Aucun problème! Il s'agit d'un modèle assez simple utilisant uniquement ces trois outils de la boîte à outils Arc. Alternativement, vous pouvez le simplifier davantage en deux outils en utilisant uniquement Track Intervals to Lineles Line Densityoutils et
andrew-ryan

1

Notre utilisation de cela implique l'acheminement des élèves vers leur école à l'aide de PGRouting.

Les résultats d'un itinéraire individuel sont à leur base un ensemble de nœuds (qui sont transformés en lignes en joignant éventuellement les bords associés).

Si vous dirigez plusieurs élèves vers une même école, la collection de sortie des nœuds peut ensuite être affichée dans QGIS à l'aide du rendu de la carte thermique, qui affiche les `` points chauds '' des itinéraires collectés vers l'école (voir ci-dessous).

Ces cartes ont été utilisées pour informer les zones qui devraient être ciblées pour d'autres infrastructures de sécurité telles que les passages à niveau, les signaux, les panneaux, etc.

entrez la description de l'image ici


Merci de partager l'image, j'aime ça. J'essaierai de traiter les sommets GPX au lieu des lignes pour voir si les points chauds fonctionnent dans un petit
RyanDalton

0

Créez un maillage graticulaire, convertissez des données gps en fichiers de formes, polygonisez les lignes, extrayez des données de points x, y à partir de tableaux, créez une densité de surface ou une carte thermique en utilisant la pratique standard à ce stade. Vous pouvez ensuite fusionner avec des données vectorielles linéaires pour obtenir des valeurs de pixels dans un affichage raster ou pour un traitement numérique supplémentaire.


0

La plupart des gens (y compris moi-même) regardent un fichier GPX et le considèrent comme une séquence de positions (points), alors qu'il peut parfaitement être vu comme une séquence de segments de ligne .

La formulation de votre problème implique une "carte thermique" afin que vous puissiez inspecter visuellement vos trajectoires, il existe donc un moyen assez simple d'ignorer la partie complexe de la numérotation en la déléguant directement à un moteur de traçage.

Lorsque vous dites "tamponner les lignes", cela correspond à l'épaisseur des lignes. Quand vous dites "collecter les passes", cela signifierait tracer encore et encore avec des lignes transparentes , "construisant" ainsi de plus en plus de couleurs.

Donc, je vous suggère de tracer chaque trajectoire comme une seule polyligne avec une épaisseur suffisante pour qu'il y ait un certain chevauchement (cela dépend du zoom, donc vous voudrez définir l'épaisseur en distance de la carte au lieu de pixels), et avec une opacité assez faible disons 0,05, en noir.

Il est important de ne pas tracer chaque segment, car si vous le faites, leurs extrémités se chevaucheront, doublant leur opacité et créant un "point" de couleur plus forte.

Au final, vous obtiendrez une image en niveaux de gris sur laquelle vous pourrez appliquer la palette de couleurs de votre choix.

Je le ferais probablement en utilisant Python / Cairo, mais Python / Matplotlib le ferait, et Html / Canvas ou Html / SVG (ou SVG programmatique) le ferait certainement.

Le résultat final ne dépendrait que de la résolution de votre support de sortie.


0

Je suis conscient que c'est une question assez ancienne, mais comme ce message est l'un des meilleurs résultats de recherche pour ce sujet, j'ai pensé publier un lien vers un flux de travail pour produire des cartes de chaleur polylignes dans ArcGIS qui répond à cette question, car il n'y a actuellement aucune solution pour ArcGIS dans ce post.

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.