source: trunk/SRC/Interpolation/neighbor.pro @ 74

Last change on this file since 74 was 74, checked in by smasson, 18 years ago

debug xxx and cie + clean data file + rm perldoc_idl

  • Property svn:executable set to *
File size: 1.9 KB
Line 
1;+
2; NAME:
3;       neighbor
4;
5; PURPOSE:
6;       find the closetest point of (P0) within a list of np1 points
7;       P1 Which can be on a sphere
8;
9; CATEGORY:
10;       Maps.
11;
12; CALLING SEQUENCE:
13;       Result = neighbor(lon0, lat0, lon1, lat1)
14;
15; INPUTS:
16;       Lon0, Lat0 = scalar. longitudes and latitudes of point P0.
17;       Lon1, Lat1 = np1 elements vector. longitude and latitude of
18;       np1 points P1
19;
20; KEYWORD PARAMETERS:
21;   RADIANS = if set, inputs and angular outputs are in radians, otherwise
22;       degrees.
23;   DISTANCE = dis, to get back the distances between P0 and the np1
24;   points P1 in the variable dis.
25;   /SPHERE to activate if points are located on a sphere.
26;
27; OUTPUTS:
28;       index giving the P1[index] point that is the closetest point
29;       of (P0)
30;
31; EXAMPLES:
32;       IDL> print, neighbor(-105.15,40.02,[-0.07,100,50],[51.30,20,0], $
33;            distance=dis)
34;                  0
35;       IDL> print, dis
36;             105.684      206.125      160.228
37;
38; MODIFICATION HISTORY:
39;       Sebastien Masson (smasson@lodyc.jussieu.fr)
40;                  October 2003
41;-
42FUNCTION neighbor, p0lon, p0lat, neighlon, neighlat, sphere = sphere, distance = distance, radians = radians
43;
44; somme checks
45  IF  n_elements(p0lon) NE 1 THEN MESSAGE, 'Sorry p0lon must be a scalar'
46  p0lon = p0lon[0]
47  IF  n_elements(p0lat) NE 1 THEN MESSAGE, 'Sorry p0lat must be a scalar'
48  p0lat = p0lat[0]
49  nneig = n_elements(neighlon)
50  IF  n_elements(neighlat) NE nneig  THEN $
51    MESSAGE, 'neighlon and neighlat must have the same number of elements'
52; distance between P0 and the others points
53  IF keyword_set(sphere) THEN BEGIN
54    IF sphere NE 1 THEN radius = sphere
55    distance = Map_nPoints(p0lon, p0lat, neighlon, neighlat $
56                       , radius = radius, radians = radians)
57  ENDIF ELSE BEGIN
58    distance = (neighlon-p0lon)^2+(neighlat-p0lat)^2
59    IF arg_present(distance) THEN distance = sqrt(distance)
60  ENDELSE
61  RETURN, where(distance EQ min(distance))
62END
Note: See TracBrowser for help on using the repository browser.