adehabitat包的位置数据格式

cs0*_*815 2 r

我有这种格式的文件:

ASCII格式

第一行看起来像这样:

ncols 1440
nrows 720
xllcorner -180.0
yllcorner -90
cellsize 0.25
NODATA_value -9999
Run Code Online (Sandbox Code Playgroud)

基本上我的世界在x方向(经度)上有1440'瓷砖',在y方向(纬度)有720'瓷砖'.每个"瓷砖"是一个长度为0.25度的正方形.我想我有xllcorner和yllcorner正确.我可以在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))
Run Code Online (Sandbox Code Playgroud)

地图看起来很好.

我想使用adehabitat包进行一些生态利基因子分析(ENFA),我对位置数据不太了解.基本上我现在把它们作为经度和纬度但我也可以生成"瓷砖指数"(例如左下角有纬度-90和经度-180所以'瓷砖指数'会是0,0-对吗? ).哪个是正确的位置数据格式?我会像这样使用ENFA代码:

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)
Run Code Online (Sandbox Code Playgroud)

我将不胜感激.提前致谢.

Jos*_*ien 7

将坐标保持为长整形的问题在于,在地球上的大多数地方,经度的长度与纬度不同.这可能会通过夸大某些方向上相对于其他方向的距离来扭曲您的ENFA.

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

这是一个例子,取自这里:

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 
Run Code Online (Sandbox Code Playgroud)

关于如何操纵空间数据的更多信息可在Bivand,Pebesma和Gomez-Rubio的"使用R的应用空间数据分析"中获得.如果您需要更具体的帮助,请尝试使用R-sig-Geo邮件列表.

希望这可以帮助.