Aggregation to

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Aggregation to

Miluji Sb
I have a set of coordinates:

temp <- dput(head(gcp,10))
structure(list(lon = c(-180, -180, -179, -179, -178, -178, -177,
-176, -176, -175), lat = c(67, 68, 67, 68, 67, 68, 67, 66, 67,
66)), datalabel = "", time.stamp = "11 Aug 2017 16:10", .Names = c("lon",
"lat"), formats = c("%9.0g", "%9.0g"), types = c(255L, 255L), val.labels =
c("",
""), var.labels = c("lon", "lat"), version = 12L, row.names = c("1",
"2", "3", "4", "5", "6", "7", "8", "9", "10"), class = "data.frame")

These are at 1 degree, I would like to aggregate them to 2.5 degree to use
them to extract data from a netcdf file (which is at 2.5 degree). This is
what I have done:

rasterDF <- rasterFromXYZ(gcp)
gcp2_5 <- aggregate(rasterDF,fact=2.5, fun=sum)

However, this seems to return aggregated coordinates at 2 degree.

class       : RasterLayer
dimensions  : 67, 180, 12060  (nrow, ncol, ncell)
resolution  : 2, 2  (x, y)
extent      : -180.5, 179.5, -54.5, 79.5  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0

What am I doing wrong? Is there another way? Thank you.

Sincerely,

Milu

        [[alternative HTML version deleted]]

_______________________________________________
R-sig-Geo mailing list
[hidden email]
https://stat.ethz.ch/mailman/listinfo/r-sig-geo
Reply | Threaded
Open this post in threaded view
|

Re: Aggregation to

Loïc Dutrieux-2


On 31/08/17 14:22, Miluji Sb wrote:

> I have a set of coordinates:
>
> temp <- dput(head(gcp,10))
> structure(list(lon = c(-180, -180, -179, -179, -178, -178, -177,
> -176, -176, -175), lat = c(67, 68, 67, 68, 67, 68, 67, 66, 67,
> 66)), datalabel = "", time.stamp = "11 Aug 2017 16:10", .Names = c("lon",
> "lat"), formats = c("%9.0g", "%9.0g"), types = c(255L, 255L), val.labels =
> c("",
> ""), var.labels = c("lon", "lat"), version = 12L, row.names = c("1",
> "2", "3", "4", "5", "6", "7", "8", "9", "10"), class = "data.frame")
>
> These are at 1 degree, I would like to aggregate them to 2.5 degree to use
> them to extract data from a netcdf file (which is at 2.5 degree). This is
> what I have done:
>
> rasterDF <- rasterFromXYZ(gcp)
> gcp2_5 <- aggregate(rasterDF,fact=2.5, fun=sum)

The aggregation factor in raster::aggregate has to be an integer (2, 3,
etc). Perhaps raster::resample is what you're looking for then. When
using 'bilinear', resample actually aggregates to the nearest multiple
of the original raster's resolution (2 degrees in your case), and
finishes with some interpolation.

Cheers,
Loïc

>
> However, this seems to return aggregated coordinates at 2 degree.
>
> class       : RasterLayer
> dimensions  : 67, 180, 12060  (nrow, ncol, ncell)
> resolution  : 2, 2  (x, y)
> extent      : -180.5, 179.5, -54.5, 79.5  (xmin, xmax, ymin, ymax)
> coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
>
> What am I doing wrong? Is there another way? Thank you.
>
> Sincerely,
>
> Milu
>
> [[alternative HTML version deleted]]
>
> _______________________________________________
> R-sig-Geo mailing list
> [hidden email]
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>
> Email secured by Check Point
>

_______________________________________________
R-sig-Geo mailing list
[hidden email]
https://stat.ethz.ch/mailman/listinfo/r-sig-geo
Reply | Threaded
Open this post in threaded view
|

Re: Aggregation to

Miluji Sb
Dear Loic,

Thank you for your reply and the suggestions - didn't realize that the
factor needs to be an integer.

The original data was at 0.5 degree, I aggregated it to 1 degree to match
to another data.

The original 0.5 degree data is available as a shapefile, I read it in
using readOGR and the information is as follows:

class       : SpatialPolygonsDataFrame
features    : 75228
extent      : -180, 180, -59.48429, 83.62742  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84
+towgs84=0,0,0
variables   : 4
names       :   gID, ISO3,         px,        py
min values  :     1,  AFG, -100.07055, -10.00004
max values  : 75228,  ZWE,  179.93522,  83.55961

