Hi,
What I'd do is make lists of the coordinates and the data, just in the polygon region. Then turn those into 1-D lists using XSEQUENCE, and then use COMPRESSI to get the valid data at the start of the list. Here are your commands:
use rain.nc
let xci = {77,79,79,83,83,84,84,83,83,82,82,80,80,79,79,76,76,73,73,72,72,74,74,75,75,77,77}
let yci = {27,27,25,25,24,24,21,20,20,19,18,18,17,17,16,16,15,15,15,18,21,21,23,23,24,24,24}
let ci = pt_in_poly(rf,xci, yci)
let ci_data = if ci eq 1 then ci*rf[l=1]
list/norowlab/nohead/append/format=(f10.3)/file=try.txt ci_data
! The x coordinates at each grid point, andThere might be some details I have wrong here - I'm just typing commands.
! the y coordinates at each grid point:
yes? let xlon = x[gx=rf] + 0*y[gy=rf]
yes? let ylat = 0* x[gx=rf] + y[gy=rf]
! Apply the mask, to get x and y coordinates in the polygon region:
yes? let x_data = if ci eq 1 then ci*xlon
yes? let y_data = if ci eq 1 then ci*ylat
! Make these into 1-D lists,
yes? let xlist = xsequence(x_data)
yes? let ylist = xsequence(y_data)
yes? let clist = xsequence(ci_data)
! Move valid data to the start. You can give these
! variables units and titles, if you want Ferret to make
! a nice labeled header
yes? let xout = compressi(xlist)
yes? let yout = compressi(ylist)
yes? let cout = compressi(clist)
yes? let np = `cout[i=@ngd]`
yes? list/i=1:`np` xout, yout, cout
For the call to pt_in_poly, I would suggest that you give the range of the points in the function call, which will tell Ferret to always use the entire list of values:
pt_in_poly(rf,xci[i=1:27], yci[i=1:27])-Ansley
On 12/3/2014 8:24 PM, Nitin Patil wrote:
I am attaching my script for reference.I am attaching the files with output generated. The issue is when i am listing the are of interest defined to save in txt file it is listing the adjoint grids as ******** in the output file, but I need only the values comes under set polygon/region.Dear All,Thanks for your feedback.
On Wed, Dec 3, 2014 at 11:46 PM, Ansley Manke <ansley.b.manke@xxxxxxxx> wrote:
Hi,
I think what you're doing looks correct. What are you seeing?
One thing that may be going on is the region specification:
let temp=ci_data[x=65:95@ave,y=5:40@ave]
The context, x=65:95 and y=5:40, is being applied to the pt_in_poly _expression_ and I think the x context is being applied to the arguments xci,yci
Try it with this instead - you have defined ci_data to be missing outside the region of interest, so it should give you the result you want.
let temp=ci_data[x=@ave,y=@ave]
Another small suggestion, is to make sure your polygon is closed. Repeat the first value in the lists at the end.
See the region,
yes? shade rf[d=1,l=18050]
yes? plot/vs/line/over/nolab/thick xci, yci
Ansley
On 12/3/2014 7:13 AM, Nitin Patil wrote:
Dear ferret users,
I am averaging the area of interest and I am getting the mean, standard deviation which counts zero also to get mean. How to exclude the zero in the selected area grids and get the real mean value.
Here is my script:
let xci = {77,79,79,83,83,84,84,83,83,82,82,80,80,79,79,76,76,73,73,72,72,74,74,75,75,77,77}
let yci = {27,27,25,25,24,24,21,20,20,19,18,18,17,17,16,16,15,15,15,18,21,21,23,23,24,24,24}
let ci = pt_in_poly(rf[d=1],xci, yci)
let ci_data = if ci eq 1 then ci*rf[d=1,l=18050:18171]
let temp=ci_data[x=65:95@ave,y=5:40@ave]
let sum=MISSING(temp,0)
let sum_good=IFV temp then 1 else 0
let count=sum_good
let mean=sum/count
stat mean
sh sym stat*
let varmean = ($stat_mean)
let varstd = ($stat_std)
list/norowlab/nohead/append/file=CI.txt varmean, varstd
--------------------------
--
Regards,
Nitin Patil