¿Crear "mapa de calor" basado en polilíneas a partir de pistas GPS?

30

Este invierno planeo rastrear mi esquí alpino / snowboard usando un GPS. La mayor parte de mi conducción ocurrirá en el mismo resort. Me gustaría poder crear una especie de "mapa de calor" que muestre la cantidad de ejecuciones que he realizado en un área determinada. A medida que agrego más y más trazas GPS a mi base de datos, mi objetivo sería ver una especie de mapa de calor lineal de las áreas más transitadas. Dada la naturaleza del esquí alpino, es de esperar que las líneas de telesilla cuesta arriba sean las "más populares" porque serán los únicos lugares visitados una y otra vez.

Dado que 1) mi pista no será la misma cada vez y 2) el área cubierta por seguir una "carrera" puede ser de unos cientos de pies de ancho, ¿cuál podría ser la mejor manera de analizar estos datos "lineales" para crear una clasificación de mapa de calor? Mis pensamientos eran amortiguar las líneas, luego intersecar las polys para poner en marcha una especie de diagrama de Venn. Mi preferencia es usar tecnologías de código abierto. Tengo QGIS y PostGIS cargados y disponibles.

ACTUALIZACIÓN : Con respecto a la respuesta de @ blah238, estaba pensando en algo que podría "recopilar" el número de pases ("carreras") a través de un área y luego simbolizar por el conteo. Conceptualmente, esto sería similar a " Recoger eventos " de ArcGIS (pero para líneas, no puntos) o Contraer líneas duales a línea central (pero para líneas múltiples en aproximadamente la misma área).

Un ejemplo más visual de un concepto similar podría ser un mapa de flujo de tráfico, donde las áreas altamente congestionadas equivaldrían a áreas / pistas de esquí "muy transitadas":

Google Traffic Map

He leído las siguientes preguntas que pueden dar algunas ideas, pero en realidad no abordan lo que estoy tratando de lograr:

Trayectorias de agrupamiento (datos GPS de puntos (x, y)) y minería de datos

Error de gestión con rutas GPS (marco teórico?)

RyanDalton
fuente
Suponiendo que usaría datos GPX, solo debería tomar lecturas lat / long a intervalos, por lo que ya debería estar en las características de punto. ¿No sería capaz de usar un mapa de calor en eso? ¿O no estás usando un dispositivo GPX compatible?
RomaH
Ah er. Leí mal lo que querías ... No importa.
RomaH
@RomaH, en realidad, es muy posible que tengas algo con tu idea de usar los puntos para generar un mapa de calor en lugar de usar las líneas. No había considerado usar los puntos de origen antes, así que esto es algo que definitivamente investigaré.
RyanDalton
Se trata de un campo, donde una calle tiene bordes bien definidos. Si desea hacer un modelo de línea, puede hacer varias superposiciones de poli, uniones y usar el complemento point2one para hacer un mapa de líneas con valores heredados. Pero luego debe decidir a qué distancia necesita esquiar para justificar una nueva característica de línea. Personalmente para mí, estaría contento con una solución de mapa de calor, pero de nuevo, no estoy al tanto de sus necesidades.
RomaH
Me topé con esta pregunta, que es una forma genial de lograr esencialmente lo mismo, pero usando los puntos de seguimiento GPS para crear el mapa de calor.
RyanDalton

Respuestas:

17

He trabajado un poco en esto en GeoTools / GeoServer extendiendo la transformación de representación de mapa de calor para admitir geometrías que no sean puntos.

Mapa de calor de entregas de pizza

Todavía no está terminado, pero puede obtener la rama de características de mi repositorio en GitHub .

La captura de pantalla es de pistas GPS de cuando trabajaba como repartidor de pizza.

smithkm
fuente
Todavía no está generando geometrías vectoriales, pero está recolectando superposición para dar un valor más alto.
smithkm
alguna idea de cómo obtener este efecto con solo postgis? o qgis?
chrismarx
15

Aquí es un buen tutorial para hacer exactamente eso usando MapBox y TileMill :

Captura de pantalla

blah238
fuente
1
De acuerdo, este concepto es casi idéntico y podría hacerse fácilmente en cualquier SIG. ¿Pero esto básicamente sugiere "hacer todas sus pistas rojas con un búfer verde claro" y se destacarán en el mapa? Para efectos visuales, definitivamente trabajaré. Creo que originalmente estaba pensando en intentar algo más "analítico" que pudiera mostrar "recuentos" de "ejecuciones" en este ejemplo. Seguiré reflexionando sobre eso.
RyanDalton
@ blah238 Estaba buscando un ejemplo similar ... muchas gracias !!
Sunil
1
@ blah238, después de pensarlo un poco más, proporcionó una respuesta muy válida a mi pregunta inicial. Debería haber sido más claro en mis pensamientos. Gracias por su respuesta, y he actualizado mi pregunta para reflejar con mayor precisión lo que estaba tratando de lograr. Agradezco la ayuda.
RyanDalton
5

Aquí está mi enfoque simple:

  1. cree un nuevo mapa en umap: http://umap.openstreetmap.fr/en
  2. haga clic en Importar datos y seleccione todos los archivos gpx que tenga y cárguelos en el mapa (puede importarlos todos a la vez)
  3. ingrese Editar configuración del mapa> Propiedades predeterminadas, elija opacidad 0.25, peso 10.

Los tres pasos anteriores tomarán 5 minutos y aquí está el resultado: ingrese la descripción de la imagen aquí

matell
fuente
3

