Skip to content

Polar regions - ValueError: math domain error #80

@velkyvont

Description

@velkyvont

Flatlib doesn't work for polar regions. For example 78.2203044, 15.6364950 is a valid location (Longyearbyen, Svalbard)

from flatlib.datetime import Datetime
from flatlib.geopos import GeoPos
from flatlib.chart import Chart as FlatlibChart
from flatlib import const, tools, ephem
from flatlib.object import House, Object
from flatlib.angle import *
from flatlib.ephem.ephem import *
from flatlib.aspects import *
from flatlib.const import *
import datetime
ayanamsa = const.AY_KRISHNAMURTI
hs = const.HOUSES_WHOLE_SIGN

pos = GeoPos (78.2203044, 15.6364950) 

time = datetime.datetime.now()		
Date = Datetime(time.strftime("%Y/%m/%d"), time.strftime("%H:%M:%S"))

chart = FlatlibChart(Date, pos, mode=ayanamsa, hsys=hs, IDs=const.LIST_OBJECTS)

moon = chart.getObject (const.MOON)

print (moon.lon)

I get:

Traceback (most recent call last):
  File "Naks.py", line 19, in <module>
    chart = FlatlibChart(Date, pos, mode=ayanamsa, hsys=hs, IDs=const.LIST_OBJECTS)
  File "/home/au/.local/lib/python3.8/site-packages/flatlib/chart.py", line 54, in __init__
    self.objects = ephem.get_objects(IDs, date, pos, mode=mode)
  File "/home/au/.local/lib/python3.8/site-packages/flatlib/ephem/ephem.py", line 71, in get_objects
    objects = [get_object(obj, date, pos, alt, mode) for obj in objs]
  File "/home/au/.local/lib/python3.8/site-packages/flatlib/ephem/ephem.py", line 71, in <listcomp>
    objects = [get_object(obj, date, pos, alt, mode) for obj in objs]
  File "/home/au/.local/lib/python3.8/site-packages/flatlib/ephem/ephem.py", line 53, in get_object
    obj_values = eph.get_object(obj, date.jd, pos.lat, pos.lon, alt, mode)
  File "/home/au/.local/lib/python3.8/site-packages/flatlib/ephem/eph.py", line 149, in get_object
    pflon = tools.pfLon(jd, lat, lon)
  File "/home/au/.local/lib/python3.8/site-packages/flatlib/ephem/tools.py", line 33, in pfLon
    if isDiurnal(jd, lat, lon):
  File "/home/au/.local/lib/python3.8/site-packages/flatlib/ephem/tools.py", line 51, in isDiurnal
    return utils.isAboveHorizon(ra, decl, mcRA, lat)
  File "/home/au/.local/lib/python3.8/site-packages/flatlib/utils.py", line 39, in isAboveHorizon
    dArc, _ = dnarcs(decl, lat)
  File "/home/au/.local/lib/python3.8/site-packages/flatlib/utils.py", line 23, in dnarcs
    dArc = 180 + 2 * ascdiff(decl, lat)
  File "/home/au/.local/lib/python3.8/site-packages/flatlib/utils.py", line 18, in ascdiff
    ad = math.asin(math.tan(delta) * math.tan(phi))
ValueError: math domain error

When I change the location to something normal (e. g. central Europe) it works normally.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions