Exemple #1
0
        static void Main(string[] args)
        {
            using (var context = new EphemerisDbContext())
            {
                var ephemeris = context.Ephemeris.ToList();

                int index1 = 0;
                while (true)
                {
                    var entry1 = ephemeris[index1];

                    int index2 = index1 + 1;
                    while (index2 < ephemeris.Count && (ephemeris[index2].Date - entry1.Date).TotalDays < 1)
                    {
                        index2++;
                    }

                    if (index2 >= ephemeris.Count)
                    {
                        break;
                    }

                    var entry2 = ephemeris[index2];

                    if (entry1.Venus > entry2.Venus)
                    {
                        for (int i = index1; i <= index2; i++)
                        {
                            ephemeris[i].VenusRetrograde = true;
                        }
                    }

                    index1 = index2;
                }


                //for (int i = 1; i < ephemeris.Count; i++)
                //{
                //    var entry1 = ephemeris[i - 1];
                //    var entry2 = ephemeris[i];

                //    entry1.MercuryRetrograde = entry1.Mercury > entry2.Mercury;
                //    entry1.VenusRetrograde = entry1.Venus > entry2.Venus;
                //    entry1.MarsRetrograde = entry1.Mars > entry2.Mars;
                //    entry1.JupiterRetrograde = entry1.Jupiter > entry2.Jupiter;
                //    entry1.SaturnRetrograde = entry1.Saturn > entry2.Saturn;
                //    entry1.UranusRetrograde = entry1.Uranus > entry2.Uranus;
                //    entry1.NeptuneRetrograde = entry1.Neptune > entry2.Neptune;
                //    entry1.PlutoRetrograde = entry1.Pluto > entry2.Pluto;
                //}

                var csvWriter = new CsvEphemerisWriter("Ephemeris.csv");
                csvWriter.Write(ephemeris.Select(x => x.ToEphemerisEntry()));
            }

            Console.WriteLine("ALL DONE!!!");
            Console.ReadKey();
        }
Exemple #2
0
        public EphemerisEntry Get(DateTime date)
        {
            var utcDate    = date.ToUniversalTime();
            var dateToFind = new DateTime(utcDate.Year, utcDate.Month, utcDate.Day, 0, 0, 0, DateTimeKind.Utc);
            var id1        = dateToFind.Ticks;
            var id2        = (dateToFind + TimeSpan.FromDays(1)).Ticks;

            using (var context = new EphemerisDbContext())
            {
                var entry1 = context.Ephemeris.Find(id1);
                var entry2 = context.Ephemeris.Find(id2);

                var diff     = date - dateToFind;
                var fraction = diff.TotalSeconds / (24.0 * 60.0 * 60.0);

                var entry = new EfEphemerisEntry
                {
                    Id                        = 0,
                    Date                      = date,
                    SiderealTime              = AMath.Interpolate(entry1.SiderealTime, entry2.SiderealTime, fraction),
                    Sun                       = AMath.Interpolate(entry1.Sun, entry2.Sun, fraction),
                    Moon                      = AMath.Interpolate(entry1.Moon, entry2.Moon, fraction),
                    Mercury                   = AMath.Interpolate(entry1.Mercury, entry2.Mercury, fraction, entry1.MercuryRetrograde),
                    MercuryRetrograde         = entry1.MercuryRetrograde,
                    Venus                     = AMath.Interpolate(entry1.Venus, entry2.Venus, fraction, entry1.VenusRetrograde),
                    VenusRetrograde           = entry1.VenusRetrograde,
                    Mars                      = AMath.Interpolate(entry1.Mars, entry2.Mars, fraction, entry1.MarsRetrograde),
                    MarsRetrograde            = entry1.MarsRetrograde,
                    Jupiter                   = AMath.Interpolate(entry1.Jupiter, entry2.Jupiter, fraction, entry1.JupiterRetrograde),
                    JupiterRetrograde         = entry1.JupiterRetrograde,
                    Saturn                    = AMath.Interpolate(entry1.Saturn, entry2.Saturn, fraction, entry1.SaturnRetrograde),
                    SaturnRetrograde          = entry1.SaturnRetrograde,
                    Uranus                    = AMath.Interpolate(entry1.Uranus, entry2.Uranus, fraction, entry1.UranusRetrograde),
                    UranusRetrograde          = entry1.UranusRetrograde,
                    Neptune                   = AMath.Interpolate(entry1.Neptune, entry2.Neptune, fraction, entry1.NeptuneRetrograde),
                    NeptuneRetrograde         = entry1.NeptuneRetrograde,
                    Pluto                     = AMath.Interpolate(entry1.Pluto, entry2.Pluto, fraction, entry1.PlutoRetrograde),
                    PlutoRetrograde           = entry1.PlutoRetrograde,
                    TrueNode                  = AMath.Interpolate(entry1.TrueNode, entry2.TrueNode, fraction, entry1.TrueNodeRetrograde),
                    TrueNodeRetrograde        = entry1.TrueNodeRetrograde,
                    MeanNode                  = AMath.Interpolate(entry1.MeanNode, entry2.MeanNode, fraction, entry1.MeanNodeRetrograde),
                    MeanNodeRetrograde        = entry1.MeanNodeRetrograde,
                    BlackMoonLilith           = AMath.Interpolate(entry1.BlackMoonLilith, entry2.BlackMoonLilith, fraction, entry1.BlackMoonLilithRetrograde),
                    BlackMoonLilithRetrograde = entry1.BlackMoonLilithRetrograde,
                    Chiron                    = AMath.Interpolate(entry1.Chiron, entry2.Chiron, fraction, entry1.ChironRetrograde),
                    ChironRetrograde          = entry1.ChironRetrograde
                };

                return(entry.ToEntry());
            }
        }
