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

Last change on this file since 412 was 371, checked in by pinsard, 16 years ago

improvements of headers (alignments of IDL prompt in examples)

  • Property svn:keywords set to Id
File size: 1.9 KB
RevLine 
[59]1;+
2;
[101]3; @file_comments
[238]4; find the closest point of (P0) within a list of np1 points
5; P1 which can be on a sphere
[59]6;
[231]7; @categories
8; Maps
[59]9;
[242]10; @param p0lon {in}{required} {type=scalar}
11; longitudes of point P0.
[136]12;
[242]13; @param p0lat {in}{required} {type=scalar}
14; latitudes of point P0.
[136]15;
[125]16; @param neighlon {in}{optional}
[136]17;
[125]18; @param neighlat {in}{optional}
[59]19;
[125]20; @keyword RADIANS
21; if set, inputs and angular outputs are in radians, otherwise degrees.
[59]22;
[125]23; @keyword DISTANCE
24; dis, to get back the distances between P0 and the np1 points P1 in the
25; variable dis.
26;
[238]27; @keyword SPHERE
28; to activate if points are located on a sphere.
[125]29;
[101]30; @returns
[125]31; index giving the P1[index] point that is the closest point of (P0)
[59]32;
[101]33; @examples
[371]34;
35;   IDL> print, neighbor(-105.15,40.02,[-0.07,100,50],[51.30,20,0], $
36;               distance=dis)
[59]37;                  0
[371]38;   IDL> print, dis
[59]39;             105.684      206.125      160.228
40;
[101]41; @history
42; Sebastien Masson (smasson\@lodyc.jussieu.fr)
[59]43;                  October 2003
[118]44;
[231]45; @version
46; $Id$
[118]47;
[59]48;-
[327]49FUNCTION neighbor, p0lon, p0lat, neighlon, neighlat $
50                 , SPHERE=sphere, DISTANCE=distance, RADIANS=radians
[59]51;
[114]52  compile_opt idl2, strictarrsubs
53;
[242]54; some checks
55  IF  n_elements(p0lon) NE 1 THEN ras = report('Sorry p0lon must be a scalar')
[59]56  p0lon = p0lon[0]
[242]57  IF  n_elements(p0lat) NE 1 THEN ras = report('Sorry p0lat must be a scalar')
[59]58  p0lat = p0lat[0]
[125]59  nneig = n_elements(neighlon)
[59]60  IF  n_elements(neighlat) NE nneig  THEN $
[242]61    ras = report('neighlon and neighlat must have the same number of elements')
[59]62; distance between P0 and the others points
63  IF keyword_set(sphere) THEN BEGIN
64    IF sphere NE 1 THEN radius = sphere
65    distance = Map_nPoints(p0lon, p0lat, neighlon, neighlat $
66                       , radius = radius, radians = radians)
[125]67  ENDIF ELSE BEGIN
[59]68    distance = (neighlon-p0lon)^2+(neighlat-p0lat)^2
69    IF arg_present(distance) THEN distance = sqrt(distance)
70  ENDELSE
71  RETURN, where(distance EQ min(distance))
72END
Note: See TracBrowser for help on using the repository browser.