Создание эффективных тепловых карт?

65

Используя ArcGIS, QGIS, Grass и / или GVSIG:

  • Какие инструменты и процессы используются для построения эффективных тепловых карт?
  • Какие плагины задействованы?
  • Каковы основные требования к данным?
  • Каковы некоторые недостатки существующих тепловых карт?
  • Каковы некоторые из проблем, которые тепловые карты не могут эффективно охватить?
  • Как не сделать тепловую карту?
  • Есть ли лучшие альтернативы (в том же контексте), чем тепловая карта для представления данных?
dassouki
источник
Несмотря на то, что он не использует ни один из указанных вами инструментов, вы, возможно, захотите взглянуть и на этот скрипт на Python. Jjguy.com/heatmap
radek
1
Дассуки, не могли бы вы уточнить, что вы подразумеваете под «тепловой картой»? Википедия, кажется, думает, что это хороплетное исполнение множества значений. Это немного, но важно, отличается от всех ответов в этой цепочке, которые предполагают, что это просто означает карту любого атрибута на основе сетки (или изображения), особенно тот, который был интерполирован на сетку из точечных данных. Ответы на каждый из ваших маркированных вопросов будут разными для настоящей тепловой карты.
whuber

Ответы:

74

Этот вопрос был преобразован в вики сообщества, а вики заблокированы, потому что это пример вопроса, который ищет список ответов и кажется достаточно популярным, чтобы защитить его от закрытия. Его следует рассматривать как особый случай, и его не следует рассматривать как тип вопросов, которые поощряются на этом или любом сайте Stack Exchange, но если вы хотите внести в него больше контента, сделайте это, отредактировав этот ответ. ,


Существует как минимум два разных вида тепловых карт:

  1. Тепловые карты, представляющие концентрацию точек, и
  2. Тепловые карты, представляющие распределения значений атрибутов

У каждого метода есть свои преимущества и проблемы, я боюсь, что вдаваться в детали - это далеко не только вопрос и ответ.

Я попытаюсь перечислить некоторые методы и функции для QGIS и GRASS.

Концентрация очков

Если вы отслеживаете движение дикой природы, транспортных средств и т. Д., Может быть полезно оценить регионы с высокой концентрацией сообщений о местоположении.

Инструменты: например, плагин QGIS Heatmap (доступен в версиях> 1.7.x) или GRASS v.neighbors или v.kernel

Распределение значений атрибутов

Здесь мы в основном говорим более или менее о методах интерполяции. Методы включают в себя:

  1. IDW

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

    Инструменты: модуль интерполяции QGIS (глобальный), GRASS v.surf.idw или r.surf.idw (локальный)

  2. Сплайны

    Опять же, огромное количество возможных реализаций. B-сплайны популярны.

    Инструменты: GRASS v.surf.bspline

  3. кригинг

    Статистический метод с различными подтипами.

    Инструменты: GRASS v.krige (спасибо om_henners за подсказку) или использование R.

землей
источник
1
Через GRASS есть интерфейс для кригинга, v.krige ( grass.osgeo.org/wiki/V.krige_GSoC_2009 ), но он все еще требует R, а также различные R-пакеты и привязки, упомянутые на странице GRASS Wiki.
om_henners
Начиная с QGIS 2.8, существует рендер Heatmap для точечных слоев. Нет необходимости создавать новые данные.
Александр Нето
34

По статистике, вот как вы должны делать тепловую карту:

1) Интегрировать точечные функции. Идея интеграции состоит в том, чтобы взять точки, которые следует считать совпадающими, и объединить их в одно место. Мне нравится использовать анализ ближайшего соседа и использовать соответствующее значение оттуда. (Например, при составлении тепловой карты преступности я использую среднестатистического 1-го ближайшего соседа для базового набора данных участков, против которого геокодируются преступления).

2) Собирать события . Это создает пространственный вес для всех ваших интегрированных точек. Например, если у вас есть 5 событий в одном месте, это станет одной точкой с весом 5. Это важно для следующих двух шагов. Если вам нужно объединить атрибут в пул событий, т. Е. Различные события имеют больший вес, то вы можете использовать пространственное соединение один к одному . Используйте вывод «собирать событие» в качестве цели, а исходные интегрированные события - в качестве функций объединения. Установите правила слияния карт полей, чтобы статистически объединять атрибут интегрированных событий (обычно с суммой, хотя вы можете использовать другую статистику).

3) Определение пика пространственной автокорреляции с помощью I Global Морана . Точно так же, как говорится, запускайте глобальный Моран I с разными интервалами, чтобы определить пиковую полосу пространственной автокорреляции в масштабе, соответствующем анализу, который вы делаете. Возможно, вы захотите снова запустить ближайшего соседа для собранных вами событий, чтобы определить начальный диапазон для ваших испытаний I в Моране. (например, используйте максимальное значение для первого ближайшего соседа)

4) Запустите Getis-Ord Gi * . Используйте фиксированный диапазон расстояний, основанный на анализе I вашего Морана, или используйте фиксированный диапазон расстояний как зону безразличия. Ваш пространственный вес от событий сбора является вашим числовым полем. Это даст вам z-очки для каждой точки события в вашем наборе.

