NCL Home > Documentation > Functions > Lat/Lon functions


Finds the angular distance from a point to a great circle.

Available in version 4.3.1 and later.


	function gc_pnt2gc (
		p_lat  : numeric,  
		p_lon  : numeric,  
		lat    : numeric,  
		lon    : numeric   

	return_val  :  numeric



Latitudes and longitudes, in degrees, of a point (or points) on the globe. These can be scalars or multi-dimensional arrays with the number of dimensions being one less than the number of dimensions of input arguments lat and lon (described below). If arrays, they must have the same dimension sizes as lat and lon up through the penultimate dimension of lat and lon.


Latitudes and longitudes, in degrees, of points determining great circles. If these are arrays, then they must have the same dimensions and dimension sizes and the rightmost dimension size must be "2".

Return value

The desired distance or distances. If the input arrays are multi-dimensional, then the returned array will have one less dimension than the lat and lon input arrays. It will have the same shape as lat up through the penultimate dimension of lat. The return value will be of type double if either of the input arguments is of type double and type float otherwise.


This function finds the directed distance, in degees, from a specified base point on the globe to a great circle defined by two additional points. The distance is positive if the base point lies in the hemisphere to the left of the great circle and negative otherwise.

Missing values are not honored.

See Also

gc_aangle, gc_clkwise, gc_dangle, gc_inout, gc_latlon, gc_onarc, gc_qarea, gc_tarea, nggcog


Example 1

The following:

    dist = gc_pnt2gc(-27.0, 0.0, (/0.0, 0.0/), (/-1.0, 1.0/))
    print ("The distance from (-27,0) to the equator is: " + dist)


(0)     The distance from (-27,0) to the equator is: -27
Example 2

The following:

    lat = (/ (/ 0.0,  0.0/) , (/ 0.0,  0.0/) /)
    lon = (/ (/-1.0,  1.0/) , (/-1.0,  1.0/) /)
    p0_lat = (/ -27.0, 27.0 /)
    p0_lon = (/   0.0,    0./)
    dist = gc_pnt2gc(p0_lat, p0_lon, lat, lon)
    print (dist)


Variable: dist
Type: float
Total Size: 8 bytes
            2 values
Number of Dimensions: 1
Dimensions and sizes:   [2]
(0)     -27
(1)     27