Hallo, zum Bearbeiten einer FITS-Datei kann der Header und der Datenblock getrennt exportiert werden. Der Datenblock wird als txt-Datei im cvs Format angelegt. Die Daten können dann in Excel manipuliert werden. Leider gibt es kein Tool um diese Blöcke
wieder zu importieren, so dass man das selbst zu Fuß machen muss. Dabei ist mir eine Merkwürdigkeit aufgefallen, dass das Speichern der Integer Werte nicht mit den Ausgangswerten kompatibel ist. In Folge einige Auszüge aus den entsprechenden Dateien.
1. Ausgangsdatei Datenteil (die ersten 24 Werte):
00000000000000000000000000000000 0000000F000000000000000000000000 00000000000000000000000000000000 0000000000000000000001EA00000173 0000016E0000037A0000045E000004F6 00000A93000012B20000235000003CF7
2.csv-Datei:
= 0 ;0 ;0 ;0 ;15 ;0 ;0 ;0 ;0 ;0 ;0 ;0 ;0 ;0 ;490 ;371 ;366 ;890 ;1118 ;1270 ;2707 ;4786 ;9040 ;15607
3. importierte Datei:
00000000000000000000000000000000 0F000000000000000000000000000000 00000000000000000000000000000000 0000000000000000EA01000073010000 6E0100007A0300005E040000F6040000 930A0000B212000050230000F73C0000
Die Darstellung der Integer Werte in der Originaldatei ist rechtsbündig, also höchstwertiges Byte ist links, in der importierten Datei ist der Integer Wert linksbündig, das höchstwertige Byte ist rechts.
Wieso????
Anbei der Code zur Übernahme der Integer Werte
Dim daten As String
Dim param() As String
Dim datarray() As Integer
daten = My.Computer.FileSystem.ReadAllText(csvname)
daten = daten.Replace(" ", "")
daten = daten.Replace(vbCrLf, "")
param = daten.Split(";")
ReDim datarray(param.Count)
For i = 0 To param.Count - 1
If param(i) = "0" Then
datarray(i) = 0
Else
datarray(i) = Val(param(i))
End If
Next
sr.Close()
Dim ft = New IO.FileStream(fitsname, IO.FileMode.Open, IO.FileAccess.Write)
Dim bw As New IO.BinaryWriter(ft)
For i = 0 To param.Count - 1
bw.Seek(hdrblk, IO.SeekOrigin.Begin)
bw.Write(datarray(i))
hdrblk += 4
Next
bw.close
Gruß Richard Bartetzko