我有这种格式的文件:

ASCII format

第一行如下所示:

ncols 1440
nrows 720
xllcorner -180.0
yllcorner -90
cellsize 0.25
NODATA_value -9999


基本上,我的世界在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))


地图看起来不错。

我想使用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)


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

最佳答案

将坐标留为纬度形式的问题是,在地球上的大多数地方,经度的长度与纬度的长度不同。这可能会通过夸大某些方向相对于其他方向的距离而使您的ENFA失真。

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

这是一个示例taken from here

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


Bivand,Pebesma和Gomez-Rubio撰写的“带R的应用空间数据分析”中提供了有关如何处理空间数据的更多信息。如果您需要更多具体帮助,请尝试R-sig-Geo mailing list

希望这可以帮助。

关于r - adehabitat软件包的位置数据格式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7927863/

10-12 17:08
查看更多