Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将栅格转换为R中的csv

将栅格转换为R中的csv
EN

Stack Overflow用户
提问于 2017-07-12 17:47:40
回答 2查看 4.9K关注 0票数 0

我希望将光栅转换为csv文件。我曾尝试在一个文件上将栅格转换为数据帧,只是为了看看它是否有效。我尝试过使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
as.data.frame( rasterToPoints(species) )

但是当我尝试将“物种”写入csv时,我得到了一个错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Error in as.data.frame.default(x[[i]], optional = TRUE) : 
cannot coerce class "structure("RasterLayer", package = "raster")"   to a data.frame

这是我的代码(我需要将多个栅格转换为csv (参见循环))

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#start loop
file.names <- dir(path, pattern=".csv")

for(i in 1:length(file.names)){
  file<- read.csv(file.name[i], header = TRUE, stringsAsFactors=FALSE)

#subsetting each file and renaming column header names
sub.file<-subset(file, select = c('Matched.Scientific.Name',  'Vernacular.Name...matched', 'Latitude...processed', 'Longitude...processed'))
names(sub.file) <- c('species', 'name', 'Lat','Lon')

#turn into a SpatialPointsDataFrame 
coordinates(sub.file) <- ~ Lon + Lat 
proj4string(sub.file) <- '+init=EPSG:4326'
plot(sub.file, axes=TRUE)

#converting to BNG
sub.file.BNG <- spTransform(sub.file, '+init=EPSG:27700')
plot(sub.file.BNG, axes=TRUE)

#creating template raster
template <- raster(xmn=400000, xmx=600000, ymn=200000, ymx=800000,  res=25000, crs='+init=EPSG:27700')

#point data > presence grid
species <- rasterize(sub.file.BNG, template, field=1)
plot(species)

# UK wide
template <- raster(xmn=-200000, xmx=700000, ymn=0, ymx=1250000, res=25000, crs='+init=EPSG:27700')

# use that to turn species point data into a presence grid
species <- rasterize(sub.file, template, field=1)
plot(species)

#converting a raster>dataframe>csv?????
as.data.frame( rasterToPoints(species) )
}
EN

回答 2

Stack Overflow用户

发布于 2019-08-17 14:06:58

在提出问题时,请始终提供一些示例数据。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(raster)
f <- system.file("external/test.grd", package="raster")
r <- raster(f)

获取单元格的值

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
x <- as.data.frame(r)
head(x, 2)
#  test
#1   NA
#2   NA

仅获取非NA单元格的单元格坐标和值

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
x <- rasterToPoints(r) 
head(x, 2)
#         x      y    test
#[1,] 181180 333740 633.686
#[2,] 181140 333700 712.545

仅获取所有单元格(包括NA)的单元格坐标和值

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
x <- cbind(coordinates(r), v=values(r))
head(x, 2)
#          x      y  v
#[1,] 178420 333980 NA
#[2,] 178460 333980 NA

无论你选择哪一个,你都可以做

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
write.csv(x, "test.csv")

您所犯的错误是您没有将as.data.frame的结果赋给一个变量,然后尝试用write.csv编写RasterLayer。这是一个错误,你会得到

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
write.csv(r)
#Error in as.data.frame.default(x[[i]], optional = TRUE) : 
# cannot coerce class ‘structure("RasterLayer", package = "raster")’ to a 
# data.frame

顺便说一句,如果有多个栅格,则可能需要先合并这些栅格

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
s <- stack(r, r, r)
x <- rasterToPoints(s) 
head(x, 2)
#          x      y  test.1  test.2  test.3
#[1,] 181180 333740 633.686 633.686 633.686
#[2,] 181140 333700 712.545 712.545 712.545
write.csv(x, "test.csv")
票数 3
EN

Stack Overflow用户

发布于 2019-08-16 23:34:39

假设你的栅格是“物种”

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 species<- raster("C:/.../species.tif")

要执行此转换,需要获取每个像素的值:X坐标(1)、Y坐标(2)和每个单元格的自身值(3)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 # don't run these lines
 #(1) = coordinates (species) [, 1]
 #(2) = coordinates (species) [, 2]
 #(3) = values (species)

有了这些表达式,我们可以将它们添加到数据帧中,如下所示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dat<- data.frame("X"=coordinates(species)[,1],"Y"=coordinates(species) 
[,2],"Values"=values(species))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45064450

