Filter latitudes and longitudes based on underlying data grid

`[latout,lonout] = filterm(lat,lon,Z,R,allowed)`

[latout,lonout,indx] = filterm(lat,lon,Z,R,allowed)

`[latout,lonout] = filterm(lat,lon,Z,R,allowed)`

filters
a set of latitudes and longitudes to include only those data points
which have a corresponding value in `Z`

equal to `allowed`

. `R`

can
be a geographic raster reference object, a referencing vector, or
a referencing matrix.

If `R`

is a geographic raster reference object,
its `RasterSize`

property must be consistent with `size(Z)`

.

If `R`

is a referencing vector, it must be
a 1-by-3 with elements:

[cells/degree northern_latitude_limit western_longitude_limit]

If `R`

is a referencing matrix, it must be
3-by-2 and transform raster row and column indices to or from geographic
coordinates according to:

[lon lat] = [row col 1] * R

If `R`

is a referencing matrix, it must define
a (non-rotational, non-skewed) relationship in which each column of
the data grid falls along a meridian and each row falls along a parallel.
Nearest-neighbor interpolation is used by default. NaN is returned
for points outside the grid limits or for which `lat`

or `lon`

contain
NaN. All angles are in units of degrees.

`[latout,lonout,indx] = filterm(lat,lon,Z,R,allowed)`

also
returns the indices of the included points.

Filter a random set of 100 geographic points. Use the `topo`

map
for starters:

load topo

Then generate 100 random points:

lat = -90+180*rand(100,1); long = -180+360*rand(100,1);

Make a land map, which is `1`

where `topo>0`

elevation:

land = topo>0; [newlat,newlong] = filterm(lat,long,land,topolegend,1); size(newlat) ans = 15 1

15 of the 100 random points fall on *land*.

Was this topic helpful?