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(); }
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()); } }
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(); } } }
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); }
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(); }