The SLALIB routine sla_OBS supplies details of groundbased observatories from an internal list. This is useful when writing applications that apply to more than one observatory; the user can enter a brief name, or browse through a list, and be spared the trouble of typing in the full latitude, longitude etc. The following Fortran code returns the full name, longitude and latitude of a specified observatory:
CHARACTER IDENT*10,NAME*40 DOUBLE PRECISION W,P,H : CALL sla_OBS(0,IDENT,NAME,W,P,H) IF (NAME.EQ.'?') ... (not recognized)
(Beware of the longitude sign convention, which is west +ve for historical reasons.) The following lists all the supported observatories:
: INTEGER N : N=1 NAME=' ' DO WHILE (NAME.NE.'?') CALL sla_OBS(N,IDENT,NAME,W,P,H) IF (NAME.NE.'?') THEN WRITE (*,'(1X,I3,4X,A,4X,A)') N,IDENT,NAME N=N+1 END IF END DO
The routine sla_GEOC converts a geodetic latitude (one referred to the local horizon) to a geocentric position, taking into account the Earth's oblateness and also the height above sea level of the observer. The results are expressed in vector form, namely as the distance of the observer from the spin axis and equator respectively. The geocentric latitude can be found be evaluating ATAN2 of the two numbers. A full 3-D vector description of the position and velocity of the observer is available through the routine sla_PVOBS. For a specified geodetic latitude, height above sea level, and local sidereal time, sla_PVOBS generates a 6-element vector containing the position and velocity with respect to the true equator and equinox of date (i.e. compatible with apparent ). For some applications it will be necessary to convert to a mean frame (notably FK5, J2000) by multiplying elements 1-3 and 4-6 respectively with the appropriate precession matrix. (In theory an additional correction to the velocity vector is needed to allow for differential precession, but this correction is always negligible.)
See also the discussion of the routine sla_RVEROT, later.
SLALIB --- Positional Astronomy Library