首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用软件包adehabitatHR计算国内距离分析的库德?

如何使用软件包adehabitatHR计算国内距离分析的库德?
EN

Stack Overflow用户
提问于 2021-05-28 03:58:04
回答 1查看 166关注 0票数 0

我试图计算我的企鹅跟踪数据的库德50%和95%,但遇到了一个错误。我的目标是计算归属范围密度,然后导出数据作为一个多边形。

代码语言:javascript
复制
library(adehabitatHR)  
library(sp)
library(readxl)
library(rgdal)

HRtracks<- as.data.frame(read_excel("allinterpolatedtracks.xlsx")) 

# assign the correct columns as coordinates
coordinates(HRtracks)<-c("x","y")   
proj4string(HRtracks)<- CRS("+init=epsg:3857")

#convert the coordinates to utm format
tracks.utm<-spTransform(HRtracks, CRS("+proj=utm +zone=60 +datum=WGS84"))

在运行脚本的这一部分后发生错误,tracks.utm,X指示按数据排序的列,这是按单个tripID排序的,因此它应该为每个单独的轨道创建一个范围。

代码语言:javascript
复制
colkud<-kernelUD(tracks.utm[,3],h="href", grid=1000,same4all=T)

错误:

代码语言:javascript
复制
Error: Can't subset columns that don't exist.
x Location 3 doesn't exist.
i There are only 1 column.

我怀疑我在我的脚本中遗漏了一些东西,但是我还不是一个有经验的用户,所以我希望得到一些建议。

数据:

代码语言:javascript
复制
tracks.utm <- dput(new("SpatialPointsDataFrame", data = structure(list(TripID = c(1, 
1, 1, 1, 1, 1)), row.names = c(NA, -6L), class = c("data.frame")), 
coords.nrs = numeric(0), coords = structure(c(165846.488217799, 
165846.488227808, 165846.488167749, 165846.488257839, 165846.488237819, 
165846.488718291, -19995889.0262206, -19995889.0261311, -19995889.0262007, 
-19995889.0261311, -19995889.0260814, -19995889.0254053), .Dim = c(6L, 
2L), .Dimnames = list(NULL, c("x", "y"))), bbox = structure(c(165846.488167749, 
-19995889.0262206, 165846.488718291, -19995889.0254053), .Dim = c(2L, 
2L), .Dimnames = list(c("x", "y"), c("min", "max"))), proj4string = new("CRS", 
projargs = "+proj=utm +zone=60 +datum=WGS84 +units=m +no_defs")))

干杯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-28 14:01:55

基于dput,数据中只有一列。检查您的数据是很好的做法!如果您查看str(tracks.utm@data),唯一的列是TripID,您正在尝试指定第三列。

如果您查看函数help,您将看到正在传递的xy参数指定:

继承SpatialPoints类的对象,包含动物的x和y重定位。如果xy继承了类SpatialPointsDataFrame,那么它应该只包含一个列(因子),它对应于每次迁移的动物的身份。

这意味着TripID应该是唯一的列,应该是一个因子,并对应于单个的动物id。由于预期只有一个列,所以不需要指定它,而只需要指定sp对象。但是,显然对单个列的需求似乎不是这样的,您可以有多个列,但是需要指定包含唯一动物ids的列,因此需要列括号索引。

为了确保您的动物I是一个因素(每个帮助),我建议强制适当的列(例如,TripID)为一个因子。

代码语言:javascript
复制
library(sp)
library(adehabitatHR)

tracks.utm <- dput(new("SpatialPointsDataFrame", data = structure(list(TripID = c(1, 
1, 1, 1, 1, 1)), row.names = c(NA, -6L), class = c("data.frame")), 
coords.nrs = numeric(0), coords = structure(c(165846.488217799, 
165846.488227808, 165846.488167749, 165846.488257839, 165846.488237819, 
165846.488718291, -19995889.0262206, -19995889.0261311, -19995889.0262007, 
-19995889.0261311, -19995889.0260814, -19995889.0254053), .Dim = c(6L, 
2L), .Dimnames = list(NULL, c("x", "y"))), bbox = structure(c(165846.488167749, 
-19995889.0262206, 165846.488718291, -19995889.0254053), .Dim = c(2L, 
2L), .Dimnames = list(c("x", "y"), c("min", "max"))), proj4string = new("CRS", 
projargs = "+proj=utm +zone=60 +datum=WGS84 +units=m +no_defs")))

tracks.utm@data$TripID <- factor(tracks.utm@data$TripID)
  str(tracks.utm@data) 
( colkud <- adehabitatHR::kernelUD(tracks.utm[,1], h="href", 
                                 grid=1000, same4all=TRUE) )
  image(colkud)
    points(tracks.utm, pch=20)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67732727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档