我有这种格式的文件:
第一行看起来像这样:
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)
我将不胜感激.提前致谢.
将坐标保持为长整形的问题在于,在地球上的大多数地方,经度的长度与纬度不同.这可能会通过夸大某些方向上相对于其他方向的距离来扭曲您的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邮件列表.
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
1366 次 |
| 最近记录: |