Astro-Cartography Factory #
The AstroCartographyFactory computes Astro-Cartography (ACG) lines – geographic coordinates where each planet’s angular lines (Ascendant, Descendant, MC, IC) fall across the globe for a given birth moment. The output can be plotted on a map.
How It Works #
For a fixed Julian Day, each planet’s true equatorial coordinates (right ascension and declination) are computed once. MC/IC lines are derived analytically: the body culminates on the meridian at geographic longitude RA - GST (MC), and anti-culminates on the antimeridian (IC). ASC/DSC lines are obtained by solving the horizon equation cos H = -tan(lat) * tan(declination) at each sampled latitude – latitudes where the body is circumpolar (or never rises) have no line point. Lines are computed in mundo, so they are identical for tropical and sidereal charts of the same instant.
Basic Usage #
from kerykeion import AstrologicalSubjectFactory, AstroCartographyFactory
subject = AstrologicalSubjectFactory.from_birth_data(
"John", 1990, 6, 15, 14, 30,
lng=12.5, lat=41.9, tz_str="Europe/Rome", online=False,
)
lines = AstroCartographyFactory.compute(subject, step=2)
for line in lines:
print(f"{line.planet} {line.line_type}: {len(line.points)} points")
Methods #
compute(subject, *, step, tolerance, lat_range, planets) #
Compute ACG lines for a natal chart.
| Parameter | Type | Default | Description |
|---|---|---|---|
subject |
AstrologicalSubjectModel | – | A natal chart subject with a finite Julian Day |
step |
float | 1.0 | Finite positive latitude sampling step; the projected grid is capped at 1,000,000 line points |
tolerance |
float or None | None | Unused since v6 (horizon equation is solved exactly); kept for backward compatibility |
lat_range |
tuple[float, float] | (-66, 66) | Finite ordered bounds within -90…+90 degrees |
planets |
list[str] or tuple[str, …] or None | None | Supported planet names (defaults to Sun through Pluto); malformed or unknown entries raise KerykeionException |
Returns: List[ACGLineModel] – up to one per planet per line type. A
requested planet the subject does not carry (it is absent from its
active_points) is dropped, and an empty selection returns an empty list.
Every selected planet always gets its MC and IC lines, but the ASC and DSC
lines are emitted only when the horizon equation has a solution at at least
one sampled latitude: a body circumpolar (or never rising) across the whole
lat_range carries no ASC/DSC entry at all.
Data Models #
ACGLineModel #
| Field | Type | Description |
|---|---|---|
planet |
str | Planet name |
line_type |
Literal[“ASC”, “DSC”, “MC”, “IC”] | Angular line type |
points |
List[ACGLinePointModel] | Geographic coordinates of the line |
ACGLinePointModel #
| Field | Type | Description |
|---|---|---|
longitude |
float | Geographic longitude (-180 to +180) |
latitude |
float | Geographic latitude (-90 to +90) |
Customization #
Higher Resolution #
lines = AstroCartographyFactory.compute(subject, step=0.5)
Specific Planets #
lines = AstroCartographyFactory.compute(
subject,
planets=["Sun", "Moon", "Jupiter", "Saturn"]
)
Extended Latitude Range #
lines = AstroCartographyFactory.compute(
subject,
lat_range=(-80, 80)
)
Line Types #
- ASC (Ascendant): where the planet rises – themes of self-expression and new beginnings
- DSC (Descendant): where the planet sets – themes of relationships and partnerships
- MC (Medium Coeli): where the planet culminates – themes of career and public life
- IC (Imum Coeli): where the planet is at the nadir – themes of home and inner life