Делаете тепловую карту из линейных данных в QGIS?


12

Я хочу выполнить анализ плотности линии для моих данных линии на основе атрибута.

Опция тепловой карты (анализ плотности ядра) представляется возможной только для точечных данных.

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

Это анализ плотности линий, выполненный с помощью ArcGIS. Я хотел сделать то же самое с QGIS.

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

Можно ли выполнить аналогичный анализ плотности линий в QGIS? и это данные на QGIS

Ответы:


4

Я не могу найти способ сделать это в QGIS через функции DB Manager / SQLite, но в PostGIS мы делаем следующее:

select
(ST_DumpPoints(l.geom)).geom
from linedata as l

Это, экспортированное в новую таблицу, позволяет указать точки линий (в нашем случае от PGRouting учеников до их школы), чтобы мы могли визуализировать горячую точку маршрутов, по которым ученики могли «идти»:

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


4

Фактически, в QGIS можно сделать плотность линий, используя стандартные меню, отправляющие параметры в исполняемые файлы GDAL.

Использование gdal_rasterize с помощью ключа -burn -add создаст растр плотностей линий или точек без радиуса поиска в виде плотностей ядра и тому подобного. Сколько точек или линий в ячейке растра.

gdal_rasterize находится в меню Raster -> Conversion -> Rasterize. В последнем текстовом поле вы нажимаете кнопку карандаша и изменяете текст так, чтобы включить «-burn 1 -add», как показано ниже. Естественно, вы меняете параметры -tr (разрешение) и имя входа и выхода в соответствии с вашей ситуацией.

gdal_rasterize -burn 1 -add -tr 200,0 200,0 -l строк C: /lines.shp C: /out_lines.tif

Юкка Рахконен дал мне подсказки в списке рассылки gdal_dev. Я искал это буквально годы.

Что касается значений растровых ячеек для растровых линий, я не уверен, что представляют собой значения. По-видимому, это не количество строк или длины строк.

Плотность линий с помощью gdal_rasterize


3

Используя подход, аналогичный ответу @DPSSpatial, я бы использовал плагин QChainage для создания равномерно расположенных точек вдоль каждой линии.

Этот плагин генерирует точки вдоль линии, но не копирует атрибуты линии.

Здесь я предполагаю WGS84 (4326, градусы широта / долгота). Вы, вероятно, хотите сделать это, используя соответствующую проекцию в метрах.

  • используйте QChainage для генерации точек вдоль линии, например, каждые 0,05 градуса
  • Буфер этого слоя, например, на 0,001 градуса.
  • Выполните пространственное соединение ( Вектор> Инструменты управления данными> Атрибуты соединения по местоположению ) (используя «Пересечения») от буферизованных точек до исходного слоя линии. Это позволит точкам подобрать значение влияния из линий под ними.
  • Преобразуйте этот слой обратно в точки, используя Vector> Geometry Tools> Polygon Centroids

Наконец, я бы использовал стандартный рендер. Убедитесь, что вы используете точки веса, устанавливая и используя поле влияния.

Теперь у вас должно быть что-то подобное. Числа вдоль каждой линии показывают значение «влияния».

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.