Interpolation/
map_npoints.pro
Return the distance in meter between all np0 points P0 and all
np1 points P1 on a sphere. If keyword /TWO_BY_TWO is given then
returns the distances between number n of P0 points and number
n of P1 points (in that case, np0 and np1 must be equal).
Same as MAP_2POINTS with the meter parameter but for n
points without do loop.
map_npoints
Maps
result = map_npoints(lon0, lat0, lon1, lat1, AZIMUTH=AZIMUTH, RADIANS=RADIANS, RADIUS=RADIUS, MIDDLE=MIDDLE, TWO_BY_TWO=TWO_BY_TWO)
Return value
An (np0,np1) array giving the distance in meter between np0
points P0 and np1 points P1. Element (i,j) of the output is the
distance between element P0[i] and P1[j].
If keyword /TWO_BY_TWO is given then map_npoints returns
an np-elements vector giving the distance in meter between P0[i]
and P1[i] (in that case, we have np0 = np1 = np) ; if /MIDDLE see this keyword.
Parameters
lon0
in
required
lat0
in
required
np0 elements vector. longitudes and latitudes of np0 points P0
lon1
in
required
lat1
in
required
np1 elements vector. longitude and latitude of np1 points P1
Keywords
AZIMUTH
A named variable that will receive the azimuth of the great
circle connecting the two points, P0 to P1
RADIANS
if set, inputs and angular outputs are in radians, otherwise degrees.
RADIUS
default: 6378206.4d0
If given, return the distance between the two points calculated using the
given radius.
Default value is the Earth radius.
MIDDLE
to get the longitude/latitude of the middle point between P0 and P1.
TWO_BY_TWO
If given, then map_npoints returns the distances between
number n of P0 points and number n of P1 pointsi.
In that case, np0 and np1 must be equal.
Examples
IDL> print, $
IDL> map_npoints([-105.15,1],[40.02,1],[-0.07,100,50],[51.30,20,0])
7551369.3 5600334.8
12864354. 10921254.
14919237. 5455558.8
IDL> lon0 = [-10, 20, 100]
IDL> lat0 = [0, -10, 45]
IDL> lon1 = [10, 60, 280]
IDL> lat1 = [0, 10, 45]
IDL> dist = map_npoints(lon0, lat0, lon1, lat1, AZIMUTH = azi)
IDL> help, dist, azi
DIST DOUBLE = Array[3, 3]
AZI DOUBLE = Array[3, 3]
IDL> print, dist[4*lindgen(3)], azi[4*lindgen(3)]
2226414.0 4957944.5 10018863.
90.000000 64.494450 4.9615627e-15
IDL> dist = map_npoints(lon0, lat0, lon1, lat1, AZIMUTH = azi, /TWO_BY_TWO)
IDL> help, dist, azi
DIST DOUBLE = Array[3]
AZI DOUBLE = Array[3]
IDL> print, dist, azi
2226414.0 4957944.5 10018863.
90.000000 64.494450 4.9615627e-15
IDL> print, map_2points(lon0[0], lat0[0], lon1[0], lat1[0])
20.000000 90.000000
IDL> print, map_npoints(lon0[0], lat0[0], lon1[0], lat1[0], AZIMUTH=azi)/6378206.4d0 / !dtor, azi
20.000000
90.000000
IDL> lon0 = [-10, 20, 100]
IDL> lat0 = [0, -10, 45]
IDL> lon1 = [10, 60, 280]
IDL> lat1 = [0, 10, 45]
IDL> mid = map_npoints(lon0, lat0, lon1, lat1, /MIDDLE, /TWO_BY_TWO)
IDL> print, reform(mid[0,*]), reform(mid[1,*])
0.0000000 40.000000 190.00000
0.0000000 -1.5902773e-15 90.000000
IDL> print, (map_2points(lon0[0], lat0[0], lon1[0], lat1[0], npath = 3))[*, 1]
0.0000000 0.0000000
IDL> print, (map_2points(lon0[1], lat0[1], lon1[1], lat1[1], npath = 3))[*, 1]
40.000000 -1.5902773e-15
IDL> print, (map_2points(lon0[2], lat0[2], lon1[2], lat1[2], npath = 3))[*, 1]
190.00000 90.000000
Version history
Version
$Id: map_npoints.pro 371 2008-08-07 09:32:02Z pinsard $
History
Based on the IDL function map_2points.pro,v 1.6 2001/01/15
Sebastien Masson (smasson@lodyc.jussieu.fr)
October 2003
Produced by IDLdoc 2.0.