5) Запустите IDW против ваших результатов от Getis-Ord Gi *.

Этот результат значительно отличается от того, что вы получаете с плотностью ядра. Он покажет вам, где высокие значения и низкие значения сгруппированы вместе, а не просто где высокие значения, независимо от кластеризации, как в плотности ядра.

blord-Castillo
источник
20

Хотя мне нравятся тепловые карты, я понимаю, что они часто используются неправильно.

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

Вот веб-интерфейс API .

GeoChalkboard имеет хороший учебник для него .

Вы можете использовать IDW в ArcGIS.

Кирк Куйкендалл
источник
7
Просто помните, что IDW очень чувствителен к местам сбора данных. Например, если данные кластеризованы, вы можете получить плохие математические аномалии.
Рид Копси
@ Reed Copsey Какую альтернативу вы бы предложили?
Fmark
2
@fmark: есть множество процедур интерполяции, которые вы можете использовать вместо IDW, включая подходы на основе естественного соседа / триангуляции, кригинг, сплайнинг / минимальное напряжение и т. д.
Рид Копси,
@ Reed Меня никогда не волновала математическая правильность тепловых карт (возможно, мне следовало бы). Но я думаю, что они полезны для общения кластеров во многих ситуациях. Вот пример карты, которую, я думаю, можно было бы с пользой представить как тепловую карту
Кирк Куйкендалл,
2
Я думаю, что они отличный инструмент. Математическая / статистическая корректность, вероятно, важна только в том случае, если вы используете результаты для принятия решений, но если вы хотите передать общий смысл распределения, IDW, вероятно, подойдет. (Это скорее вопрос кластеров, вызывающих большие «перекосы» в результатах тепловой карты, особенно между кластерами, из-за математических аномалий.)
Рид Копси
12

Для простых тепловых карт и генерации контурных линий я использовал QGis с интеграцией Grass:

  1. Загрузить данные точек
  2. Загрузите ограничивающую форму - например, границу округа
  3. Создать набор карт Grass
  4. Откройте панель инструментов Grass и щелкните список модулей, чтобы найти каждый инструмент.
  5. Загрузите модуль v.in.ogr.qgis и загрузите как точечные данные, так и форму границы, каждый раз не забывая щелкнуть по выводу вида для каждого - дайте каждому полезное имя, например, pointdata и maskshape
  6. Преобразуйте maskshape в растр, чтобы использовать его в качестве маски с v.to.rast и добавьте в набор карт - назовите его как maskraster - это может занять время для сложных полигонов.
  7. Загрузите модуль r.mask, чтобы следующее действие было ограничено буферной областью.
  8. Запустите v.surf.rst, чтобы создать интерполированную сетку из точек данных - выберите соответствующий столбец в качестве поля атрибута для выполнения интерполяции и назовите его чем-то вроде растровой поверхности . Это бит, который требует времени и генерирует растр, который можно использовать в качестве тепловой карты или можно затемнять в 3D.
  9. Закройте панель инструментов Grass
  10. Используйте плагин GDAL Raster Contours, выбрав в качестве входа растр GRASS; оставьте значение уровней по умолчанию равным 10, и выберите выходной каталог, в который будет сохранен шейп-файл контуров. Проверьте «Имя атрибута» и введите имя.

NB. Чтобы это работало, наборы данных должны быть в одной проекции!

Адриан
источник
4

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

Тепловые карты могут быть отличными, но классический недостаток и проблема заключается в интерпретации. Возьмите разницу между тепловой картой преступных событий и картой (высокой температурой или иным образом) уровня / доли преступности. Хотя тепловая карта событий может быть полезна с точки зрения определения общей плотности событий, она является слепой в качестве оценки риска, но ее часто интерпретируют или неправильно используют таким образом. Рассмотрим одинаковое количество событий в регионе того же размера и формы, но с другим населением, в то время как преступность может быть сконцентрирована в области, что может быть просто потому, что в этом пространстве больше людей. Кроме того, показатели для данных о событиях, например, по преступлениям, могут быть сложными для моделирования, поскольку для создания растра тепловой карты им может потребоваться событие, подобное модели населения, но люди не склонны стоять на месте.

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

Крейг Стоббс
источник
1
Вы делаете очень правильные замечания. Эти две проблемы на самом деле являются классическими проблемами географии. Первая проблема связана с интерпретацией лежащей в основе неравномерности пространства, т. Е. Поскольку распределение людей неоднородно (некоторые районы малонаселены), вероятность совершения преступления также неоднородна. Шаблон в одном из них вынужден шаблоном в другом. Вторая проблема масштаба является частью проблемы изменяемой единицы площади (MAUP), которая будет влиять на любую меру, которая зависит от области для измерения, например, от плотности. Это классическая проблема в большинстве географических работ.
WhiteboxDev
Рассмотрим также полигоны Тиссена как первый взгляд на пространственные структуры. Они довольно просты, но также способны показывать много деталей, являются точным интерполятором и, кажется, позволяют обойти некоторые проблемы масштаба, которые мешают другим более сложным методам интерполяции - gislandscapeecology.blogspot.com/2016/04/…
Том Дилтс