Given a set of latitude and longitude coordinates representing a closed curve, output a gridded binary mask.
mask_dh
= Curve2Mask (n
, profile
, np
, [nprofile
, sampling
, centralmeridian
])
dh_mask
: integer, dimension (n
, n
*sampling
)
: A Driscoll and Healy (1994) sampled grid describing the concentration region R. All elements on output will either be 1 (for inside the concentration region) or 0 (for outside R).
n
: integer
: The number of latitudinal samples in dh_mask
. The effective spherical harmonic bandwidth of this grid is L=n/2-1
.
profile
: float, dimension (nprofilein
, 2)
: List of latitude [:,0] and longitude [:,1] coordinates in degrees specifying a single closed curve.
np
: integer
: The value of the returned mask at the North pole (90N, 0E). If the North pole is outside of the concentration region, set this to 0; if it is inside the concentration region, set this to 1.
nprofile
: optional, integer, default = nprofilein
: The number of coordinates in the curve profile
.
sampling
: optional, integer, default = 1
: For 1, dh_mask
has n
x n
samples. For 2, dh_mask
has n
x 2n
samples.
centralmeridian
: optional, integer, default = 0
: If 1, the curve is assumed to pass through the central meridian: passing from < 360 degrees to > 0 degrees. The curve makes a complete circle about the planet in longitude.
Curve2Mask
will take a list of latitude and longitude coordinates that represent a single closed curve, and output a mask mask_dh
that contains 1s and 0s where the grid nodes are inside and outside of the curve, respectively. mask_dh
must be sampled according to the Driscoll and Healy (1994) sampling theorem with n
samples in latitude, and either possess n
samples in longitude (sampling=1
) or 2n
samples in longitude (sampling=2
). It is necessary to specify a single point as being inside or outside of the curve, and for this the value at the North pole (90N, 0E) must be specified as either 0 or 1.
This routine saves the three-term recursion factors and square roots of the integers the first time being called. If subsequent calls possess the same value of lmax
, these will not be recomputed. If you wish to deallocate this memory, which is an array of length (lmax+1)*(lmax+2)
, recall this routine with lmax=-1
.
Driscoll, J.R. and D.M. Healy, Computing Fourier transforms and convolutions on the 2-sphere, Adv. Appl. Math., 15, 202-250, 1994.