在R中从矩阵生成无旋转ASCII栅格文件遇行列顺序错乱问题
解决epi.asc输出ASC文件时行列顺序颠倒的问题
问题核心是ASC栅格格式的坐标规则与R矩阵存储顺序不匹配:
- ASC格式以左下角为地理坐标原点,文件中第一行对应地理区域的最北端,最后一行对应最南端。
- R矩阵默认以左上角为起始位置,第一行对应视觉上的最上方,和ASC的行顺序完全反转。
转置t(r)针对的是行列互换场景,无法解决行序反转的问题。正确解法是反转矩阵的行顺序后传入epi.asc:
set.seed(123) r <- matrix(runif(16), nrow = 4, ncol = 4) # 反转矩阵行顺序,让R矩阵的最后一行对应ASC的第一行(地理最北端) r_fixed <- r[rev(seq(nrow(r))), ] library(epiR) epi.asc(r_fixed, file="r_correct.asc", xllcorner=414495.02518863, yllcorner=4427573.131968, cellsize=27.258893080917, na = -9999)
验证时打开生成的ASC文件,会看到原矩阵的第4行(r[4, ])成为ASC数据部分的第一行,对应地理坐标的最北端,行列对应关系与预期一致。
内容的提问来源于stack exchange,提问作者Hüsamettin Tayşi
相关产品推荐
相关产品推荐

