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»:
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?)
la source
Réponses:
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.
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.
la source
Voici un bon tutoriel pour faire exactement cela en utilisant MapBox et TileMill :
la source
voici mon approche simple:
Les trois étapes ci-dessus prendront 5 minutes et voici le résultat:
la source
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.
Et voilà.
la source
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 Line
outil, 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 Vertices
outil qui crée des segments de ligne entre chaque point successif. À partir de là, vous utilisez l'Line Density
outil 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:
la source
Track Intervals to Line
lesLine Density
outils etNotre 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.
la source
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.
la source
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.
la source
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/
la source