[R-sig-Geo] Extract Raster Data Values to Shapefile

GilbertoCamara g||berto@c@m@r@@|npe @end|ng |rom gm@||@com
Wed May 11 21:58:51 CEST 2022


Dear Julian, 

Your script works nicely if the raster data if well-behaved. In real life, raster data can have missing values, which have to be dealt with.

Best
Gilberto
============================
Prof Dr Gilberto Camara
Senior Researcher
National Institute for Space Research (INPE), Brazil
https://gilbertocamara.org/
=============================




> On 11 May 2022, at 14:52, Julien Rodriguez <julienrodriguez.ardaspm using gmail.com> wrote:
> 
> Hi Luca and Zivan,
> 
> 
> Maybe this toy example using terra and sf (probably the class of your
> district borders object) may help.
> 
> library(terra)
> library(sf)
> 
> # Create a SpatRaster
> r <- rast(ncols=5, nrows=5, xmin=0, xmax=5, ymin=0, ymax=5)
> values(r) <- 1:25
> 
> # Create a polygon object as sf
> p1 <- rbind(c(1, 1), c(3, 1), c(3, 3), c(1, 3), c(1, 1))
> p2 <- rbind(c(4, 0), c(4, 1), c(5, 1), c(5, 0), c(4, 0))
> myPol <- st_sf(code = c(1:2), geometry = st_sfc(list(st_polygon(list(p1)),
> st_polygon(list(p2)))))
> 
> # Polygon object as SpatVector
> myPolAsSpatVect <- vect(st_geometry(myPol))
> 
> plot(r)
> plot(myPolAsSpatVect, add = TRUE)
> 
> # Here is your extraction, using fun argument, you can decide how to
> aggregate the values by district border
> terra::extract(r, myPolAsSpatVect, fun = mean)
> 
> Regards
> 
> Julien
> 
> 
> 
> 
> Le mer. 11 mai 2022 à 18:19, Zivan Karaman <zivan.karaman using gmail.com> a
> écrit :
> 
>> Hi Luca,
>> You should perhaps have a look at the crop and mask function in the raster
>> or terra package.
>> Hope this helps!
>> Zivan
>> 
>> On Wed, May 11, 2022 at 6:09 PM <lucfrank using mail.uni-mannheim.de> wrote:
>> 
>>> Hello Everyone,
>>> 
>>> I have a shapefile with district borders and a raster data file (.tif).
>>> 
>>> How can I extract the value from the raster data onto each district in
>>> the shapefile?
>>> 
>>> I have the exact thing I want with two shapefiles with the command:
>>> 
>>> x <- st_join(x,y,join=st_overlaps,left=TRUE,largest=TRUE)
>>> 
>>> This gives me the result I want. I tried to convert the .tif file to a
>>> shapefile, but this didn't work for me with multiple different
>>> solutions I found online.
>>> 
>>> I would appreciate any ideas you might have.
>>> 
>>> Luca
>>> 
>>> _______________________________________________
>>> R-sig-Geo mailing list
>>> R-sig-Geo using r-project.org
>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>> 
>> 
>>        [[alternative HTML version deleted]]
>> 
>> _______________________________________________
>> R-sig-Geo mailing list
>> R-sig-Geo using r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>> 
> 
> 	[[alternative HTML version deleted]]
> 
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo using r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo



More information about the R-sig-Geo mailing list