R adehabitat软件包的位置数据格式

R adehabitat软件包的位置数据格式,r,R,我有一个以下格式的文件: 第一行如下所示: ncols 1440 nrows 720 xllcorner -180.0 yllcorner -90 cellsize 0.25 NODATA_value -9999 locs <- read.table("D:/ENFA/Locs.txt", header = TRUE, sep="\t") dataenfa1 <- data2enfa(maps, locs) pc <- dudi.pca(dataenfa1$tab, sca

我有一个以下格式的文件:

第一行如下所示:

ncols 1440
nrows 720
xllcorner -180.0
yllcorner -90
cellsize 0.25
NODATA_value -9999
locs <- read.table("D:/ENFA/Locs.txt", header = TRUE, sep="\t")
dataenfa1 <- data2enfa(maps, locs)
pc <- dudi.pca(dataenfa1$tab, scannf = FALSE)
enfa1 <- enfa(pc, dataenfa1$pr,scannf = FALSE)
hist(enfa1)
基本上,我的世界在x方向(经度)有1440个“瓷砖”,在y方向(纬度)有720个“瓷砖”。每个“瓷砖”都是一个长度为0.25度的正方形。我想我有xllcorner和正确的拐角。我可以在R中这样画这张地图:

library("adehabitat")
bio1 <- import.asc("D:/ENFA/data.asc")
maps <- as.kasc(list(data = bio1))
image(maps, col = cm.colors(256), clfac = list(Aspect = cl))
library(“adehabitation”)

bio1将坐标保留为lat-long形式的问题在于,在地球上的大多数地方,经度的长度与纬度的长度不同。这可能会夸大某些方向相对于其他方向的距离,从而扭曲您的ENFA

特别是如果数据来自相对较小的区域,我建议沿W/E x轴和S/N y轴以米为单位重新表示坐标。如果您的所有点都在一个内,那么您可以使用
rgdal
包中的
project()
R
内进行转换:

这里有一个例子:

库(rgdal)
#制作一个两列矩阵,col1=long,col2=lat

xy也许你想把坐标转换成

GHAM(全局、分层、字母数字和莫顿编码)

它通过任意精度的单元(如您所愿的精细或粗糙)来表示球体,因此任何lat/lon都有一个保持可排序的字母数字地址

以下是作者的摘要:

GHAM代码是一种基于地理位置的标记技术 在他们的立场上。它为有界的等面积单元定义地址 以恒定的纬度和经度,任意精确。 单元代码是通过对递归函数应用Morton排序来定义的 划分为16乘16的网格,所得数字编码为 字母-数字对。这样标记的点列表的词法排序将 使近邻(通常)靠得很近;对各种 全球数据集表明,在大多数情况下,实际最接近的点是 50%的时间在列表中相邻,80%的时间在5个条目内 时间


源代码是存储库,但如果您无法访问,我相信他会提供源代码。

谢谢您提供的书籍链接。我一直想在这个领域多做些工作。谢谢乔希。这样做的一个问题是,数据可以来自世界上任何地方(即超过60 UTM经度区域中的一个)。不知道该怎么办…或者,你可以自己做转换。纬度是111公里。如果
lat
以rads表示,则经度非常接近
cos(lat)*111
km。对于以度表示的纬度,只需使用
cos(((2*pi)/360)*lat)*111
。在几个纬度上试试这个方法,并与列出的值进行比较[{在这篇维基百科文章中]以确定它是否有效。只要你的数据集不超过许多纬度(或包括两极附近的大片区域),这个方法就应该有效。如果这有用,我会将其添加到主要响应中。谢谢,我会对此进行研究。@csetzkorn-谢谢你捕捉到这一点。基本问题是,当你离开赤道时,度的长度会越来越短。在极点,你可以几步走360度;在赤道,要走40000公里才能完成同样。看起来很有趣,但我认为它不适用于这种情况
library(rgdal)

# Make a two-column matrix, col1 = long, col2 = lat
xy <- cbind(c(118, 119), c(10, 50))
# Convert it to UTM coordinates (in units of meters)
project(xy, "+proj=utm +zone=51 ellps=WGS84")
          [,1]    [,2]
[1,] -48636.65 1109577
[2,] 213372.05 5546301