SergeyO7 commited on
Commit
5a2f1ac
·
verified ·
1 Parent(s): 54e7f3d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -4
app.py CHANGED
@@ -77,24 +77,37 @@ def PLadder_ZSizes(utc_dt, lat, lon):
77
  """Calculate Planetary Ladder and Zone Sizes."""
78
  if not 1900 <= utc_dt.year <= 2050:
79
  return {"error": "Date out of range (1900–2050)."}
 
 
80
  planets = load('de421.bsp')
81
  earth = planets['earth']
82
- observer = earth + Topos(latitude_degrees=lat, longitude_degrees=lon)
 
83
  planet_objects = {
84
  'Sun': planets['sun'], 'Moon': planets['moon'], 'Mercury': planets['mercury'],
85
  'Venus': planets['venus'], 'Mars': planets['mars'],
86
  'Jupiter': planets['jupiter barycenter'], 'Saturn': planets['saturn barycenter']
87
  }
 
 
88
  ts = load.timescale()
89
  t = ts.from_datetime(utc_dt)
 
 
90
  longitudes = {}
91
  for planet, obj in planet_objects.items():
92
- astrometric = observer.at(t).observe(obj)
93
- _, lon, _ = astrometric.apparent().ecliptic_latlon()
94
- longitudes[planet] = lon.degrees
 
 
 
 
95
  sorted_planets = sorted(longitudes.items(), key=lambda x: x[1])
96
  PLadder = [p for p, _ in sorted_planets]
97
  sorted_lons = [lon for _, lon in sorted_planets]
 
 
98
  zone_sizes = [sorted_lons[0]] + [sorted_lons[i+1] - sorted_lons[i] for i in range(6)] + [360 - sorted_lons[6]]
99
  bordering = [[PLadder[0]]] + [[PLadder[i-1], PLadder[i]] for i in range(1, 7)] + [[PLadder[6]]]
100
  ZSizes = []
 
77
  """Calculate Planetary Ladder and Zone Sizes."""
78
  if not 1900 <= utc_dt.year <= 2050:
79
  return {"error": "Date out of range (1900–2050)."}
80
+
81
+ # Load the JPL ephemeris (DE421)
82
  planets = load('de421.bsp')
83
  earth = planets['earth']
84
+
85
+ # Define planet objects (using barycenters for Jupiter and Saturn)
86
  planet_objects = {
87
  'Sun': planets['sun'], 'Moon': planets['moon'], 'Mercury': planets['mercury'],
88
  'Venus': planets['venus'], 'Mars': planets['mars'],
89
  'Jupiter': planets['jupiter barycenter'], 'Saturn': planets['saturn barycenter']
90
  }
91
+
92
+ # Create a timescale and convert the UTC datetime to a Skyfield time object
93
  ts = load.timescale()
94
  t = ts.from_datetime(utc_dt)
95
+
96
+ # Calculate geocentric ecliptic longitudes for each planet
97
  longitudes = {}
98
  for planet, obj in planet_objects.items():
99
+ # Geocentric position from Earth's center
100
+ astrometric = earth.at(t).observe(obj)
101
+ apparent = astrometric.apparent()
102
+ _, lon, _ = apparent.ecliptic_latlon()
103
+ longitudes[planet] = lon.degrees
104
+
105
+ # Sort planets by their ecliptic longitude
106
  sorted_planets = sorted(longitudes.items(), key=lambda x: x[1])
107
  PLadder = [p for p, _ in sorted_planets]
108
  sorted_lons = [lon for _, lon in sorted_planets]
109
+
110
+ # Calculate zone sizes (angular distances between consecutive planets)
111
  zone_sizes = [sorted_lons[0]] + [sorted_lons[i+1] - sorted_lons[i] for i in range(6)] + [360 - sorted_lons[6]]
112
  bordering = [[PLadder[0]]] + [[PLadder[i-1], PLadder[i]] for i in range(1, 7)] + [[PLadder[6]]]
113
  ZSizes = []