[R-sig-Geo] Raster Layers same resolution but not the same coordinates over the same area

Justin Michell jwm302 at gmail.com
Mon Sep 1 12:06:02 CEST 2014


Hi Robert

All right, I see. Do my layers not match because my resolution is slightly different between the rasters (do they have to be exact to some decimal level?) or because my dimensions are not the same? Or do these differences (resolutions/dimensions) amount to the the same thing? I apologize if this has been dealt with previously somewhere on this list.

I thought they would match after changing the projection for NDVI because my MODIS NDVI data is at 1-kilometer spatial resolution and so is my worldclim data. 

I was using this approach (advised by a previous post that gdalwarp reprojects/resamples all at once):

> # Warp
> gdalwarp(srcfile=sdsList, t_srs="+proj=longlat +datum=WGS84 +no_defs",
> dstfile=file.path(dir, ’NDVI.tif'))


Would I still need afterwards to complete resampling correctly set the smallest nrow (x) and ncol (y) among the rasters. So something like this:

s <- raster(nrow=x, nrow=y)

NDVIRaster <- resample(NDVIRaster, s, method=“ngb”)

Justin


On Aug 31, 2014, at 12:46 AM, Robert J. Hijmans <r.hijmans at gmail.com> wrote:

> Justin,
> 
> The RasterStack approach is fine, but as you show, the layers do not
> match. The resolution of NDVIStack is larger than the resolution of
> rainStack; it seems that you did not resample the NDVI data correctly.
> 
> Robert
> 
> 
> 
> On Sat, Aug 30, 2014 at 4:31 AM, Justin Michell <jwm302 at gmail.com> wrote:
>> My apologies, I forgot to send as plain text.
>> 
>> On Aug 30, 2014, at 1:27 PM, Justin Michell <jwm302 at gmail.com> wrote:
>> 
>>> Hi Jonathan
>>> 
>>> I tried that.. But I am but the results don’t make sense:
>>> 
>>>> head(NDVIStackDf)
>>>        x         y     NDVI1     NDVI2    NDVI3     NDVI4    NDVI5     NDVI6     NDVI7     NDVI8     NDVI9    NDVI10    NDVI11    NDVI12
>>> 1 29.42809 -1.002081 0.7196462 0.6093929 0.614475 0.7851786 0.799475 0.7241929 0.5946000 0.5948500 0.6585143 0.7874357 0.8305786 0.7774929
>>> 2 29.43662 -1.002081 0.7103154 0.5823500 0.572225 0.7867429 0.794050 0.7445643 0.6033786 0.5635429 0.6421857 0.7802786 0.8300643 0.7886786
>>> 3 29.44514 -1.002081 0.7303692 0.6254571 0.599350 0.7771143 0.785850 0.7510071 0.6404571 0.6197286 0.6770929 0.7686786 0.8169571 0.7957786
>>> 4 29.45367 -1.002081 0.7641923 0.6890714 0.657850 0.7936786 0.809975 0.7805429 0.6769643 0.6590714 0.7165357 0.7843357 0.8283286 0.8231500
>>> 5 29.46220 -1.002081 0.8057769 0.7500714 0.718175 0.8208786 0.838575 0.8126500 0.7345786 0.7359571 0.7661214 0.8087214 0.8442643 0.8380071
>>> 6 29.47073 -1.002081 0.8065615 0.7627071 0.730550 0.8142214 0.841100 0.8252000 0.7574786 0.7425071 0.7590571 0.8025071 0.8518357 0.8430286
>>>> head(rainStackDf)
>>>        x         y rain1 rain2 rain3 rain4 rain5 rain6 rain7 rain8 rain9 rain10 rain11 rain12
>>> 1 29.42917 -1.004167    66    68    85   116   105    61    40    85   110    125    118     85
>>> 2 29.43750 -1.004167    66    69    85   117   106    61    40    85   110    125    119     86
>>> 3 29.44583 -1.004167    66    68    84   116   106    60    39    84   110    124    118     85
>>> 4 29.45417 -1.004167    65    67    83   116   105    60    39    83   108    123    117     84
>>> 5 29.46250 -1.004167    65    68    83   117   106    59    38    83   109    124    118     84
>>> 6 29.47083 -1.004167    66    68    84   118   107    59    38    83   110    125    119     85
>>>> mystackDf <- stack(NDVIStackDf, rainStackDf)
>>>> 
>>>> head(mystackDf)
>>>   values ind
>>> 1 29.42809   x
>>> 2 29.43662   x
>>> 3 29.44514   x
>>> 4 29.45367   x
>>> 5 29.46220   x
>>> 6 29.47073   x
>>> 
>>> Is there a better way maybe without using data frames?
>>> 
>>> I tried stacking the stacks too:
>>> 
>>>> s1 <- stack(NDVIStack, rainStack)
>>> Error in compareRaster(x) : different number or columns
>>>> rainStack
>>> class       : RasterStack
>>> dimensions  : 1287, 1321, 1700127, 12  (nrow, ncol, ncell, nlayers)
>>> resolution  : 0.008333333, 0.008333333  (x, y)
>>> extent      : 29.425, 40.43333, -11.725, -1  (xmin, xmax, ymin, ymax)
>>> coord. ref. : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
>>> names       : rain1, rain2, rain3, rain4, rain5, rain6, rain7, rain8, rain9, rain10, rain11, rain12
>>> min values  :     7,     5,    31,    13,     0,     0,     0,     0,     0,      0,     22,     32
>>> max values  :   391,   392,   563,   746,   473,   159,   109,   106,   164,    247,    349,    464
>>> 
>>>> NDVIStack
>>> class       : RasterStack
>>> dimensions  : 1258, 1291, 1624078, 12  (nrow, ncol, ncell, nlayers)
>>> resolution  : 0.008526982, 0.008525437  (x, y)
>>> extent      : 29.425, 40.43333, -11.725, -1  (xmin, xmax, ymin, ymax)
>>> coord. ref. : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
>>> names       :      NDVI1,      NDVI2,      NDVI3,      NDVI4,      NDVI5,      NDVI6,      NDVI7,      NDVI8,      NDVI9,     NDVI10,     NDVI11,     NDVI12
>>> min values  : -0.1524615, -0.1353071, -0.1970500, -0.1632071, -0.1919250, -0.1647286, -0.1665000, -0.1693357, -0.1852643, -0.1733714, -0.1555357, -0.1682571
>>> max values  :  0.9153615,  0.9013000,  0.9295500,  0.9134643,  0.9421750,  0.9158357,  0.9000071,  0.9009786,  0.8733571,  0.8792429,  0.9151357,  0.9233000
>>> 
>>> Thanks
>>> Justin
>>> 
>>> On Jun 30, 2014, at 5:55 PM, Jonathan Greenberg <jgrn at illinois.edu> wrote:
>>> 
>>>> Justin:
>>>> 
>>>> It would make more sense, if you insist on working with data.frames,
>>>> for you to create a single stack with all of your predictor and
>>>> response variables, and then do your extraction -- that way you don't
>>>> need to worry about a merge after the fact.  The chances of the
>>>> coordinates being EXACT I suspect are very low, which is why the
>>>> merge() is failing.
>>>> 
>>>> Basically:
>>>> 
>>>> mystack <- stack(meanTempStackDf, rainStackDf)
>>>> 
>>>> ... Then you can extract the data.
>>>> 
>>>> --j
>>>> 
>>>> On Mon, Jun 30, 2014 at 6:22 AM, Justin Michell <jwm302 at gmail.com> wrote:
>>>>> Dear Niandou
>>>>> 
>>>>> No I have not received any feedback.
>>>>> 
>>>>> I do have some thoughts though. Is it possible/or at least would it make sense to get values in NDVI layer (average of nearby cells?) at the coordinates of raster values in other layers which one wants to merge with?
>>>>> 
>>>>> I am not very well versed in these things so it’s just a thought- not sure how it would be implemented in R.
>>>>> 
>>>>> Regards
>>>>> Justin
>>>>> 
>>>>> 
>>>>> On Jun 27, 2014, at 3:58 PM, ISSAKA NIANDOU, Yacouba <niandouy at who.int> wrote:
>>>>> 
>>>>>> Niandou
>>>>> 
>>>>> _______________________________________________
>>>>> R-sig-Geo mailing list
>>>>> R-sig-Geo at r-project.org
>>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>>> 
>>>> 
>>>> 
>>>> --
>>>> Jonathan A. Greenberg, PhD
>>>> Assistant Professor
>>>> Global Environmental Analysis and Remote Sensing (GEARS) Laboratory
>>>> Department of Geography and Geographic Information Science
>>>> University of Illinois at Urbana-Champaign
>>>> 259 Computing Applications Building, MC-150
>>>> 605 East Springfield Avenue
>>>> Champaign, IL  61820-6371
>>>> Phone: 217-300-1924
>>>> http://www.geog.illinois.edu/~jgrn/
>>>> AIM: jgrn307, MSN: jgrn307 at hotmail.com, Gchat: jgrn307, Skype: jgrn3007
>>> 
>> 
>> _______________________________________________
>> R-sig-Geo mailing list
>> R-sig-Geo at r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo



More information about the R-sig-Geo mailing list