1 year ago
#123578
jlipinski
What's the fastest way of calculating if satellite is in camera FOV
I need to find fastest way of checking if satelllite (given its TLE) is visible from camera (given its position on Earth - longitude and latitude - and its field of view). Field of view of camera is defined as a rectangle with 15deg width, 60deg height and center in some known altitude and azimuth.
TLDR: My first attempt was to use PyEphem (https://rhodesmill.org/pyephem/) to calculate satellites ALT and AZ relative to observer and to check if it is not eclipsed. To check if this satellite is in FOV I used astropy Regions (https://astropy-regions.readthedocs.io/en/stable/) to construct Rectangular Sky Region. It was working fine but I have 5400 satellites in TLE and 24 diffrently positioned cameras and this metod turned to be too slow.
In more details: I need to simulate satellite observations with widefield cameras (15deg width, 60deg height) placed all around the globe. I tried to define each camera as "station" object with known position and FOV defined as RectangularSkyRegion from astropy regions:
region = RectangleSkyRegion(center = SkyCoord(az_mid, alt_mid, unit = "deg"), width = 15 *u.deg, height = 60 *u.deg)
then using PyEphem I was iterating over time:
time = ephem.Date("2021/09/09 19:30:00.00")
for j in range(12*60*60*24*30):
date = ephem.Date(time + 5*j*ephem.second)
and now I don't really know what to do, because I need to check for few things. First I need to check if there is night where camera is, I do this with help from PyEphem. I just simply check if time of previous sunset is bigger than time of previous sunrise. I also need to check if a satellite is above horizon realtive to observer and if it is eclipsed. I can do that quite simply but first I need to compute every satellite position realtive to observer which is slow (5400 diffrent satellites and 24 diffrent observers). There is a way in PyEphem to compute satellite position knowing only time of observation, but this will give me geocentric latitude and longitude angles of subpoint and elevation above sea level or right ascension and declination which I would have to convert to ALT and AZ to be of any use for my problem. Ideally I would want to compute satellite position only once per time iteration and then check if it falls in any of my FOV, unfortunately I do not know a way to efficently convert geocentric subpoints and elevation to ALT AZ or to define FOV diffrently.
python
astropy
astronomy
pyephem
skyfield
0 Answers
Your Answer