Как выполнить оценку плотности ядра с физическим барьером / границей в QGIS?

18

Кто-нибудь знает о программе, которая позволит выполнять кернеллинг, который учитывает границу при расчете, а не просто маскирует области, которые невозможны?

Итак, я нашел: GME add для Arc10 (Hawthorne Beyer) - я получаю сообщение об ошибке каждый раз, когда задаю шейп-файл границы. Я пробовал много разных типов шейп-файлов, сложностей границ и т. Д. Это прекрасно работает, когда я не указываю границу.

Пакет AdehabitatHR в R (Calange 2011) - это работает хорошо, но указанная вами граница должна быть очень простой - отрезки линий имеют 3-кратную пропускную способность ядра и не слишком извилистые. Для моих данных это большое упрощение.

Поэтому мне интересно, может ли это сделать любое другое программное обеспечение, например, GRASS или QGIS.

Благодарность

KiMs
источник
3
Недавняя статья с R-кодом потенциального интереса, смещением границы и взвешенными ядрами . Весь код - это просто способы взвешивания наблюдений для корректировки смещения границы (если вы можете определить весовые коэффициенты, вы можете использовать любую программу для оценки kde так долго, как это будет, за исключением весовых коэффициентов).
Энди W
1
Точно , как вы хотите, чтобы «счет» за границей? Есть много возможных способов, от маскировки до блокирования распространения и корректировки граничных эффектов.
whuber
1
Спасибо @AndyW и whuber за ответы. Я хочу учесть границу, не допуская распространения ядра по ней. Данные представляют собой местоположения морских черепах, поэтому я знаю, что распределение использования не должно распространяться на сушу, но многие местоположения расположены очень близко к побережью, поэтому я не хочу смещать эти местоположения, просто маскируя части ядра, которые распространился на землю. Спасибо за ссылку на статью - это выглядит великолепно, я постараюсь использовать аналогичный код для моих данных.
KimS

Ответы:

2

В основе оценки плотности ядра лежит понятие расстояния. Лучшее решение, которое я знаю, - использовать лучшую метрику расстояния, которая учитывает границы и различные расходы на проезд. Лучше всего выбрать метрику расстояния, которая соответствует задаче, которую вы пытаетесь решить. Трение по сухопутной местности отлично подходит для пеших прогулок, но не для распыления аэрозолей. Ветровые потоки необходимы для отслеживания парусного судна, но не имеют значения для направления движения.
Теперь, когда понятие подходящих метрик расстояния, как мы надеемся, достаточно мотивировано, я могу рекомендовать стоимостные поверхности в качестве хорошей метрики расстояния общего назначения. Они доступны во всем, от ArcGIS, до R, до JavaScript, и их довольно просто построить. Например, в qGIS вы можете построить растровую поверхность трения и использовать ее для расчета маршрутов. Настройте поверхность трения, чтобы учесть ваши границы, и вы увидите массу ядер вокруг ваших точек, аккуратно распространяющуюся вокруг препятствий.

JasonRDalton
источник
+1 Это потенциально отличный подход. Применив его во многих задачах, я обнаружил, что основная трудность здесь не упомянута: как именно вы предлагаете распределить ядра по этой метрике? Готовые решения не могут этого сделать.
whuber
@whuber Правда, готовые системы обычно не способны одновременно учитывать как стоимость, так и плотность ядра. Я бы предложил использовать поверхность трения для расчета расстояния между точками, а затем непосредственно применить функцию ядра для веса. В qGIS или ArcGIS вы можете написать, используя обычную функцию распределения в python, а в R есть dnorm()функция.
JasonRDalton
Я сделал именно это в некоторых случаях, но размышление над процессом и проверка результатов выявляют некоторые присущие проблемы. Кажется, самое сложное, как гарантировать сохранение массы: вы не можете просто распределить значения в соответствии с, скажем, фиксированной функцией Гаусса, потому что общая результирующая масса точки разброса не будет равна исходной массе. Нет эффективного способа выполнить это вычисление.
whuber
0

Я предлагаю вам попробовать пакет spatstat для R. Там вы можете установить owinобъект для определения границ области исследования. Также есть отличный учебник для этого пакета.

SS_Rebelious
источник
0

Я на самом деле помогаю с плагином AniMove для QGIS, целью которого является избавление от зависимости R для оценки плотности ядра. Посмотрите здесь .

РЕДАКТИРОВАТЬ: плагин на самом деле доступен в качестве экспериментального в официальном хранилище плагинов QGIS

И не стесняйтесь спрашивать в списке , если у вас есть какие-либо предложения

Хорхе Аревало
источник
-2

Я успешно сделал это с помощью Geostatistical Analyst, который является расширением ESRI ArcGIS. Вы можете загрузить набор данных линейных объектов в качестве барьеров, и результаты будут довольно приличными. Я выполняю тестовые прогоны при изменении параметров функций, чтобы получить четкое представление о том, как калибровать инструмент. Чтобы проверить результаты, я рекомендую, если у вас достаточно большой набор данных, это удалить образец точек, сгенерировать поверхность плотности без этих точек, а затем сравнить разницу между значениями удаленных точек со значениями поверхности на расположение удаленных точек.

Петька
источник
2
Не могли бы вы немного усилить этот ответ, чтобы объяснить, как GA - которая реализует методы интерполяции - способна вычислить оценку плотности ядра ? В качестве двойной проверки правильности вашего решения, вы проверили, что интеграл сетки GA был примерно равен сумме всех входных данных?
whuber
1
В 10.1 можно выполнять интерполяцию ядра с барьерами, но это не приводит к оценке плотности. Хотя, учитывая методы, на которые ссылается оригинальный пост, мне интересно, не интересуют ли они оценку ядра Гаусса, а не оценку плотности.
Джеффри Эванс