Создание «тепловой карты» на основе полилиний из треков GPS?

30

Этой зимой я планирую отслеживать свое катание на горных лыжах / сноуборде с помощью GPS. Большая часть моей езды будет проходить на одном курорте. Я хотел бы иметь возможность создать своего рода «тепловую карту», ​​которая показывает количество прогонов, которые я сделал в данной области. По мере того, как я добавляю все больше и больше трасс GPS в свою базу данных, моей целью будет увидеть своего рода линейную тепловую карту наиболее посещаемых районов. Учитывая характер катания на горных лыжах, можно ожидать, что подъемные канатные дороги будут самыми «горячими», потому что это будут единственные места, посещаемые снова и снова.

Учитывая, что 1) моя дорожка не будет всегда одинаковой и 2) область, покрываемая после одного «пробега», может иметь ширину в несколько сотен футов, что может быть лучшим способом для анализа этих «линейных» данных для создания сортировки тепловой карты? Мои мысли заключались в том, чтобы буферизовать линии, а затем пересекать полисы, чтобы создать нечто вроде диаграммы Венна. Я предпочитаю использовать технологии с открытым исходным кодом. У меня загружены и доступны QGIS и PostGIS.

ОБНОВЛЕНИЕ : Что касается ответа @ blah238, я думал о чем-то, что могло бы «собрать» количество проходов («пробегов») через область, а затем символизировать счетчиком. Концептуально это будет похоже на ArcGIS " Собирать события " (но для линий, а не точек) или Свернуть двойные линии на осевую линию (но для нескольких линий примерно в одной и той же области).

Более наглядным примером подобной концепции может быть карта транспортных потоков, где сильно перегруженные районы будут приравниваться к «сильно пройденным» лыжным трассам / зонам:

Google Traffic Map

Я прочитал следующие вопросы, которые могут дать некоторые идеи, но они на самом деле не касаются того, что я пытаюсь достичь:

Кластеризация траекторий (данные GPS точек (x, y)) и добыча данных

Управление ошибками с помощью GPS-маршрутов (теоретическая основа?)

RyanDalton
источник
Предполагая, что вы будете использовать данные GPX, они должны просто брать широту / долготу с интервалами, поэтому они должны быть уже в точечных объектах. Не могли бы вы тогда использовать тепловую карту? Или вы не используете совместимое с GPX устройство ??
RomaH
Ах, э Я неправильно понял, что вы хотели .. Неважно.
RomaH
@ Рома, на самом деле, вы вполне можете задуматься о том, чтобы использовать точки для создания тепловой карты вместо использования линий. Раньше я не рассматривал вопрос об использовании исходных точек, поэтому я обязательно расскажу об этом.
RyanDalton
Вы имеете дело с полем, где у улицы четко очерчены края. Если вы хотите создать линейную модель, вы можете сделать несколько наложений, объединений и использовать плагин point2one для создания линейной карты с унаследованными значениями. Но тогда вам нужно решить, с какого расстояния нужно кататься на лыжах, чтобы оправдать новую функцию линии. Лично для меня я был бы рад решению с тепловой картой, но опять же, я не знаю о ваших потребностях.
RomaH
Я наткнулся на этот вопрос, который представляет собой очень крутой способ выполнить, по сути, то же самое, но с использованием точек трека GPS для создания тепловой карты.
RyanDalton

Ответы:

17

Я проделал небольшую работу над этим в GeoTools / GeoServer, расширив преобразование рендеринга Heatmap для поддержки геометрии, отличной от точек.

Карта доставки пиццы

Он еще не закончен, но вы можете получить ветку функций из моего репозитория на GitHub .

На скриншоте изображены GPS-треки, когда я работал водителем доставки пиццы.

smithkm
источник
Он по-прежнему не выводит векторные геометрии, но собирает перекрытия, чтобы дать более высокое значение.
smithkm
какие-нибудь идеи, как получить этот эффект только с postgis? или QGIS?
Крисмаркс
15

Вот хороший учебник для того, чтобы сделать именно это с помощью MapBox и TileMill :

Скриншот

blah238
источник
1
Согласитесь, эта концепция практически идентична и может быть легко реализована в любой ГИС. Но это в основном предлагает "просто сделать все ваши треки красными со светло-зеленым буфером", и они будут выделяться на карте? Для визуального эффекта я обязательно буду работать. Я предполагаю, что изначально думал о том, чтобы попробовать что-то более «аналитическое», которое могло бы показать «количество» «пробегов» в этом примере. Я продолжу обдумывать это.
RyanDalton
@ blah238 Я искал похожий пример ... большое спасибо !!
Сунил
1
@ blah238, немного подумав, ты дал очень правильный ответ на мой первоначальный вопрос. Я должен был быть более ясным в своих мыслях. Спасибо за ваш ответ, и я обновил свой вопрос, чтобы более точно отразить то, что я пытался достичь. Я ценю помощь.
RyanDalton
5

вот мой простой подход:

  1. создайте новую карту в umap: http://umap.openstreetmap.fr/en
  2. нажмите «Импорт данных», выберите все имеющиеся у вас файлы gpx и загрузите их на карту (вы можете импортировать их все сразу)
  3. введите Редактировать настройки карты> Свойства по умолчанию, выберите непрозрачность 0,25, вес 10.

Три вышеуказанных шага займут 5 минут, и вот результат: введите описание изображения здесь

matell
источник
3