Then I convert it to raster for aggregation using:

###
pgeo <- spTransform(poly, CRS('+proj=longlat +datum=WGS84'))
ext <- floor(extent(pgeo))
rr <- raster(ext, res=0.5)
rr <- rasterize(pgeo, rr, field=1)

This is the information on the converted raster:

class       : RasterLayer
dimensions  : 288, 720, 207360  (nrow, ncol, ncell)
resolution  : 0.5, 0.5  (x, y)
extent      : -180, 180, -60, 84  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
data source : in memory
names       : layer
values      : 1, 1  (min, max)

Then I aggregate it to 2.5 degree using:

###
aggregate(rr,fact=5, fun=sum)

This seems to have aggregate it to the desired 2.5 degree:

df2_5
class       : RasterLayer
dimensions  : 58, 144, 8352  (nrow, ncol, ncell)
resolution  : 2.5, 2.5  (x, y)
extent      : -180, 180, -61, 84  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
data source : in memory
names       : layer
values      : 1, 25  (min, max)

My goal is to use this to extract data from a rasterbrick (time series), so
I convert the raster to a spatialpointsdataframe:

###
spts <- rasterToPoints(df2_5, spatial = TRUE)

Then use extract from the the following rasterbrick:

class       : RasterBrick
dimensions  : 72, 144, 10368, 2880  (nrow, ncol, ncell, nlayers)
resolution  : 2.5, 2.5  (x, y)
extent      : 0, 360, -90, 90  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
names       : X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13,
X14, ...
z-value     : 0, 2879 (min, max)
varname     : beta
level       : 1

But I get a lot of missing values.Is it due to different extent? How can I
change the extent of the RasterBrick to (-180 180 -90 90)?

I realize that I have probably provided a lot of redundant information. Any
help will be highly appreciated. Thank you.

Sincerely,

Milu

On Thu, Aug 31, 2017 at 9:57 PM, Loïc Dutrieux <[hidden email]
> wrote:

>
>
> On 31/08/17 14:22, Miluji Sb wrote:
>
>> I have a set of coordinates:
>>
>> temp <- dput(head(gcp,10))
>> structure(list(lon = c(-180, -180, -179, -179, -178, -178, -177,
>> -176, -176, -175), lat = c(67, 68, 67, 68, 67, 68, 67, 66, 67,
>> 66)), datalabel = "", time.stamp = "11 Aug 2017 16:10", .Names = c("lon",
>> "lat"), formats = c("%9.0g", "%9.0g"), types = c(255L, 255L), val.labels =
>> c("",
>> ""), var.labels = c("lon", "lat"), version = 12L, row.names = c("1",
>> "2", "3", "4", "5", "6", "7", "8", "9", "10"), class = "data.frame")
>>
>> These are at 1 degree, I would like to aggregate them to 2.5 degree to use
>> them to extract data from a netcdf file (which is at 2.5 degree). This is
>> what I have done:
>>
>> rasterDF <- rasterFromXYZ(gcp)
>> gcp2_5 <- aggregate(rasterDF,fact=2.5, fun=sum)
>>
>
> The aggregation factor in raster::aggregate has to be an integer (2, 3,
> etc). Perhaps raster::resample is what you're looking for then. When using
> 'bilinear', resample actually aggregates to the nearest multiple of the
> original raster's resolution (2 degrees in your case), and finishes with
> some interpolation.
>
> Cheers,
> Loïc
>
>
>> However, this seems to return aggregated coordinates at 2 degree.
>>
>> class       : RasterLayer
>> dimensions  : 67, 180, 12060  (nrow, ncol, ncell)
>> resolution  : 2, 2  (x, y)
>> extent      : -180.5, 179.5, -54.5, 79.5  (xmin, xmax, ymin, ymax)
>> coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
>>
>> What am I doing wrong? Is there another way? Thank you.
>>
>> Sincerely,
>>
>> Milu
>>
>>         [[alternative HTML version deleted]]
>>
>> _______________________________________________
>> R-sig-Geo mailing list
>> [hidden email]
>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>
>> Email secured by Check Point
>>
>>
> _______________________________________________
> R-sig-Geo mailing list
> [hidden email]
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo

        [[alternative HTML version deleted]]

_______________________________________________
R-sig-Geo mailing list
[hidden email]
https://stat.ethz.ch/mailman/listinfo/r-sig-geo