Filling in Degrees in a Circle (Astronomy)

tom tom1189 at removethis.verizon.net
Sat Aug 23 23:28:12 CEST 2008


W. eWatson wrote:
> The other night I surveyed a site for astronomical use by measuring the 
> altitude (0-90 degrees above the horizon) and az (azimuth, 0 degrees 
> north clockwise around the site to 360 degrees, almost north again) of 
> obstacles, trees. My purpose was to feed this profile of obstacles 
> (trees) to an astronomy program that would then account for not sighting 
> objects below the trees.
> 
> When I got around to entering them into the program by a file, I found 
> it required the alt at 360 azimuth points in order from 0 to 360 (same 
> as 0). Instead I have about 25 points, and expected the program to be 
> able to do simple linear interpolation between those.
> 
> Is there some simple operational device in Python that would allow me to 
> create an array (vector) of 360 points from my data by interpolating 
> between azimuth points when necessary? All my data I rounded to the 
> nearest integer. Maybe there's an interpolation operator?
> 
> As an example, supposed I had made 3 observations: (0,0) (180,45) and 
> (360,0). I would want some thing like (note the slope of the line from 0 
> to 179 is 45/180 or 0.25):
> alt: 0, 0.25, 0.50, 0.75, ... 44.75, 45.0
> az : 0, 1,    2,    3,              180
> 
> Of course, I don't need the az.
> 


If I understand you right, I think using interpolation as provided by 
scipy would do what you need.

Here's an example:

from scipy.interpolate.interpolate import interp1d

angles = [0, 22, 47.5, 180, 247.01, 360]
altitudes = [18, 18, 26, 3, 5, 18]

desired_angles = range(0, 361)

skyline = interp1d(angles, altitudes, kind="linear")
vals = skyline(desired_angles)

# that is, vals will be the interpolated altitudes at each of the
# desired angles.

if 1:  # plot this out with matplotlib
	import pylab as mx
	mx.figure()
	mx.plot(angles, altitudes, 'x')
	mx.plot(desired_angles, vals)
	mx.show()



More information about the Python-list mailing list