The mathematics required to generate satellite sighting angles is not terribly difficult, and there are sites that offer this service free online. Notwithstanding this, there is a site that charges US$12
for this information. This is a new low, even for the Internet. Here are my Java functions to compute azimuth and elevation angles and skew angles for satellites:
NOTE: This code is released under the GNU General Public License (GPL). Read the terms of the GPL here.
final double toDeg = 180.0/Math.PI;
final double toRad = Math.PI/180.0;
/*
*
* ComputePos(input: (earth) lat (deg), lng (deg),
* (satellite) satlng (deg),
*
* output: Complex(x = az true (deg), y = el (deg))
*
* az format: North = 0, East = 90, South = 180, West = 270
* el format: Horizontal 0, Vertical 90
*
*/
private Complex computePos(double lat, double lng, double satLng) {
double dlngr = (lng-satLng) * toRad;
double az = Math.atan2(Math.sin(lat * toRad),Math.tan(dlngr)) * toDeg;
az = (270.0 - az) / 360.0;
az = az - Math.floor(az);
az *= 360.0;
double r1=6.6107; // ratio synchronous orbit/earth radius
double clng = Math.cos(dlngr);
double clat = Math.cos(lat * toRad);
double v1=r1*clat*clng-1.0;
double v2=r1*Math.sqrt(1-clat*clat*clng*clng);
double el = Math.atan2(v1,v2) * toDeg;
return new Complex(az,el);
}
/*
*
* ComputeSkew(input: (earth) lat (deg), lng (deg),
* (satellite) satlng (deg),
*
* output: double skew (deg)
*
*/
private double computeSkew(double lat, double lng, double satLng) {
double dlngr = (satLng-lng) * toRad;
return (Math.atan2(Math.tan(lat * toRad),Math.sin(dlngr)) * toDeg) - 90.0;
}
// The rather simple "Complex" class:
public class Complex {
private double x;
private double y;
public Complex(double x,double y) {
this.x = x;
this.y = y;
}
public double x() {
return x;
}
public double y() {
return y;
}
}
NOTE: This code is released under the GNU General Public License (GPL). Read the terms of the GPL here.
This is not terribly complex. These functions can obviously be revised for other languages. Remember that southern latitudes and western longitudes should be negative numbers. And be sure to read the provided help file.