我有这种格式的文件:
第一行看起来像这样:
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)
我将不胜感激。提前谢谢。
答案 0 :(得分:7)
将坐标保持为纬线形状的问题在于,在地球上的大多数地方,经度的长度与纬度不同。这可能会通过夸大某些方向上的距离来扭曲您的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。
希望这有帮助。
答案 1 :(得分:1)
也许您想将坐标转换为
GHAM(全局,分层,字母数字和莫顿编码)
以任意精度的单元格表示地球(如您所希望的那样精细或粗糙),因此任何纬度/经度都有一个仍可排序的字母数字地址。
以下是来自GHAM: A compact global geocode suitable for sorting的摘要Duncan Agnew:
GHAM代码是一种基于地理位置标记的技术 在他们的位置。它定义了有界的等面积单元的地址 通过不变的纬度和经度,任意精确的精度。 通过将Morton排序应用于递归来定义单元代码 划分为16乘16格,由此产生的数字编码成 字母对。如此标记的词汇列表 近邻(通常)靠近;测试各种 全局数据集显示,在大多数情况下,实际的最近点是 列表中相邻的时间占50%,而5个条目中占80% 时间。
源代码是IAMG存储库,但如果您无法访问它,我相信他会提供它。