我试图从一个光栅图层提取值到一个shapefile图层,但这个过程是非常耗时的,但2小时没有我得到任何结果。一般来说,考虑到多边形和光栅的大小,这个过程应该不会超过两个2分钟的情况下,我已经做了。
我得到的信息是:no loop for break/next, jumping to top level
我的代码是:
library(sf)
library(raster)
#shapefile geometry
shp <- sf::st_read("/vsicurl/http://wesleysc352.github.io/seg_s3_r3_m10_fix_estat_amost_val.shp")
#raster geotiff
raster3<-raster::raster("http://wesleysc352.github.io/1final.tif")
#extract values
ext1<-raster::extract(raster3, shp)
OBS编辑:可复制示例的链接:
形状https://github.com/wesleysc352/wesleysc352.github.io/raw/master/seg_s3_r3_m10_fix_estat_amost_val.zip
光栅https://github.com/wesleysc352/wesleysc352.github.io/raw/master/1final.tif
1条答案
按热度按时间roejwanj1#
使用
exactextractr
包中的exact_extract
。这需要5秒钟:它给出了像素数和分数覆盖率的 Dataframe 列表:
这比
extract
给你的要多(只是像素值的列表)。为什么它很慢?不知道,不能真正看到点找出
exactextractr
何时存在。如果你想知道,尝试你的多边形子集。例如,前十行:2.57秒,外推至:
577秒。如果10分钟后整套程序还在运行,我会把它分成几部分,看看是否有一个几何形状不好的奇怪多边形把它搞得一团糟。但在这段时间里,你可以跑
exact_extract
大约200次,打一轮高尔夫球/钓鱼/从事你选择的愉快休闲活动。