Selecting a range of longitude and latitudes
Hi Mike (and everyone), Thanks for this reply!? Let's say that I wanted to average the values of every grid cell within, say, 103 to 116 degrees longitude and 5 to 16 degrees latitude. Would there be a way to select all of those grid cells to average them? I've done something like this to already compute the averages across all grid cells based on values : RCP1pctCO2ModelMean <- (Model2 + Model10 + Model18 + Model26 + subset14 + Model42 + subset20 + subset24 + Model60 + Model68) / 10 ? ###This provides an average value across each of the 140 layers for each of the 8192 grid cells based on these 10 models (i.e. all of the layer 1s are averaged for each model for the first grid cell, then all of the layer 2s are averaged for the first grid cell.....all the way to layer 140. Then, this is repeated for the second grid cell....all the way to grid cell 8192). This way, I have 140 averages across all grid cells. :) So, to average values ONLY across a selected range of grid cells, is there a way to do that?? Thanks, again, -----Original Message----- From: Michael Sumner <mdsumner at gmail.com> To: rain1290 <rain1290 at aim.com> Sent: Fri, Apr 19, 2019 6:36 pm Subject: Re: [R-sig-Geo] Selecting a range of longitude and latitudes You want expand.grid(get, Hope2) to get every coordinate, but coordinates(Model2)? ## gives a matrix (topleft, across rows, then down same as values(Model2)) is far easier, albeit having been through layers of interpretation of the original arrays in the file. All the best, Mike On Fri, Apr 19, 2019 at 11:51 AM rain1290--- via R-sig-Geo
<r-sig-geo at r-project.org> wrote:
Hi Ben (and everyone),
Ah, yes, you're right - using the suggestion that you specified, that error message disappeared! So, if I understand, this would take all of the grid cells within those specified longitude and latitude ranges (i.e. that entire area)?
That said, when I try plotting this using the following:
get <- ncvar_get(Model1, "cum_co2_emi-CanESM2")? #for x-axis (140 values)
Model2 <- brick("MaxPrecCCCMACanESM21pctCO2.nc", var="onedaymax")? ? #for y-axis (140 values)
Hope2 <- extract(Model2, lonlat)
plot(get,Hope2, type="l",col="green", lwd="3", xlab="Cumulative emissions (TtC)", ylab="One-day maximum precipitation (mm/day)", main="CanESM2")
I receive this error:
Error in xy.coords(x, y, xlabel, ylabel, log) :
? 'x' and 'y' lengths differ
*Note that I do not have this problem when specifying a "specific" longitude and latitude, rather than a range. Is there any reason for this?
Thanks, again
-----Original Message-----
From: Ben Tupper <btupper at bigelow.org>
To: rain1290 <rain1290 at aim.com>
Cc: r-sig-geo <r-sig-geo at r-project.org>
Sent: Thu, Apr 18, 2019 9:26 pm
Subject: Re: [R-sig-Geo] Selecting a range of longitude and latitudes
Hi,
The example you give is different than the one listed in the error message.? In your example you bind two 14-element vectors into a matrix of two columns.
cbind(103:116, 3:16)
But in the error you show the first vector is only 8 elements long...
cbind(103:110, 3:16)
When R encounters an attempt to bind columns of unequal length it will try to "recycle" the shorter vector as long as it is a multiple of the longer. In this case of binding an 8-element vector and a 14-element vector it fails.
Note that shortening up the first vector to 7 does work since 7 is a multiple of 14...
cbind(103:109, 3:16)? ? ? [,1] [,2] [1,]? 103? ? 3 [2,]? 104? ? 4 [3,]? 105? ? 5 [4,]? 106? ? 6 [5,]? 107? ? 7 [6,]? 108? ? 8 [7,]? 109? ? 9 [8,]? 103? 10 [9,]? 104? 11[10,]? 105? 12[11,]? 106? 13[12,]? 107? 14[13,]? 108? 15[14,]? 109? 16
Note how the sequence 103...109 appears twice in the first column.? Recycling is nice (and handy) until you get surprised by it.
Cheers,Ben
On Apr 18, 2019, at 8:37 PM, rain1290--- via R-sig-Geo <r-sig-geo at r-project.org> wrote:
Hi there,
I am trying to specify a range of longitudes and latitudes. I tried this using the following:
lonlat <- cbind(103:116, 3:16)? #This would specify a range of longitudes and latitudes
However, I receive the following warning message:
Warning message:
In cbind(103:110, 3:16) :
? number of rows of result is not a multiple of vector length (arg 1)
When I specify the longitude and latitude of a specific location, though, it works just fine, like this:
lonlat <- cbind(103, 3)
Am I specifying the ranges of coordinates incorrectly? The warning message would suggest yes, but I do not understand why.
Thanks, and any help with this would be greatly appreciated!
~Trav.~
? [[alternative HTML version deleted]]
_______________________________________________ R-sig-Geo mailing list R-sig-Geo at r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-geo Ben Tupper Bigelow Laboratory for Ocean Sciences 60 Bigelow Drive, P.O. Box 380 East Boothbay, Maine 04544 http://www.bigelow.org Ecological Forecasting: https://eco.bigelow.org/ ? ? ? ? [[alternative HTML version deleted]] _______________________________________________ R-sig-Geo mailing list R-sig-Geo at r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-geo
Michael Sumner Software and Database Engineer Australian Antarctic Division Hobart, Australia e-mail: mdsumner at gmail.com [[alternative HTML version deleted]]