[GRASS-user] raster exchange between GRASS and R with nodata

Johannes Radinger johannesradinger at gmail.com
Fri Sep 26 08:05:27 PDT 2014


I think I discovered the problem. This was a mistake on my side:
The summary() function in R applied on a raster does subsample the
data in case of very large raster maps. However, this seems to
cause that summary information about NA gets lost and no NA are
mentioned in the summary output although there are NA included
in the raster map.

Here an example output of a map with lots of NA's which are ignored
by summary(rastermap):

> summary(streams[[1]])
        Elbe_distance_from_mouth
Min.                      0.0000
1st Qu.                 488.7067
Median                  789.8560
3rd Qu.                1025.4501
Max.                   1876.6429
NA's                      0.0000
Warning message:
In .local(object, ...) :
  summary is an estimate based on a sample of 1e+05 cells (10.7% of all
cells)

> length(bioclim[[1]][is.na(bioclim[[1]])])
[1] 12688


So there was actually no problem, just some confusion concerning the
information about
NA in the summary.

Best regards,
Johannes


On Thu, Sep 4, 2014 at 6:26 PM, Robert J. Hijmans <r.hijmans at gmail.com>
wrote:

> Johannes,
>
> raster uses GDAL to access GTiff data. So it seems that there is no,
> or at least GDAL does not see, a no data value in the file.
> I would suggest running GDALinfo to troubleshoot. Can you email me a
> small example file?
>
> By the way, the spgrass6 route has a shortcoming: it may not work with
> very large files as it attempts to load all values into RAM.
>
> Robert
>
> On Thu, Sep 4, 2014 at 6:47 AM, Johannes Radinger
> <johannesradinger at gmail.com> wrote:
> >
> >
> >
> > On Thu, Sep 4, 2014 at 3:38 PM, Nuno Sá <nunocesardesa at gmail.com> wrote:
> >>
> >> Hello!
> >>
> >> Did you try this one?
> >>
> >> r.out.gdal etc nodata='NA'
> >
> >
> > As mentioned in the manual of r.out.gdal, the no data parameter takes
> only
> > float values
> > and no strings like 'NA'. Without stating as specific value in GRASS,
> this
> > nodata-value is
> > automatically set to e.g. 65535 for DCELL rasters if I remember correctly
> > and to 255
> > for BYTE rasters. However, this seems not to be recognized when imported
> > into R with
> > the package 'raster'.
> >
> > /Johannes
> >
> >>
> >>
> >>
> >>
> >> On 4 September 2014 14:27, Johannes Radinger <
> johannesradinger at gmail.com>
> >> wrote:
> >>>
> >>> Hi all,
> >>>
> >>> of course it is possible to load the raster maps directly via spgrass6.
> >>> However, we use this work
> >>> flow also to exchange some of the maps between different users (e.g.
> via
> >>> email) and to permanently
> >>> store single files (geotiffs that contain the proj information within
> the
> >>> file). So, I agree that using spgrass6 would be much more efficient,
> but
> >>> I'll stick to exporting to geotiffs and so I need to solve the issues
> with
> >>> NA's.
> >>>
> >>> /Johannes
> >>>
> >>>
> >>> On Thu, Sep 4, 2014 at 2:31 PM, Thomas Adams <tea3rd at gmail.com> wrote:
> >>>>
> >>>> Johannes,
> >>>>
> >>>> If you want to read your file into R, there is no need to export your
> >>>> map from GRASS to do this. Simply install and use the R contributed
> package
> >>>> 'spgrass6' (spgrass6 has R dependencies that need to be installed
> first); it
> >>>> works wonderfully:
> >>>>
> >>>> Within GRASS, at the GRASS terminal prompt...
> >>>>
> >>>> > library(spgrass6)
> >>>> Loading required package: sp
> >>>> Loading required package: XML
> >>>> GRASS GIS interface loaded with GRASS version: GRASS 7.0.0beta3 (2014)
> >>>> and location: ohrfc_mpe
> >>>> > dat<-readRAST6("xmrg0101200306z")
> >>>> > image(dat)
> >>>>
> >>>> This is far more efficient.
> >>>>
> >>>> Tom
> >>>>
> >>>>
> >>>> On Thu, Sep 4, 2014 at 5:32 AM, Johannes Radinger
> >>>> <johannesradinger at gmail.com> wrote:
> >>>>>
> >>>>> Hi,
> >>>>>
> >>>>> I want to export a raster map (FCELL) from GRASS70 to the geotiff
> >>>>> format using r.out.gdal and to import it later on in R. The map
> contains
> >>>>> many no data values.
> >>>>>
> >>>>> Here some details about the raster:
> >>>>> Type of Map:  raster               Number of Categories: 0
> >>>>> Data Type:    FCELL
> >>>>> Rows:         750
> >>>>> Columns:      750
> >>>>> Total Cells:  562500
> >>>>> total null and non-null cells: 15105636
> >>>>> total null cells: 15105047
> >>>>>
> >>>>> So when I export the map, r.out.gdal reports: "Input raster map
> >>>>> contains cells with NULL-value (no-data). The value -nan will be
> used to
> >>>>> represent no-data values in the input map. You can specify a nodata
> value
> >>>>> with the nodata option."
> >>>>>
> >>>>> When I subsequently try to import the geotiff into R (using the
> package
> >>>>> 'Raster') the nodata values are not recognised as NA's:
> >>>>>
> >>>>> a <- raster("*.tif")
> >>>>> summary(a)
> >>>>> Min.     0.5294496
> >>>>> 1st Qu.  0.7171210
> >>>>> Median   0.7871540
> >>>>> 3rd Qu.  1.1581826
> >>>>> Max.     1.5494517
> >>>>> NA's     0.0000000
> >>>>>
> >>>>> So I am wondering if I need to set any specific parameter during the
> >>>>> export (r.out.gdal) or import (raster()).
> >>>>>
> >>>>> As I am not only exporting FCELL (Float32) raster but also multiple
> >>>>> (N=500) other rasters to R I would be interested in a solution also
> for
> >>>>> DCELL (Float64). Of course I can export all of as Float64 as the
> file size
> >>>>> should not be a problem.
> >>>>>
> >>>>> Any suggestions or experiences of handling NA's during raster
> exchange
> >>>>> between GRASS and R?
> >>>>>
> >>>>> /Johannes
> >>>>>
> >>>>> _______________________________________________
> >>>>> grass-user mailing list
> >>>>> grass-user at lists.osgeo.org
> >>>>> http://lists.osgeo.org/mailman/listinfo/grass-user
> >>>>
> >>>>
> >>>>
> >>>>
> >>>
> >>>
> >>> _______________________________________________
> >>> grass-user mailing list
> >>> grass-user at lists.osgeo.org
> >>> http://lists.osgeo.org/mailman/listinfo/grass-user
> >>
> >>
> >>
> >>
> >> --
> >>
> >> Nuno César de Sá
> >> +351 91 961 90 37
> >>
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/grass-user/attachments/20140926/1aa1b37f/attachment-0001.html>


More information about the grass-user mailing list