Я играл с плагином Heatmap для QGIS, и мне интересно, можно ли создать карту тепла с использованием аналогичного плагина / инструмента, который использует полигоны и точки?
Я хотел бы получить представление о плотности данных во многом так же, как это делает плагин heatmap с точками.
Следующее изображение - грубый набросок моего желаемого результата:
Ответы:
Может быть, вы можете сгенерировать набор случайных точек в ваши полигоны, для этого есть инструмент QGIS ? Если у вас есть перекрывающиеся полигоны, то в этой области их плотность выше. Затем используйте тепловую карту для точек. Вам нужно будет провести несколько раундов, чтобы найти оптимальное количество очков, так как результат зависит от этого.
Если ваши данные показывают распределение некоторых мест обитания, что в любом случае нечетко, то это может быть ближе всего к реальной ситуации, когда одна точка отражает приблизительно один образец.
источник
Если я правильно понимаю ваш вопрос, я делал нечто подобное раньше; просто надо было вспомнить что я сделал.
Это будет работать, если ваши полисы перекрываются, а не один и тот же слой. Если они находятся на одном слое и это возможно, переместите их в отдельные слои, если вы этого не сделаете, целевой слой просто унаследует одно из значений.
Ключевой процесс, который нужно использовать, - это объединение атрибутов по местоположению в меню Вектор> Управление данными . Здесь укажите ваше шестиугольное поле в качестве целевого слоя и слой объединения в качестве одного из ваших полигонов. Назовите получившийся слой и установите флажок « Сохранить все записи» .
Полученный слой должен быть копией вашего шестиугольного слоя со всеми ячейками, которые пересекали ваш слой многоугольника. Теперь для цели используйте ваш последний полученный слой в качестве целевого слоя и присоединитесь к следующему слою с полигонами. Возьмите получившийся лазер и присоединитесь к следующему слою, пока не объедините все свои слои.
Ваш последний слой должен был унаследовать все поля атрибутов предыдущих слоев, и большая часть его может иметь значение NULL.
Именно здесь мы должны поиграть в некоторые из шейп-файлов, поэтому, если вы не сохранили слой как шейп-файл, сделайте это сейчас. И удалите слой из вашего рабочего пространства в QGIS.
Откройте файлы * .dbf файла формы в OpenOffice Calc, НЕ используйте Excel. Это будет искажать файл, и это бесполезно, узнал, что трудный путь. И не переупорядочивайте данные, они также очень специфичны для порядка строк в файле. Убедитесь, что NULL теперь являются нулями, если они не являются, замените их осторожно.
Теперь вставьте шейп-файл в QGIS и откройте таблицу атрибутов . Теперь он должен показывать нули вместо NULL. Воспользуйтесь Калькулятором полей и суммируйте поля, созданные для вашей работы, в новом столбце.
Теперь у вас есть суммированное поле, которое должно с некоторой точностью показывать значения всех коллекций объектов, перекрывающих целевое поле. Вы можете использовать функцию Symbology, чтобы раскрасить полигоны, основываясь на значении вашего суммированного поля для хорошей карты хороплетов.
Если вы хотите избавиться от всех неиспользуемых полей в файле. Просто откройте файл dbf снова в Calc и удалите ненужные столбцы по желанию. Лично я бы посоветовал учиться, чтобы освоиться с шейп-файлом, как я это делаю часто.
источник
Это общий рабочий процесс с использованием растров. Я не знаю, как это сделать в QGIS.
Альфа / нулевые значения и / или прозрачность слоя позволят вам наложить растр на любую базовую карту.
источник
Попробуйте вместо этого, если это соответствует вашим требованиям, это не вычислительное решение для набора данных, но если вы ищете просто инфографическое решение, вы можете попробовать это вместо этого.
Атрибуты объединения по местоположению с вашими гексагональными ячейками в качестве цели и данными о точках в качестве объединения. Выберите, чтобы сохранить все функции. Установите символы для ячеек с унаследованным значением желаемого цвета и установите прозрачность примерно на 50%.
Затем на вашем слое с полисами круга установите их символику того же цвета и прозрачности. Поместите круг poly перед ячейкой poly. Это создаст иллюзию увеличения насыщенности при увеличении значения.
Если вы хотите, вы также можете извлечь линии из всех слоев и наложения сверху, чтобы контуры подслоев не выглядели закрашенными другими слоями.
Вам придется играть с цветами и прозрачностью, чтобы найти лучшее решение. Я считаю, что те же цвета выглядят лучше, но эксперимент.
источник
Я предлагаю вам использовать плагин GRASS - QGIS имеет довольно ограниченную функциональность (и зачем изобретать колесо в python, когда такое программное обеспечение, как GRASS уже существует?):
[следующие две строки могут быть необходимы, в зависимости от того, имеют ли ваши полигоны значение]
это где мы складываем перекрытие в полигонах, а затем делаем растр на основе этих столбцов
источник
С простой QGIS это может быть сложно, вам может понадобиться пользовательский сценарий или использовать пространственную базу данных, такую как PostGIS или Spatialite. Я бы создал обычную сетку точек с PostGIS или сгенерировал бы как текстовый файл CSV и импортировал бы это. Затем нарисуйте круг вокруг каждой точки с помощью st_buffer или прямоугольников с помощью ST_MakeEnvelope и подсчитайте все перекрывающиеся области каждого буфера. Тогда вы, вероятно, захотите удалить все 0 значений, если это означает «нет данных». Наконец, вы можете сделать тепловую карту для сетки, используя counter в качестве поля Weight.
Вам нужно поэкспериментировать с различными разрешениями сетки, чтобы найти оптимальное. По сути, это очень похоже на растровый подход, предложенный Кевином, просто пребывание в векторном мире.
источник