org.geotools.nature
Class SunRelativePosition

Object
  extended by SunRelativePosition

public class SunRelativePosition
extends Object

Calcule la position du soleil relativement à la position de l'observateur. Cette classe reçoit en entrés les coordonnées spatio-temporelles de l'observateur, soit:

 
  • La longitude (en degrées) de l'observateur;
  • La latitude (en degrées) de l'observateur;
  • La date et heure en heure universelle (GMT).
La position du soleil calculée en sortie comprend les valeurs suivantes:
  • L'azimuth du soleil (en degrés dans le sens des aiguilles d'une montre depuis le nord);
  • L'élévation du soleil (en degrés par rapport a l'horizon).
Les algorithmes utilisés dans cette classe sont des adaptations des algorithmes en javascript écrit par le "National Oceanic and Atmospheric Administration, Surface Radiation Research Branch". L'application original est le Solar Position Calculator.

The approximations used in these programs are very good for years between 1800 and 2100. Results should still be sufficiently accurate for the range from -1000 to 3000. Outside of this range, results will be given, but the potential for error is higher.

Since:
2.1
Author:
Remi Eve, Martin Desruisseaux (IRD)
Module:
modules/library/referencing (gt-referencing.jar)

Field Summary
static double ASTRONOMICAL_TWILIGHT
          Elevation angle of astronomical twilight, in degrees.
static double CIVIL_TWILIGHT
          Elevation angle of civil twilight, in degrees.
static double NAUTICAL_TWILIGHT
          Elevation angle of nautical twilight, in degrees.
 
Constructor Summary
SunRelativePosition()
          Constructs a sun relative position calculator.
SunRelativePosition(double twilight)
          Constructs a sun relative position calculator with the specified value for the sun elevation at twilight.
 
Method Summary
 double getAzimuth()
          Retourne l'azimuth en degrés.
 Point2D getCoordinate()
          Returns the coordinate used for elevation and azimuth computation.
 Date getDate()
          Returns the date used for elevation and azimuth computation.
 double getElevation()
          Retourne l'élévation en degrés.
 Date getNoonDate()
          Retourne la date à laquelle le soleil est au plus haut dans la journée.
 long getNoonTime()
          Retourne l'heure à laquelle le soleil est au plus haut.
 double getTwilight()
          Returns the sun's elevation angle at twilight, in degrees.
static void main(String[] args)
          Affiche la position du soleil à la date et coordonnées spécifiée.
 void setCoordinate(double longitude, double latitude)
          Set the geographic coordinate where to compute the elevation and azimuth.
 void setCoordinate(Point2D point)
          Set the geographic coordinate where to compute the elevation and azimuth.
 void setDate(Date date)
          Set the date and time when to compute the elevation and azimuth.
 void setTwilight(double twilight)
          Set the sun's elevation angle at twilight, in degrees.
 
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ASTRONOMICAL_TWILIGHT

public static final double ASTRONOMICAL_TWILIGHT
Elevation angle of astronomical twilight, in degrees. Astronomical twilight is the time of morning or evening when the sun is 18° below the horizon (solar elevation angle of -18°).

See Also:
Constant Field Values

NAUTICAL_TWILIGHT

public static final double NAUTICAL_TWILIGHT
Elevation angle of nautical twilight, in degrees. Nautical twilight is the time of morning or evening when the sun is 12° below the horizon (solar elevation angle of -12°).

See Also:
Constant Field Values

CIVIL_TWILIGHT

public static final double CIVIL_TWILIGHT
Elevation angle of civil twilight, in degrees. Civil twilight is the time of morning or evening when the sun is 6° below the horizon (solar elevation angle of -6°).

See Also:
Constant Field Values
Constructor Detail

SunRelativePosition

public SunRelativePosition()
Constructs a sun relative position calculator.


SunRelativePosition

public SunRelativePosition(double twilight)
                    throws IllegalArgumentException
Constructs a sun relative position calculator with the specified value for the sun elevation at twilight.

Parameters:
twilight - The new sun elevation at twilight, or Double.NaN if no twilight value should be taken in account.
Throws:
IllegalArgumentException - if the twilight value is illegal.
Method Detail

setCoordinate

public void setCoordinate(double longitude,
                          double latitude)
Set the geographic coordinate where to compute the elevation and azimuth.

Parameters:
longitude - The longitude in degrees. Positive values are East; negative values are West.
latitude - The latitude in degrees. Positive values are North, negative values are South.

setCoordinate

public void setCoordinate(Point2D point)
Set the geographic coordinate where to compute the elevation and azimuth.

Parameters:
point - The geographic coordinates in degrees of longitude and latitude.

getCoordinate

public Point2D getCoordinate()
Returns the coordinate used for elevation and azimuth computation. This is the coordinate specified during the last call to a setCoordinate(...) method.


setDate

public void setDate(Date date)
Set the date and time when to compute the elevation and azimuth.

Parameters:
date - The date and time.

getDate

public Date getDate()
Returns the date used for elevation and azimuth computation. This is the date specified during the last call to setDate(java.util.Date).


setTwilight

public void setTwilight(double twilight)
                 throws IllegalArgumentException
Set the sun's elevation angle at twilight, in degrees. Common values are defined for the astronomical twilight (-18°), nautical twilight (-12°) and civil twilight (-6°). The elevation and azimuth are set to NaN when the sun elevation is below the twilight value (i.e. during night). The default value is CIVIL_TWILIGHT.

Parameters:
twilight - The new sun elevation at twilight, or Double.NaN if no twilight value should be taken in account.
Throws:
IllegalArgumentException - if the twilight value is illegal.

getTwilight

public double getTwilight()
Returns the sun's elevation angle at twilight, in degrees. This is the value set during the last call to setTwilight(double).


getAzimuth

public double getAzimuth()
Retourne l'azimuth en degrés.

Returns:
L'azimuth en degrés.

getElevation

public double getElevation()
Retourne l'élévation en degrés.

Returns:
L'élévation en degrés.

getNoonTime

public long getNoonTime()
Retourne l'heure à laquelle le soleil est au plus haut. L'heure est retournée en nombre de millisecondes écoulées depuis le debut de la journée (minuit) en heure UTC.


getNoonDate

public Date getNoonDate()
Retourne la date à laquelle le soleil est au plus haut dans la journée. Cette méthode est équivalente à getNoonTime() mais inclue le jour de la date qui avait été spécifiée à la méthode compute().


main

public static void main(String[] args)
                 throws ParseException
Affiche la position du soleil à la date et coordonnées spécifiée. Cette application peut être lancée avec la syntaxe suivante:
SunRelativePosition [longitude] [latitude] [date]
date est un argument optionel spécifiant la date et l'heure. Si cet argument est omis, la date et heure actuelles seront utilisées.

Throws:
ParseException


Copyright © 1996-2010 Geotools. All Rights Reserved.