Sorunum için bir çözüm bulmaya çalıştım, ancak yapamadım. Bir FITS veri küpüm var ve bunu PyFITS ile kesmem gerekiyor. Komutumla yaptığımda, sonunda 2 boyutlu bir FITS resmim olacak! Birinci boyut enerjidir, ikinci ve üçte ikisi sırasıyla boylam ve enlemdir.Crop FITS verileri PyFITS aracılığıyla küp görüntüsü
Benim komut aşağıdaki gibidir:
#!/usr/bin/env python
import pyfits
import os
import sys
def CropFitsFile(src, dst, xs, xe, ys, ye):
fh = pyfits.open(src)
for eng in range(0,2):
img = fh[0].data[eng,ys:ye,xs:xe]
header = fh[0].header
newfh=pyfits.PrimaryHDU(data=img,header=header)
if os.path.exists(dst):
os.remove(dst)
newfh.writeto(dst)
if __name__ == "__main__":
CropFitsFile(
src=sys.argv[1],
dst=sys.argv[2],
xs=int(sys.argv[3]),
xe=int(sys.argv[4]),
ys=int(sys.argv[5]),
ye=int(sys.argv[6])
)
? Bu iyi görünüyor, az ya da çok. Birkaç küçük nota, "pyfits" 'in kullanımdan kaldırıldığını ve bunun yerine "astropy.io.fits" yi kullanmanız gerektiğini (içe aktarma dışında herhangi bir kod değişikliği gerektirmeyecektir). Ve 'wrtieto' yöntemi zaten varolan bir dosyanın üzerine yazmak için yerleşik işlevlere sahiptir (' clobber' seçeneği). Bunun için fazladan kod gerekmez. Ama yine de bir sorunuz mu var? – Iguananaut
Merhaba Iguananaut, Cevabınız için teşekkür ederiz. Sorun şu ki, 3 boyutlu bir veri küpünü kırpmam gerekiyor, ancak kodu çalıştırdığımda, sonuçlar 2 boyutlu bir görüntüdür! Bunu nasıl düzeltebilirim bilmiyorum. Pyropları astropy.io.fits ile değiştirdim, ama yine de aynı problem. Yardımınız için tekrar teşekkür ederiz. –
Yani hala 3 boyutta olmasını istiyorsunuz, ancak 1 boyutunun ilk boyutu var mı? – Iguananaut