Вот мой подход к QGIS. Это было для ряда автобусных маршрутов, и я хотел определить, какие дороги имели наибольшую плотность проходящих автобусных маршрутов.

  • Использовал плагин Qchainage, чтобы конвертировать мои линии в точки. Протестировал разные сценарии, пока я не набрал много точек на линию (1500 на линию и линии были около 9 км).
  • Применен рендеринг символики тепловой карты, встроенный в Qgis на вкладке стиля. Свойства слоя> Стиль> Тепловая карта
  • Играйте с радиусом и максимальным значением. Убедитесь, что вы выбрали лучшее качество рендеринга.
  • Создана новая цветовая шкала (выберите непрерывную), начиная с черного и любого другого яркого цвета с другой стороны.

И вуаля.

введите описание изображения здесь введите описание изображения здесь

Диего Каналес
источник
2

Я понимаю, что это довольно старый пост, однако я наткнулся на него, проводя аналогичные исследования. Я разработал довольно простую модель / рабочий процесс, который может выполнить это в ArcGIS (возможно, QGIS, но я еще не реализовал это там).

Если у вас есть файл GPX или TCX специально (хотя любой файл точек работает), его можно просто открыть в Excel, затем преобразовать в CSV и перенести в ArcGIS. Используя Points to Lineинструмент, вы конвертируете точки GPS из CSV в траектории, сортируя точки по времени (вы также можете сгруппировать их, используя уникальный идентификатор, который в этом случае может быть по курорту, маршруту или конкретной дате события - например, День 1, 2 и т. д.). Это создаст один слой полилинии (если вы не сгруппируете их по уникальному идентификатору). Затем вы используете Split Line at Verticesинструмент, который создает отрезки между каждой последовательной точкой. Оттуда вы используете Line Densityинструмент, который подсчитывает количество линий, проходящих через ячейку с заданным размером ячейки и радиусом поиска, и выводит растр. Этот растр может быть обозначен как тепловая карта.

Я имею, и продолжаю реализовывать это часто, и включил пример результата ниже:

введите описание изображения здесь

андрей-Райана
источник
Это похоже на действительно интересную технику. Я никогда не заканчивал эту идею, поэтому я буду исследовать это дальше. Спасибо за ответ на старый вопрос!
RyanDalton
Нет проблем! Это довольно простая модель, использующая только эти три инструмента из Arc Toolbox. С другой стороны , вы могли бы упростить его дальше двух инструментов используя только Track Intervals to Lineи те Line Densityинструменты
Андрей.Фил Райана
1

Мы используем это для направления учащихся в их школу с использованием PGRouting.

В основе результатов отдельного маршрута лежит множество узлов (которые превращаются в линии путем необязательного соединения связанных ребер).

Если вы направите несколько учеников в одну школу, то выходной набор узлов затем можно отобразить в QGIS с помощью средства визуализации тепловых карт, которое показывает «горячие точки» собранных маршрутов в школу (см. Ниже).

Эти карты использовались для информирования областей, которые должны быть предназначены для дальнейшей инфраструктуры безопасности, такой как переходы, сигналы, знаки и т. Д.

введите описание изображения здесь

DPSSpatial
источник
Спасибо, что поделились за изображение, мне это нравится. Я попытаюсь обработать вершины GPX вместо линий, чтобы увидеть, работают ли горячие точки в маленьком
RyanDalton
0

Создайте решетчатую сетку, преобразуйте gpsdata в шейп-файлы, полигонизируйте линии, извлеките данные точек x, y из таблиц, создайте поверхностную плотность или тепловую карту, используя стандартную практику в этой точке. Затем вы можете объединить линейные векторные данные, чтобы получить значения пикселей на растровом дисплее или для дальнейшей числовой обработки.

Льюис
источник
0

Большинство людей (включая меня) смотрят на файл GPX и думают о нем как о последовательности позиций (точек), в то время как вместо этого он может прекрасно рассматриваться как последовательность отрезков .

Формулировка вашей проблемы включает в себя «тепловую карту», ​​так что вы можете визуально проверить свои траектории, поэтому существует довольно простой способ пропустить сложную часть обработки чисел, делегировав ее непосредственно в механизм построения графиков.

Когда вы говорите «буферизуйте линии», это будет толщина линии. Когда вы говорите «собирать пассы», это будет означать, что вы будете снова и снова рисовать прозрачные линии, таким образом «наращивая» все больше и больше цвета.

Итак, я предлагаю вам построить каждую траекторию как одну ломаную с толщиной, достаточной для того, чтобы иметь некоторое перекрытие (это зависит от масштаба, поэтому вы захотите установить толщину на расстоянии карты вместо пикселей), и с довольно низкой непрозрачностью скажем, 0,05, в черном цвете.

Важно не наносить на график каждый сегмент, потому что если вы это сделаете, их конечности будут перекрываться, удваивая их непрозрачность и создавая «точку» более яркого цвета.

В конце вы получите изображение в оттенках серого, к которому вы можете применить цветовую карту по вашему выбору.

Я, вероятно, сделал бы это с помощью Python / Cairo, но Python / Matplotlib подойдет, и Html / Canvas или Html / SVG (или программный SVG), безусловно, подойдут.

Конечный результат будет зависеть только от разрешения вашего носителя.

heltonbiker
источник
0

Я знаю, что это довольно старый вопрос, но так как этот пост является одним из лучших результатов поиска по этой теме, я решил опубликовать ссылку на рабочий процесс для создания полилинейных тепловых карт в ArcGIS, который отвечает на этот вопрос, так как в данный момент нет решения для ArcGIS.

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

bendycat_bumbersplat
источник