Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

A common task in GIS analysis is to extract the value of a remotely sensed environmental variable at a point location. For instance we may wish to extract the elevation of a field plot from a digital elevation model. The elevation data is a raster (i.e. grid) and the plots are a point shapefile (or a simple text file of X, Y locations). The command for doing this in ArcGIS is `ExtractValuesToPoints` available in the Spatial Analyst package. Situations may arise where ArcGIS is not the most efficient way of extracting these values. So, here, I provide a brief overview of how to extract raster values to points in R and GRASS.

### Extract Values to Points in R

This is strikingly easy is R. My work usually requires more statistical sophistication than is available in ArcGIS. As a result, I have completely switched to doing the extraction in R. I known I am going to end in R eventually, and it is easier to automate than writing a long python script in ArcGIS.

#### Data required

For the purpose of this exercise. All the data must be have the same spatial projection.

`gr.asc`
an ESRI ASCII grid. This could also be an ArcGIS binary grid if you know how to use RGDAL. That perhaps will be another post.
`pt.shp`
a point shapefile.

You also need the `maptools` and `sp` packages.

#### The Code

That is it. Fast, and easy.

### Extracting Values in GRASS

Extracting raster values in GRASS is somewhat faster than in R, but it takes a little bit more planning in that you have to explicitly create the column that the raster values will go into.

#### Data Required

• `gr` : A GRASS grid
• `pt` : A GRASS point dataset

#### The Code

The basic flow of this is that you create an empty column in the point dataset with the right data type (i.e. `varchar(10)` string of length 10, `double precision` floating point numbers, `int` integers). Then, fill the column with the raster values.