Aquí está mi enfoque sobre QGIS. Esto fue para un conjunto de rutas de autobuses, y quería identificar qué caminos tenían la mayor densidad de rutas de autobuses que pasaban.

  • Usé el complemento Qchainage para convertir mis líneas en puntos. Probé diferentes escenarios hasta que produje muchos puntos por línea (1,500 por línea, y las líneas eran de aproximadamente 9kms).
  • Aplica la representación de simbología de mapa de calor que Qgis ha incorporado en la pestaña de estilo. propiedades de capa> estilo> mapa de calor
  • Juega con el radio y el valor máximo. Asegúrese de seleccionar la mejor calidad de representación.
  • Creó una nueva rampa de color (elija continuo) a partir del negro y cualquier otro color brillante en el otro lado.

Y voilá.

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Diego canales
fuente
2

Me doy cuenta de que esta es una publicación bastante antigua, sin embargo, la encontré haciendo una investigación similar. Desarrollé un modelo / flujo de trabajo bastante simple que puede lograr esto en ArcGIS (posiblemente QGIS, pero aún no lo he implementado allí).

Si tiene un archivo GPX o TCX específicamente (aunque cualquier archivo de puntos funciona), simplemente se puede abrir en Excel, luego convertirlo en un CSV y llevarlo a ArcGIS. Con la Points to Lineherramienta, convierte los puntos GPS del CSV en trayectorias clasificando los puntos por tiempo (también puede agruparlos usando un identificador único, que en este caso puede ser por el centro turístico, la ruta o la fecha específica del evento) - Por ejemplo, día 1, 2, etc. Esto creará una sola capa de polilínea (a menos que las agrupe por la ID única). Luego usa la Split Line at Verticesherramienta que crea segmentos de línea entre cada punto sucesivo. Desde allí, utiliza la Line Densityherramienta que cuenta el número de líneas que pasan a través de una celda dado un tamaño de celda y radio de búsqueda específicos, y genera un ráster. Este ráster se puede simbolizar como un mapa de calor.

Tengo, y continúo implementando esto con frecuencia, e incluí un resultado de muestra a continuación:

ingrese la descripción de la imagen aquí

Andrew-Ryan
fuente
Esa parece una técnica realmente interesante. Nunca completé esta idea, así que lo investigaré más a fondo. Gracias por responder a una vieja pregunta!
RyanDalton
¡No hay problema! Es un modelo bastante simple que usa solo esas tres herramientas de Arc Toolbox. Alternativamente, podría simplificarlo aún más a dos herramientas usando solo las Track Intervals to Liney las Line Densityherramientas
andrew-ryan
1

Nuestro uso de esto implica enrutar a los estudiantes a su escuela usando PGRouting.

Los resultados de una ruta individual son, en esencia, un conjunto de nodos (que se convierten en líneas uniendo opcionalmente los bordes relacionados).

Si enruta a varios estudiantes a una sola escuela, la colección de salida de nodos se puede mostrar en QGIS utilizando el renderizador de mapa de calor, que muestra los 'puntos calientes' de las rutas recopiladas a la escuela (ver más abajo).

Estos mapas se utilizaron para informar áreas que deberían ser objeto de una infraestructura de seguridad adicional, como cruces, señales, señales, etc.

ingrese la descripción de la imagen aquí

DPSSpacial
fuente
Gracias por compartir la imagen, me gusta. Intentaré procesar los vértices GPX en lugar de las líneas para ver si los puntos de acceso funcionan dentro de un pequeño
RyanDalton
0

Cree una cuadrícula reticular, convierta gpsdata en archivos de formas, poligonalice las líneas, extraiga datos de puntos x, y de las tablas, cree una densidad de superficie o un mapa de calor utilizando la práctica estándar en este punto. Luego, podría fusionarse con datos de vectores lineales para obtener valores de píxeles en una pantalla ráster o para un procesamiento numérico adicional.

ametralladora
fuente
0

La mayoría de las personas (incluido yo mismo) mira un archivo GPX y lo considera una secuencia de posiciones (puntos), mientras que puede verse perfectamente como una secuencia de segmentos de línea .

La formulación de su problema implica un "mapa de calor" para que pueda inspeccionar visualmente sus trayectorias, por lo que hay una manera bastante simple de omitir la parte compleja de la suma numérica delegándola directamente en un motor de trazado.

Cuando dices "amortiguar las líneas", eso sería grosor de línea. Cuando dices "recoge los pases", eso significaría trazar una y otra vez con líneas transparentes , y así "construir" más y más color.

Por lo tanto, le sugiero que trace cada trayectoria como una sola polilínea con un grosor suficiente para que haya cierta superposición (depende del zoom, por lo que querrá establecer el grosor en la distancia del mapa en lugar de píxeles), y con una opacidad bastante baja , digamos, 0.05, en negro.

Es importante no trazar cada segmento, porque si lo hace, sus extremidades se superpondrán, duplicando su opacidad y creando un "punto" de color más fuerte.

Al final, obtendrá una imagen en escala de grises sobre la que puede aplicar el mapa de colores de su elección.

Probablemente lo haría usando Python / Cairo, pero Python / Matplotlib lo haría, y Html / Canvas o Html / SVG (o SVG programático) ciertamente lo harían.

El resultado final dependería solo de la resolución de sus medios de salida.

heltonbiker
fuente
0

Soy consciente de que esta es una pregunta bastante antigua, pero como esta publicación es uno de los principales resultados de búsqueda para este tema, pensé en publicar un enlace a un flujo de trabajo para producir mapas de calor de polilínea en ArcGIS que responda esta pregunta, ya que actualmente no hay solución para ArcGIS en esta publicación.

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

bendycat_bumbersplat
fuente