I'm an experienced R user new to GIS, but finding my way. I've recently run into an issue that I haven't been able to find any satisfactory documentation on (but could just be searching poorly). I'm attempting to extract data from a geotiff. However, when I load said file, all I can get are color values. For example:
aMap <- raster("./tiff/mymap.tiff")
extract(aMap, areaCoords, buffer=2000)
[[1]]
[1] 247 247 240 247 240 247 247 247 247 247 240 240 240 247 247 247 240 240 247
[20] 247
where areaCoords is a spatial points data frame. I'm using the sp and raster libraries. Now, I can add a layer argument to raster, and get other channels (I'm assuming this goes in RGB order), but, the data is a single value in different units alltogether.
1) Is there something I'm missing in loading in a geotiff for getting data rather than just colors?
2) If all there is to extract are colors, any suggestions on converting from colors to a known scale (e.g., perhaps I can get the RGB of the low and high values of the scale - perhaps).
Answer
They are the values in the file. How they correspond to measurements is unknown, and would have to be specified in external metadata.
A GeoTIFF can easily store decimal numbers in bands, and you can get the range simply enough. Here I read in a 3 band raster using stack
and check the first band:
> dd = stack("d.tif")
> range(values(dd)[,1])
[1] 0.0000 801.1061
>
If you have information that says how you map your band-1 values to measurements then you just have to operate on the raster values. For example, to scale values from 0 to max(d1)
to 0 to 2*pi
:
d1 = dd[[1]] # get first band
d1 = d1 * 2 * pi / max(values(d1))
If your TIFF is one byte per value, and you want to scale it to 1 to 20, for example:
d1 = 1 + d1 * (19/255)
should do it.
No comments:
Post a Comment