Ich werde ein Protokoll führen, wenn ich denke, dass ich mich mit Anfällen angefreundet habe, die häufig in astronomischen Daten verwendet werden. Ich habe das von Grund auf neu gemacht, um zu erfahren, was passt.
Erstens ist Fits ein Dateiformat, das häufig für astronomische Daten verwendet wird und aus zwei Teilen besteht: einem Header-Teil, in dem Informationen wie Koordinaten und Häufigkeit gespeichert sind, und einem Datenteil, in dem aus Beobachtungen gewonnene Informationen gespeichert sind. Weitere Informationen zu Wikipedia ... (Flucht) https://ja.wikipedia.org/wiki/FITS
Erstellen von Anfällen, über die ich mir aus irgendeinem Grund Sorgen gemacht habe. Ist das wirklich der richtige Weg? .. .. Ich möchte glauben, dass es gut ist. Hier ist ein Skript, das vorerst Anpassungen mit einem Array von [100, 100] erstellt.
make_fits_1.py
import numpy as np
from astropy.io import fits
x = 100 #x_axis pixel number
y = 100 #y_axis pixel number
z = 100 #z_axis pixel number
###Array erstellen###
#3D Zeit
data = np.zeros((z, y, x), dtype=np.float32)
#Zweidimensionale Zeit
#data = np.zeros((y, x), dtype=np.float32)
hdu = fits.PrimaryHDU(data = data)
#Speichern Sie die von Ihnen vorgenommenen Anpassungen
hdu.writeto('make_fits.fits',overwrite=True)
Ändern Sie beim Erstellen von Passungen für einen 3D-Würfel den Teil "** Array erstellen **". In diesem Zustand wurde der Header noch nicht eingefügt. Selbst wenn er mit ds9 usw. angezeigt wird, wird er nur als langweilig angezeigt.
Lassen Sie uns in die Kopfzeile setzen. Sie können jetzt Header hinzufügen.
python
hdu.header['keyword'] = 'something' #Zum Zeitpunkt des Keywords
hdu.header['keyword'] = something #Bei der Eingabe numerischer Informationen wie Koordinaten
Als Test hat es ein 100x100 Array, WCS: Galactic center position 00:00:00.00 00:00:00.00 gal beamsize 20.0 arcsec gridsize 10.0 arcsec Lass uns passen.
make_fits_2.py
import numpy as np
from astropy.io import fits
x = 100 #x_axis pixel number
y = 100 #y_axis pixel number
z = 100 #z_axis pixel number
beamsize = 20.0 #arcsec
###Array erstellen###
#3D Zeit
data = np.zeros((z, y, x), dtype=np.float32)
#Zweidimensionale Zeit
data = np.zeros((y, x), dtype=np.float32)
hdu = fits.PrimaryHDU(data = data)
#Liste der Header, die Sie einfügen möchten
hdu.header['BITPIX'] = -64
hdu.header['NAXIS'] = 2
hdu.header['NAXIS1'] = x
hdu.header['NAXIS2'] = y
hdu.header['BPA'] = 0.000000
hdu.header['BMAJ'] = beamsize/3600
hdu.header['BMIN'] = beamsize/3600
hdu.header['EPOCH'] = 2000
hdu.header['BUNIT'] = 'K '
hdu.header['CTYPE1'] = 'GLON-GLS'
hdu.header['CRVAL1'] = 0.0
hdu.header['CDELT1'] = -beamsize/2/3600
hdu.header['CRPIX1'] = x/2
hdu.header['CROTA1'] = 0.0
hdu.header['CUNIT1'] = 'deg '
hdu.header['CTYPE2'] = 'GLAT-GLS'
hdu.header['CRVAL2'] = 0.0
hdu.header['CDELT2'] = beamsize/2/3600
hdu.header['CRPIX2'] = y/2
hdu.header['CROTA2'] = 0.0
hdu.header['CUNIT2'] = 'deg '
#Speichern Sie die von Ihnen vorgenommenen Anpassungen
hdu.writeto('make_fits_2.fits',overwrite=True)
Jetzt haben Sie eine Anpassung, die die Koordinateninformationen richtig enthält.
Wenn Sie einen Fehler in der Kopfzeile machen, sind die Daten falsch. Überprüfen Sie sie daher unbedingt.
Recommended Posts