Do you speak SQL … (Teil 1)

Schon häufiger hab ich hier Links auf Kataloge von astronomischen Objekten eingestellt. Die im Internet zugängliche Menge an Information zu unserem Fach explodiert ja buchstäblich. Das Problem: Wie kommt man da ran, wie findet, filtert man Daten die einen interessieren?

Man kann kaum sinnvoll mit Daten über  Millionen Galaxien in Excel arbeiten. Besser ist es diese Daten in eine Datenbank zu stecken und mittels SQL (Structured Query Language) Suchanfragen zu formulieren, die das gewünschte zu Tage fördern. Wer hier den Lernaufwand nicht scheut, kann sich dann schon bald beim SDSS oder in der GAIA-Datenbank tummeln…

Erstaunlicherweise ist das gar nicht kompliziert wie wir gleich sehen werden. Zunächst braucht man Software für ein Datenbanksystem. Hier reicht für den Anfang ein SQLite, das es für Linux, Mac und Windows gibt. Hier geht es zum Download. Das ganze System ist nur wenige hundert Kilobyte groß (winzig,  zum Vergleich: Jedes Fits-Bild aus meiner Kamera braucht 195 MByte). Man kann es also getrost auch auf älteren Computern in der Sternwarte installieren. Dazu kommt die Datenbank mit einigen Megabyte.

ES gibt natürlich bessere Einführungen in SQL als diese hier, man suche nach „sqlite tutorial“. Ich selber lerne am einfachsten aus Beispielen.

Also mal angenommen wir hätten schon so eine Datenbank mit einigen Tabellen=Astro-Katalogen. Dann starten wir das Ganze im Kommando-fenster mit dem Befehl:

sqlite3  astro.db

hier steht astro.db füt unsere Datenbank. Man erhält einen neuen Prompt:

sqlite>

Tja, und jetzt? Jetzt geht es los! Wir planen als erstes mal eine Beobachtungs-nacht. Interessante Ziele um diese Jahreszeit finden sich im Pegasus. Was weiß die Datenbank, was wir nicht wissen? Die Eingabe:

.tables

zeigt die verfügbaren Kataloge. Momentan alles Galaxienkataloge, hier von Interesse der ngc2000:

.schema ngc2000

sql4

zeigt die Struktur der Tabelle, die alle NGC-Objekte enthält. Im Tabellenkopf finden wir die Bezeichnung der gespeicherten Daten:

name = Name des Objektes im Katalog
type = Objekttyp, also Galaxie (Gx), offener Sternhaufen (Oc) …
rah = Stunde des Rekaszensionswinkels
ra = Rektaszension in Grad
dec = Deklination
const = Sternbild in dem sich das Objekt findet
slim,ldim = kleinste,größte Ausdehnung
mag = Helligkeit
desc = Beschreibung

Die folgenden Abfrage sind immer nach dem gleichen Schema aufgebaut (Schlüsselwörter sind zur Verdeutlichung groß geschrieben, muß man aber nicht):

SELECT bla FROM ngc2000 WHERE diesesundjenes;  (Semikolon in SQLite !)

im einfachsten Fall:

SELECT * FROM ngc2000;

Wir erhalten so eine Liste von allem was drinsteckt. Mmmh, ziemlich lang?

SELECT * FROM ngc2000 WHERE const=’Peg‘;

Aha, alles was sich da im Pegasus tummelt. Immernoch zuviel!

Wieviele Objekte werden da gefunden?

SELECT count(*) FROM ngc2000 WHERE const=’Peg‘;

Antwort 433

Mich interessieren nur die Galaxien.

SELECT count(*) FROM ngc2000 WHERE const=’Peg‘ AND type LIKE ‚%Gx%‘;

‚%Gx%‘ heißt, ich suche in der Tabellenspalte names type alles was Gx enthält, egal was davor oder dahinter steht.

Ergebnis 351,  zuviel!

Nur die, die heller als mag 11 sind:

SELECT * FROM ngc2000 WHERE const=’Peg‘ AND type LIKE ‚%Gx%‘ and mag<11.0;

sql5

 

Ergebnis 4 Galaxien heller als mag 11: NGC7814, NGC7217, NGC7331, NGC7457 bieten sich als Objekte zu visuellen oder fotografischen Beobachtung an.

Das Abfragespiel können wir wiederholen aber ein anders Sternbild wählen, z.B. den Großen Bären (Wagen), den wir jetzt am Morgenhimmel finden.

SELECT count(*) FROM ngc2000 WHERE const=’UMa‘ AND type LIKE ‚%Gx%‘ and mag<11.0 ;

35 Stück.  Wir begrenzen die  Suche ungefähr auf das Viereck im Großen Wagen, d.h. ra zwischen 11h und 12h dec zwischen 54° und 60°:

SELECT * FROM ngc2000 WHERE const=’UMa‘ AND type LIKE ‚%Gx%‘ and mag<11.0 AND ra BETWEEN 165 AND 180 AND dec BETWEEN 54 AND 60;

sql6

Hier befragen wir den ARP-Katalog nach seiner düstersten Galaxie:

SELECT max(mag) FROM arp;

Antwort: 18.8

Wie heißt die Galaxie?

SELECT name,max(mag) FROM arp;

Aha, UGC 1840.  Welche Nummer im ARP-Katalog ?

SELECT name,num,max(mag) FROM arp;

UGC 01840   145    18.8

Mal sehen ob das stimmt:

http://simbad.u-strasbg.fr/simbad/sim-id?Ident=ugc1840

Sieht so aus.

Die Frage nach der hellsten Galaxie im Katalog ist etwas komplizierter, da einige nichts für mag eingetragen haben:

SELECT name,num,min(mag) FROM arp WHERE mag>0.0;

Es ist:  NGC 5128   153   6.8

http://simbad.u-strasbg.fr/simbad/sim-id?Ident=ngc5128

Im zweiten Teil wird es noch interessanter, da werden die Inhalte verschiedener Kataloge miteinander verknüpft…