复制
相关文章
python中的reduce函数
在python3中,内置函数中已经没有reduce了。要使用reduce,需要从functools模块里引入
Python学习者
2023/09/09
1580
python中reduce函数的用法
reduce:将一个可以迭代的对象应用到两个带有参数的方法上,我们称这个方法为fun,遍历这个可迭代的对象,将其中元素依次作为fun的参数,但是这个函数有两个参数,那些作为参数呢?
用户7886150
2021/01/12
5900
python的reduce()函数
reduce()函数是Python内置的一个高阶函数。 reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。 例如,编写一个f函数,接收x和y,返回x和y的和: 1 2 def f(x, y): return x + y 调用 reduce(f, [1, 3, 5, 7, 9])时,reduce函数将做
用户1214487
2018/01/24
6570
[Python]reduce() 函数
Python reduce() 函数 reduce() 函数会对参数序列中元素进行累积。 函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。
唯一Chat
2020/02/25
6470
python: reduce函数
python3 中,reduce()函数已经被从 全局名字空间 里移除了。 转而被放置到了 fucntools模块里 。
JNingWei
2018/09/28
6100
Python reduce()函数
MapReduce: Simplified Data Processing on Large Clusters Jeffrey Dean and Sanjay Ghemawat https://research.google.com/archive/mapreduce.html 这篇来自谷歌的论文介绍了map/reduce,摘录如下: Abstract MapReduce is a programming model and an associated implementation for
Steve Wang
2018/02/05
7030
python reduce函数
python内置函数reduce 和 map/filter等函数有点类似,都是通过函数对迭代器中的元素进行遍历操作,唯一区别是reduce函数是返回计算结果是一个值,而map/filter是返回一个序列或者迭代器,下面在做详细解释
猿说编程[Python和C]
2020/03/12
8620
【Python】列表 List ① ( 数据容器简介 | 列表 List 定义语法 | 列表中存储类型相同的元素 | 列表中存储类型不同的元素 | 列表嵌套 )
Python 中的 数据容器 数据类型 可以 存放多个数据 , 每个数据都称为 元素 , 容器 的 元素 类型可以是任意类型 ;
韩曙亮
2023/10/11
2820
【Python】列表 List ① ( 数据容器简介 | 列表 List 定义语法 | 列表中存储类型相同的元素 | 列表中存储类型不同的元素 | 列表嵌套 )
Python 列表中的sort函数
列表中的sort函数 功能 对当前列表按照一定规律排序 用法 list.sort(key=None, reverse=False) 参数 key - 参数比较 reverse –排序规则 reverse = True 降序 reverse = False 升序 ( 默认 ) key涉及函数学习,我们在日后讲解当前默认不传即可 注意事项 列表中的元素类型必须相同 , 否则无法排序(报错) 字典也可以排序, key或者value排序 代码 # coding:utf-8 shu = '01老鼠' niu =
Zkeq
2022/05/18
2.4K0
绑定事件中 如可控制函数的执行次数
var flag = true; function onlyOne() { if(flag) { "这里是要执行的代码"; } flag = false//该方法是控制函数仅执行一次 因为flag是全局变量 onlyOne()函数执行一次后flag就变成false了 函数就执行不了了
大当家
2018/06/28
2.3K0
JS的内建函数reduce
@(js) reduce函数,是ECMAScript5规范中出现的数组方法。在平时的工作中,相信大家使用的场景并不多,一般而言,可以通过reduce方法实现的逻辑都可以通过forEach方法来变相的实现,虽然不清楚浏览器的js引擎是如何在C++层面实现这两个方法,但是可以肯定的是reduce方法肯定也存在数组的遍历,在具体实现细节上是否针对数组项的操作和存储做了什么优化,则不得而知。 ---- [TOC] 数组的reduce方法的应用 reduce方法有两个参数,第一个参数是一个callback,用于针对数
欲休
2018/03/15
1.5K0
【说站】python迭代中删除列表项目
2、通过分配给slice somelist[:],改变现有列表以仅包含想要的项目。
很酷的站长
2022/11/24
1.6K0
【说站】python迭代中删除列表项目
PHP array_reduce() 函数
array_reduce() 函数向用户自定义函数发送数组中的值,并返回一个字符串。
用户1448800
2021/08/19
4470
如何在环境中存储配置
关于「在环境中存储配置」,是 The Twelve-Factor App 倡导的方法论之一。通常,应用的配置在不同环境(预发布、生产环境、开发环境等等)间会有很大差异,比如说数据库的用户名密码等等配置,通过把配置和代码分离,我们可以保证部署在不同环境的代码完全一致,如何把配置和代码分离呢?最佳实战是把配置存储到环境变量中,它可以非常方便地在不同的部署间做修改,却不动一行代码;与配置文件不同,不小心把它们签入代码库的概率微乎其微;此外环境变量与语言和系统无关。
LA0WAN9
2021/12/14
1.2K0
Python 3.x中reduce()函数完整用法
在Python 3.x中,reduce()不再是内置函数,而是移到了标准库functools中,需要先导入再使用,其官方解释如图所示:
Python小屋屋主
2018/07/23
7190
Python 3.x中reduce()函数完整用法
如何在Dart中合并列表
在 Dart 编程中,List 数据类型类似于其他编程语言中的数组。列表用于表示对象的集合。它是一组有序的对象。Dart 中的核心库负责 List 类的存在、创建和操作。有 5 种方法可以组合两个或多个列表:
徐建国
2021/12/01
2.1K0
点击加载更多

相似问题

如何在PHP中退出数组迭代函数(array_reduce)

58

迭代器中reduce和reduce的区别

22

如何在reduce函数中填充新列表- Kotlin

213

如何在C#中迭代列表中的每个列表?

12

对列表中的每个项目进行迭代的函数

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文