You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用amt包计算家域核UD时重复顶点问题的解决方法

解决方案

1. 地理坐标系下的重复坐标处理

即使是WGS84坐标系,添加极小抖动不会影响家域分析结果,先对每个子数据集去重并添加抖动:
修改hr2的生成代码:

hr2 <- hr %>%
  nest(data = -c(hab_value)) %>%
  mutate(
    data = map(data, function(df) {
      # 仅按坐标去重(保留第一条记录)
      df_unique <- df %>% distinct(x_, y_, .keep_all = TRUE)
      # 添加1e-7度的抖动(约1cm精度,避免破坏地理坐标意义)
      df_unique$x_ <- df_unique$x_ + rnorm(nrow(df_unique), 0, 1e-7)
      df_unique$y_ <- df_unique$y_ + rnorm(nrow(df_unique), 0, 1e-7)
      return(df_unique)
    }),
    n = map_int(data, nrow)
  )

2. 针对小样本调整带宽

部分子数据集样本量小,默认带宽可能导致过度平滑,进而生成无效几何。手动指定带宽计算逻辑:
修改hr3的hr_kde调用:

hr3 <- hr2 %>%
  mutate(
    hr_kdedat = map(data, function(df) {
      # 计算参考带宽
      h <- hr_kde_ref(df, method = "href")
      # 样本量小于20时缩小带宽,避免过度扩散
      if(nrow(df) < 20) h <- h * 0.7
      hr_kde(df, trast = trast, levels = c(0.6, 0.95), h = h)
    })
  )

3. 修复无效几何图形

如果仍有错误,在提取等值线后用sf包修复无效几何:

library(sf)
# 在循环中修改hr_iso的生成
hr_iso <- hr_isopleths(dataf) %>%
  st_make_valid() # 自动修复重复顶点、自相交等问题

4. 调整栅格分辨率

make_trast默认分辨率可能不合适,手动指定地理坐标系下的合理分辨率(如0.001度≈100米):

trast <- make_trast(hr, res = 0.001)

内容的提问来源于stack exchange,提问作者jackjack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 04:44:56