AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Astro-Daten

Ein Thema von markus5766h · begonnen am 6. Jan 2010 · letzter Beitrag vom 29. Mai 2021
Antwort Antwort
Benutzerbild von markus5766h
markus5766h

Registriert seit: 5. Mär 2009
Ort: Hamburg
569 Beiträge
 
Delphi XE8 Professional
 
#1

AW: Astro-Daten

  Alt 21. Dez 2013, 18:48
Hallo,

in der Astro4.rar --> uAstro.pas war noch ein kleiner Fehler versteckt :
Delphi-Quellcode:
function NextEclipse(var Date : TDateTime; sun : Boolean): TEclipse;
var
  temp_date: TDateTime;
begin
  Result := ecNone;
  temp_date := Date - 28 * 2;
  while temp_date < Date do
   begin
    temp_date := temp_date + 28;
    Result := Eclipse(temp_date, sun);
   end;
  date := temp_date; // <----- diese Zeile muss entfernt werden !!!!!!!!!!!
end;
im Post #1 ist die Datei aktualisiert !

Ein Demo basierend auf dem Archiv "Astro4.rar" ist angefügt.

zur Beachtung :
vor Abfragen des HolidayIndex (function GetHolidayIndex(Date : TDateTime; Land : TdeState): Integer
muss die Funktion (function GetSeason(Date : TDate): String; ) aufgerunfen werden,
da in der Funktion HolidayIndex Werte verwendet werden, die in der Funktion GetSeason erzeugt werden.

In der Demo werden nur Werte in der Schriftfarbe 'schwarz' aktualisiert.
Angehängte Grafiken
Dateityp: jpg Vorschau1.jpg (174,0 KB, 40x aufgerufen)
Angehängte Dateien
Dateityp: rar Astro4_Demo.rar (181,0 KB, 69x aufgerufen)
Markus H.

Geändert von markus5766h (21. Dez 2013 um 18:58 Uhr)
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Astro-Daten

  Alt 17. Sep 2015, 19:29
Ich weiß das das Thema alt ist, aber ich wollte jetzt auch nicht extra ein neuen Thread dazu aufmachen.

Ich nutze inzwischen die neue Unit unter Lazarus.

Bei der neuen, wie bei der alten, gibt es bei Sun_Rise Abweichungen.
Heute z.b. sollte laut Refernezn Quellen im Internet die Sonne um 07:04 Uhr aufgehen, aber laut Unit um 05:34. Rechnet man 1 Stunde und 30 Minuten hinzu passt es wieder.
Wie kommt es zu dieser "Abweichung"?

Code:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  writeln('ctAstronomical: ',DateTimeToStr(Sun_Rise(Now,+53.143889,+8.213889,ctAstronomical)));
  writeln('ctNautic: ',DateTimeToStr(Sun_Rise(Now,+53.143889,+8.213889,ctNautic)));
  writeln('ctZivil: ',DateTimeToStr(Sun_Rise(Now,+53.143889,+8.213889,ctZivil)));
  writeln('ctGeneral: ',DateTimeToStr(Sun_Rise(Now,+53.143889,+8.213889,ctGeneral)));
  writeln('ctNull: ',DateTimeToStr(Sun_Rise(Now,+53.143889,+8.213889,ctNull)));

end;
Ich habe die Position für Oldenburg(Oldenburg) Angegeben.
Oder mache ich noch was Falsch?
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#3

AW: Astro-Daten

  Alt 17. Sep 2015, 20:19
Ich tippe auf
1. eine Stunde weil wir aktuell Sommerzeit haben. Winterzeit wäre der Sonnenaufgang schon um 6:04
2. eine halbe Stunde, weil Oldenburg nicht in der Mitte der Zeitzone liegt. Die Astro-Zeit ist dann die "tatsächliche, lokale" Zeit, Oldenburg liegt mit 8° schon weit von der Mitte (15°) entfernt.
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Astro-Daten

  Alt 18. Sep 2015, 14:23
Währe auf jedenfall eine Erklärung.

Wie könnte man das "Ausgleichen"? Sommerzeit/Winterzeit könnte man ja noch hinzurechnen das wäre nicht das Problem, aber die Halbestunde. Müsste ich jetzt die angeben koordinaten weiter anpassen?

Ach ja: Ich kann auch die Werte aus der uTable unit nehmen, dass ist das gleiche...
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#5

AW: Astro-Daten

  Alt 18. Sep 2015, 18:59
Du müsstest wissen, welche Zeitzone dort herrscht, das ist schon mal ein Thema für sich. In diesem Fall MESZ, also UTC+2.

Für jede Stunde UTC+ rechnest du 15° vom Nullmeridian, dann bist du bei +30°. Die Differenz aus diesem Wert und deiner östlichen Länge (8,213889) ergibt 21,786111°. Oder in Stunden ausgedrückt (1h = 15°) sind das 1,4524074 Stunden. Kann das hinkommen?
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Astro-Daten

  Alt 19. Sep 2015, 13:47
Zitat:
Oder in Stunden ausgedrückt (1h = 15°) sind das 1,4524074 Stunden. Kann das hinkommen?
Noch nicht so ganz: So müsste es laut Referenz sein:
2015-01-01 08:41:19
Das kommt von einer Perl Lib.
Aber so ist es laut Astro Unit
2015-01-01 08:59:10
Es sind also fast 20 Minuten zu viel.
Aber wir nähern uns.

Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  SunRise,SunSet,DT:TDateTime;
  YY, MM, DD, H, M, S, MS:Word;
  I1,I2, DM:integer;
  D:TDate;
begin
  InitLocale; // Muss das gemacht werden? Ändert jedenfalls nichts.
  for I1:=1 to 12 do begin
    DM:=DaysInAMonth(2015,I1);
    for I2:=1 to DM do begin
      D:=EncodeDate(2015,I1,i2);
      SunRise:=Sun_Rise(D,+53.143889,+21.786111,ctZivil); // 8.213889
      Memo1.Lines.Add(DateTimeToStr(SunRise));
    end;
  end;
end;
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Astro-Daten

  Alt 19. Sep 2015, 15:43
Neue info:
Wenn ich von ctZivil auf ctGeneral umstelle klappt es. Dann gibt es kaum noch Abweichungen. Dann muss ich im Winter nur noch 1 Stunde abziehen.
Wenn ich jedoch ctAstronomical meint die Unit, dass die Werte nicht errechenbar sind. Ab 2015-05-15.

Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  SunRise,SunSet,DT:TDateTime;
  YY, MM, DD, H, M, S, MS:Word;
  I1,I2, DM:integer;
  D:TDate;
begin
  InitLocale;
  for I1:=1 to 12 do begin
    DM:=DaysInAMonth(2015,I1);
    for I2:=1 to DM do begin
      D:=EncodeDate(2015,I1,i2);
      SunRise:=Sun_Rise(D,+53.143889,+21.786111,ctGeneral); // 8.213889 //21.786111
      Memo1.Lines.Add(DateTimeToStr(SunRise));
    end;
  end;
end;
Nun gibt es nur noch eine Sekunde Abweichung.

Edit1: Im Sommer sind die Abweichungen größer. Aber noch im Sekunden Bereich.
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)

Geändert von mimi (19. Sep 2015 um 15:57 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz