Ich habe eine passt Datei mit Daten der Dimension (180, 360), die 180 Zeilen mit 360 Elementen in jeder Zeile ist. Wenn ich es grafisch darstelle, ist der Bereich der X-Achse von 0 bis 360 und der der Y-Achse von 0 bis 180. Ich möchte den Y-Achsenbereich von -90 in 90 umwandeln, da die x- und y-Achse tatsächlich den Breitengrad und Längengrad. Ich benutze Astropie.Arbeiten mit passt Dateien in Python (Astropy)
Antwort
Angenommen, Sie haben eine FITS-Datei mit dem Namen: 'filename.fits'
:
from astropy.io import fits
from astropy.wcs import WCS
with fits.open('filename.fits') as hdus:
data = hdus[0].data # sometimes data is also saved in the extension 1 or "sci"
header = hdus[0].header
wcs = WCS(hdus[0].header)
pixel = np.array([[10, 10], [20, 20]]) # pixel 10/10 and 20/20
world = w.wcs_pix2world(pixcrd, 1) # convert the list of pixel to coordinates
Jetzt können Sie auch tun, was Sie mit data
mögen, header
und wcs
und falls gewünscht können Sie eine neue Datei schreiben danach:
hdulist = fits.HDUList([fits.PrimaryHDU(data, header=header)])
hdulist.writeto('new_name.fits')
# hdulist.writeto('filename.fits', clobber=True) # or replace the original
Schauen Sie sich die Astropy-Dokumentation an - wo im Wesentlichen die gleichen und weitere Informationen vorliegen:
Vielen Dank für die Antwort. Ich verwende Astropy, das Problem liegt bei meiner Fit-Datei - in der Kopfzeile ist keine WCS-Information vorhanden. Um die Figur richtig zu koordinieren, muss ich also mit Gitter manipulieren - und ich verstehe nicht, wie das geht. – Madhusudan
@Madhusudan Können Sie Ihre Frage bearbeiten, um zu erläutern, was Sie noch ein bisschen mehr machen möchten? – MSeifert
sicher, In einem Diagramm aus Fits Datei x und y Achsen erhalten die Pixel ... Ich will X-und Y-Achsen Länge (0 bis 360 Grad) und Breitengrad (-90 bis 90 Grad). Mein Fit-Header enthält keine WCS-Informationen. – Madhusudan
Hallo und willkommen auf [SO]. Bitte nehmen Sie sich Zeit für eine [Tour] und gehen Sie durch die [Hilfe] – Sampada