Exemple #3
0
        static void Main(string[] args)
        {
            ResetCsvFile();

            using (var context = new EphemerisDbContext())
            {
                if (resetDatabase)
                {
                    context.Database.EnsureDeleted();
                }
                context.Database.EnsureCreated();

                var lastEntry = last1899Entry;
                for (int year = 1900; year < 2100; year++)
                {
                    byte[] pdf = null;
                    if (useCachedPdfs)
                    {
                        Console.Write($"{year}: Loading. ");
                        pdf = LoadPdf(year);
                    }
                    else
                    {
                        Console.Write($"{year}: Fetching. ");
                        pdf = FetchPdf(year);
                        Console.Write($"{year}: Saving. ");
                        SavePdf(year, pdf);
                    }

                    Console.Write($"{year}: Converting. ");
                    var text = ExtractTextFromPdf(pdf);

                    Console.Write("Parsing. ");
                    var parser  = new Parser(text, lastEntry);
                    var entires = parser.Parse(year).ToArray();

                    Console.Write("Saving DB. ");
                    SaveToDb(context, entires);

                    Console.Write("Writing CSV. ");
                    WriteToCsv(entires);

                    Console.WriteLine("Done!");

                    lastEntry = entires.Last();
                }
            }
        }
Exemple #4
0
        private static void FetchHorizonsData()
        {
            using (var context = new EphemerisDbContext())
            {
                //context.Database.EnsureDeleted();
                //context.Database.EnsureCreated();
                for (int year = 2015; year <= 2020; year++)
                {
                    int count = context.Ephemeris.Where(x => x.Date.Year == year).Count();
                    Console.WriteLine($"{year}: Entires count = {count}");
                }
            }


            SqliteEphemerisFetcher fetcher = new SqliteEphemerisFetcher();
            //fetcher.FetchRange(2018, 2020);
        }
Exemple #5
0
        private static void SaveToDb(EphemerisDbContext context, IEnumerable <EphemerisEntry> entries)
        {
            foreach (var entry in entries)
            {
                context.Ephemeris.Add(new EfEphemerisEntry
                {
                    Id                        = entry.Date.Ticks,
                    Date                      = entry.Date,
                    SiderealTime              = entry.SiderealTime,
                    Sun                       = entry.Sun.AbsolutePosition,
                    Moon                      = entry.Moon.AbsolutePosition,
                    Mercury                   = entry.Mercury.AbsolutePosition,
                    MercuryRetrograde         = entry.Mercury.Direction == PlanetDirection.Retrograde,
                    Venus                     = entry.Venus.AbsolutePosition,
                    VenusRetrograde           = entry.Venus.Direction == PlanetDirection.Retrograde,
                    Mars                      = entry.Mars.AbsolutePosition,
                    MarsRetrograde            = entry.Mars.Direction == PlanetDirection.Retrograde,
                    Jupiter                   = entry.Jupiter.AbsolutePosition,
                    JupiterRetrograde         = entry.Jupiter.Direction == PlanetDirection.Retrograde,
                    Saturn                    = entry.Saturn.AbsolutePosition,
                    SaturnRetrograde          = entry.Saturn.Direction == PlanetDirection.Retrograde,
                    Uranus                    = entry.Uranus.AbsolutePosition,
                    UranusRetrograde          = entry.Uranus.Direction == PlanetDirection.Retrograde,
                    Neptune                   = entry.Neptune.AbsolutePosition,
                    NeptuneRetrograde         = entry.Neptune.Direction == PlanetDirection.Retrograde,
                    Pluto                     = entry.Pluto.AbsolutePosition,
                    PlutoRetrograde           = entry.Pluto.Direction == PlanetDirection.Retrograde,
                    TrueNode                  = entry.TrueNode.AbsolutePosition,
                    TrueNodeRetrograde        = entry.TrueNode.Direction == PlanetDirection.Retrograde,
                    MeanNode                  = entry.MeanNone.AbsolutePosition,
                    MeanNodeRetrograde        = entry.MeanNone.Direction == PlanetDirection.Retrograde,
                    BlackMoonLilith           = entry.BlackMoonLilith.AbsolutePosition,
                    BlackMoonLilithRetrograde = entry.BlackMoonLilith.Direction == PlanetDirection.Retrograde,
                    Chiron                    = entry.Chiron.AbsolutePosition,
                    ChironRetrograde          = entry.Chiron.Direction == PlanetDirection.Retrograde
                });
            }

            context.SaveChanges();
        }