当前位置: 首页 > 知识库问答 >
问题:

将投影光栅转换为csv,保持其原始栅格形式

娄德运
2023-03-14

我必须将一些投影光栅(具有ndvi值)转换为csv或excel文件。我想保持网格形式,第一行作为公制lon值,第一列作为公制lat值。在交叉点应该有ndvi值。

我通常用“as”。数据frame(光栅,xy=T)将值导出为数据帧,但在这种情况下,我将获得一种值矩阵。

library(raster)
r <- raster(ncol=10, nrow=10)
ncell(r)
values(r) <- 1:ncell(r)
plot(r)

df <- as.data.frame(r, xy=T)
head(df)

    x  y layer
1 -162 81     1
2 -126 81     2
3  -90 81     3
4  -54 81     4
5  -18 81     5
6   18 81     6

我想要的


  1   2   
1 v1  v2
2 v3  v4

安然后,write.csv....

共有3个答案

姜德容
2023-03-14

如果我们需要一个tidyverse方法

library(tidyerse)
df %>%
   spread(x, layer) %>% 
   arrange(desc(y))

或者使用base R

xtabs(layer ~ y + x, transform(df, y = factor(y, 
                 levels = sort(unique(y), decreasing = TRUE))))
罗浩然
2023-03-14

您可以使用作为。矩阵用于此。

library(raster)
r <- raster(ncol=10, nrow=10)
values(r) <- 1:ncell(r)

m <- as.matrix(r)
write.csv(m, "test.csv", row.names=F)

read.csv("test.csv")
#   V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
#1   1  2  3  4  5  6  7  8  9  10
#2  11 12 13 14 15 16 17 18 19  20
#3  21 22 23 24 25 26 27 28 29  30
#4  31 32 33 34 35 36 37 38 39  40
#5  41 42 43 44 45 46 47 48 49  50
#6  51 52 53 54 55 56 57 58 59  60
#7  61 62 63 64 65 66 67 68 69  70
#8  71 72 73 74 75 76 77 78 79  80
#9  81 82 83 84 85 86 87 88 89  90
#10 91 92 93 94 95 96 97 98 99 100

你也可以像这样创建矩阵

mm <- matrix(values(r), ncol=ncol(r), byrow=TRUE)
殷永嘉
2023-03-14

我找到了一个从'as.data.frame'传递到'dcast'的解决方案

df <- as.data.frame(raster, xy=T)
d1 <- dcast(df, y~x, value.var = "layer")
d2 <- d1 %>% arrange(-y)

不优雅,但有效。还有其他方法吗?

 类似资料:
  • 我目前正在将原始矩阵转换为光栅以使用焦距函数,然后我想将光栅转换回矩阵。但是,当我尝试将光栅函数用作时,出现了一条错误消息。矩阵()。即使有这个非常简单的例子: 以下是我得到的: 如果(!is.null(names(x)))列表(names(x),,则数组(x,c(length(x),1L)中出错: “dimnames”[1]的长度不等于数组范围 我正在使用RstuIO、R版本3.4.0和、和库。

  • 我有一个带有空间坐标和一个变量的矩阵数据。空间分辨率为1000米。 我想将其转换为光栅格式。 我使用下面的代码来完成它。但我得到的决心与我得到的不一样。有没有更好的方法可以用我的真实数据获得相同的分辨率?

  • 我已经使用Google Maps API V3创建了一个自定义地图。这是一幅虚构世界的矩形地图,而不是真实世界中的任何东西。 我一直在读关于如何在自定义谷歌地图中使用投影的文章。我需要使用投影,因为使用投影放置标记和区域,它们不会水平重复。总之,我从教程中提取了以下代码: 我已经把它应用到我的地图上,它似乎起作用了。然而,我正在试图弄清楚如何改变投影的比例。当我放置这样的标记时: 标记被放置在地图

  • 我正在尝试以0.0417度的分辨率将一个人工光发射的全球光栅从经度/纬度重新投影到贝尔曼等面积(EPSG:6933)。由于在重投影期间对像素进行插值时,城市地区周围的数据出现峰值,因此整个图层的数据丢失率约为15%。 我尝试将光栅转换为空间点数据框,重新投影空间点数据框,然后使用使用“projectraster”功能创建的光栅作为模板光栅进行光栅化(我认为模板光栅的尺寸、范围和分辨率可能是问题所在

  • 下面的代码在我的图像上生成两个框。我正计划进一步分析这些框内的像素。 在下面的例子中,在红色方块的情况下,我不想继续下去,因为它的右上角有黑色像素。而我想继续在绿色方块的情况下,因为它没有一个黑色像素沿着它的边缘。

  • Framework7 有灵活的布局网格,允许你按需求放置内容: <!-- Each "cells" row should be wrapped with div class="row" --> <div class="row"> <!-- Each "cell" has col-[widht in percents] class --> <div class="col-50">50