Projektdokumentation, digitalisering av historiska jonogram Jonosondering bakgrund - jonosfären - vad är jonosondering, vad är ett jonogram etc. - varför jonosonderar vi Projektets bakgrund - hur mycket historiska data som det finns i arkiven, se bilaga 1. - ett jonogram per timme, varje timme hela året, från 3 olika stationer - extraregistreringar vid olika kampanjer - Från Kiruna sedan 1956 (?) - Från Lycksele sedan 1956 (?) - Från Uppsala sedan 1954 (?) - vilka olika typer av jonogram, papper, 16 mm film, 35 mm film. - varför börja digitalisera jonogram - ha en digital referensdatabas - system för digitalisering vid behov - göra jonogrammen lättillgängliga - finansiär: Kempestiftelserna Förberedelser - byggt ”anordningar” - modifierat 16 mm projektor - konstruerat ”anordning” för pappersjonogram - konstruerat ”anordning” för 35 mm film - köpt in kamerautrustning, material mm - skrivit program i java för att bearbeta bilderna. Digitalisering - hur vi har gått tillväga - med pappersjonogrammen; matat fram 2 jonogram i taget och sedan tagit en bild (manuellt). - med 35 mm film; automatiskt matat 18 bilder, sedan kontrollerat ev skarvar. - med 16 mm film; en film i taget (ca 2 månader/film). - ev problem (filmen hoppar, dras (=problem med projektorn), skarvar, felperforerade, mm) -ev åtgärder. - tidsåtgången - papper: 9 tim för 1 år - 35 mm: 6 tim för 1 år - 16 mm: 4 tim för 1 år. Sedan tillkommer tid för att ”efterbehandla” bilderna med olika program (DigiMain ochViewPict) och dvd-backuper. - hur mycket vi har digitaliserat - från Kiruna: 1980-1990 - Lycksele: 1958, 1959, 1960, 1967, 1968, 1970-1986,1988 - Uppsala: 1977-1991, 1 mån. från 1959. Totalt ca 46 år! Men som sagt, det finns mer att ”ta av”! Programmering - Objektorienterade språk: Java och SmallTalk - Excel: dokumenterat vilka år och datum från de olika stationerna som är digitaliserade. - Programlogiken, se bilaga 2. Skapat en egen databas. - Jonogram från speciella händelser, med tätare jonogram än varje timme, ex solförmörkelsen 1954, kommer att finnas på några egna webbsidor. Övrigt - Öppet hus i februari-03. - Studiebesök i Sodankylä, Finland. - Kurs i LATEX - Litteratur (java, design pattern, UML mm) - Backuper, dvd - Öppet hus på hela IRF i november-03. Bilaga 1 Kvar att digitalisera (som finns i radiolab och i arkivet 030626) Kiruna (År 1956-1979) 560308-560817 560829-561214 561009-570218 561220-570322 570328-570802 570603-580222 570815-571123 571212-580410 580424-580616 580530-580825 580616-580819 580819-581022 580827-581014 581022-581214 581025-590101 581214-590313 590101-590511 590630-600121 601018-610204 610204-610516 610906-611214 611214-620330 621124-731231 731231-750106 740226-740228 740327750109-760102 760102-770103 770103-780125 780125-790226 790226-800324 Lycksele Uppsala (År -56-57,-60-67,-69 -87,-89,-90) 600328-600408 600330-600507 600508-601008 . 601008-601113 601113-601122 (År 1954-1976) Extra registr. okt-61, -55, -57, -58, -59 Jonogram fr Ekenäs 1954. Backscatterfilmer 671201-680205 1967, rulle 1 680208-680226 680228-680322 680322-680405 680417-680525 681015-681114 681114-690227 690227-690327 april-juni 1988 Jonogram (i rullar): 1987, april-juni-1988, 1989, 1990 Kartonger (kartongerna är märkta med resp. siffra) 1. Extra registreringar, Lycksele januari – augusti 1960 januari – april 1961 2. SP1 Lycksele SP2 Lycksele 1/4 - 31/5 1959 19/10 – 23/12 1960 3/11 1959 – 16/1 1960 november 1959 januari – december 1960 Extra registreringar, Uppsala 3. Extra registreringar, Uppsala november 1955 januari – mars 1957 juni 1957 september – oktober 1957 oktober – november 1958 januari – oktober 1959 december 1959 Provregistreringar under 1957 Jonosond IV Uppsala 4. Extra registreringar, Uppsala november – december 1957 januari – september 1958 december 1958 5. Extra registreringar, Uppsala oktober – november 1961 november – december 1962 januari – juni 1963 januari – december 1964 6. Extra registreringar, Uppsala januari – december 1965 oktober – november 1966 25/12 1975 – 4/2 1976 (satellitkörning) 7. Extra registreringar, Uppsala januari – september 1967 oktober – november 1975 juni – september 1957 januari – september 1967 februari – mars 1957 11/3 – 16/3 1955 Extra registreringar, Lycksele Provregistrering Lycksele Koronastörning, halvtimmesreg. Fixfrekvens 3Mc/s Lycksele 8. Extra registreringar, Uppsala januari – september 1961 december 1961 januari – juni 1962 augusti – oktober 1962 9. Jonogram, Luleå april – december 1953 januari – december 1954 januari – april 1955 november – december 1955 15/11 – 27/11 1968 Jonosfärmätningar 1. Mätapparat 2. Solförmörkelsen 1945 3. Jonosfärdata USA 10. Jonogram, Luleå december 1947 januari – december 1952 januari – december 1953 januari – mars 1953 maj – juli 1955 april – oktober 1957 11. Extra registreringar, Lycksele september – december 1960 maj – december 1961 maj – december 1967 12. Extra registreringar, Uppsala Extra registreringar, Lycksele januari – juni 1966 mars - december 1963 januari – juni 1966 20/10 – 11/11 1966 13. SP2 Lycksele 2/12 – 31/12 1958 januari – mars 1959 5/2 – 13/3 1960 24/12 – 28/11 1961 1/12-1961 – 16/10 1962 oktober – december 1962 18/3 1962 SP3 Uppsala 14. Diverse jonogram, bl a ”långa remsor” 1967 15. Extra registreringar, Lycksele januari – december 1962 januari – februari 1963 16. Extra registreringar, Lycksele januari – december 1964 januari – februari 1965 17. Extra registreringar, Lycksele oktober – december 1957 januari – december 1958 mars - oktober 1959 1957 - 1958 Provregistreringar Bilaga 2 editMap.html Programmet startar med html-sidan ”editMap.html”. Den i sin tur startar en applet ”EditMap.java”. Applet: EditMap.java Parametrarna med bilderna från html-sidan hämtas. Här läses kirunaMap.binc, lyckseleMap.binc och uppsalaMap.binc (binära fil) in. Även kirunaFileName.txt, lyckseleFileName.txt och uppsalaFileName.txt läses in till minnet. Metoden classInit i EditviewIonoGrmsForKiruna, EditviewIonoGrmsForLycksele och EditviewIonoGrmsForUppsala anropas och parametrarna ...Map, ...MapSize och ...FileNames skickas in till metoderna i de olika klasserna. (”EditviewIonoGrmsForKiruna.classInit(kirunaMap, kirunaMapSize, kirunaFileNames)”) EditYearPictButton initieras. EditYearPictButton.java Varje ruta motsvarar en pixel. Varje pixel är ett jonogram. Mellan varje år finns en pixelrad som räknas bort. I EdityearPictButton finns följande ”karta” (kilyup7589.jpg): 1/1-75 hr 0 1/2-75 hr 0 1/12-75 hr 23 1/2-75 hr 23 1/12-75 hr 0 Tom pixelrad 1/1-76 hr 0 - 1/12-75 hr 23 -1/12-76 hr 23 | 1/12-76 hr 23 | | 1/12-88 hr 23 -- -- | 1/12-76 hr 0 | | 1/12-88 hr 0 -- Bilden visar utvärderat data och är skapad mha Smalltalk. Det finns en bild till i EdityearPictButton.java och det är All_kilyup7589.jpg. Den är gjord i Paint och visar när det finns digitaliserade jonogram. Där det är rött på bilden finns det ej jonogram. Logiken med specifikt datum är gjort i denna klass. När musen dras över bilden så visas datumet under bilden. Vid klick med musen initieras 3 EditmonthButtons. Beroende på var i bilden man klickar, initieras olika (indexerade) EditmonthButtons för olika stationer. EditmonthButton.java 1/1-76 hr 0 | 1/12-76 hr 0 12 månader per gång visas och alla timmar för dagen = 24. 1/1-76 hr 23 | 1/12-76 hr 23 Härifrån får vi år, månad, dag, timme. Detta uträknat mha var i kartan vi står, latestX osv. foF2, hPrimF och muf kurvorna visas (under bilden). checkDates initieras. Till metoden testDate() skickas latestYear, latestMonth, latestDay för att kontrollera att datumet är giltigt. CheckDates.java År, månad, dag och timme räknas om till sekunder mha javas GregorianCalendar. Resultatet blir antal sekunder från 1/1-1970 (java epoch). Till dessa sekunder läggs mellanskillnaden mellan 1/1-1970 och 1/1-1956 (räknat med smalltalks epoch 1/1-1901) vilket ger + 441849600. Giltigt datum kontrolleras ex . att det inte är den 29/2 utan att samtidigt vara skottår eller att det är den 31 april, som inte finns. DST_OFFSET (sommartiden) är satt till 0. Vi har bestämt oss för att ha en karta från 1956. Detta därför att tidigare jonogram än så kommer vi (nog) inte att digitalisera. På nuvarande karta (15/9-03) är startåret 1975. EditviewIonoGrms.java Ur Map-filerna får vi index, vilket vi använder för att hitta rätt filnamn i FileName.txt-filerna och vi får posForPicture vilket används för att hitta rätt bild i ”jonogramfilen” (ex."jan78Lh”). Varje jonogram har ett eget entry i .binc-filen. Här kan vi redigera stationMap.binc. När stationMap ändras görs ändringen mha metoder i BincHandler.class. Vi kan lägga till en kobild och därmed förskjuta ”pekaren” för alla andra bilder i samma fil ett steg framåt. Vi kan även ”ta bort” en bild genom att flytta pekaren ett steg bakåt för resterande bilder i samma fil. Ingenting ändras i själva bildfilerna utan bara i den aktuella stationMap.binc-filen. De bilder som ”försvinner” läggs på en stack. Dessa bilder kan sedan poppas upp och visas. Varje station har sin egen stack. stationMap kan sparas om till en ny .binc fil.Varje gång vi sparar får vi en fil med ett nytt filnamn. Vi kan även ”steppa” igenom själva jonogramfilen. En bild i taget, bakåt och framåt. Hittar vi en bild som vi vill byta ut kan vi göra det med en ”substituteknapp”. Det finns möjlighet att ångra en gjord händelse. EditviewIonoGrmsForKiruna.java Underklass till EditviewIonoGrms.class. I metoden classInit() sätts de inlästa stationMap och stationFileNames och variabeln stationMapSize till dennes stationMap, stationFileNames och stationMapSize. EditviewIonoGrmsForLycksele.java Underklass till EditviewIonoGrms.class. I metoden classInit() sätts de inlästa stationMap och stationFileNames och variabeln stationMapSize till dennes stationMap, stationFileNames och stationMapSize. EditviewIonoGrmsForUppsala.java Underklass till EditviewIonoGrms.class. I metoden classInit() sätts de inlästa stationMap och stationFileNames och variabeln stationMapSize till dennes stationMap, stationFileNames och stationMapSize. BincHandler.java Läser in .binc filerna, .txt-filerna och Directory.txt-filerna. Allt som har att göra med map-filerna, ex steppa igenom, görs i denna klass. (När man redigrerar i EditviewIonoGrms används denna klass metoder, bl a saveMap mm.) Härifrån får vi även posForFilename, posForPicture, filename och fileDirectory. GramFileHandler.java Här används singelton pattern för att vara säker på att endast en initiering av denna klass görs. Denna klass har ansvaret för att öppna rätt jonogramfil för den timme som efterfrågas. ShowPictures.java Här man kan se sina utvalda jonogram i ett eget fönster. Det går att flytta runt dessa och att spara dem till en postscript-fil. Jonogram i olika fönster kan pushas och poppas upp i varandras fönster. Det går även att skriva kommentarer till jonogrammen. ViewGram.java Superklass för ViewGramDeSvnsk och ViewGramPictures. Här läggs knapparna ”smallPictures” och ”push” till. ViewGramDeSvnsk.java Underklass till ViewGram.class. Ansvaret för att hämta jonogrammen för åren 1990 – 2000. Ansvaret för att kopiera sig självt. ViewGramPicture.java Underklass till ViewGram.class. Ansvaret för att hämta jonogrammen för åren 1956 – 1990. Ansvaret för att kopiera sig självt. Excel Excel har använts för att skriva in allt som är digitaliserat. Finns i filen kartaKLU.xls. Ex: ”1959-02-01 00 00 1960-01-01 20 00 filnamn” (startdatum starttimme startminut slutdatum sluttimme slutminut filnamn) Detta är kopierat till nya .txt-filer, kartaK, kartaL, kartaU. I programmet Anteckningar har vi redigerat bort stora mellanslag. (För att kunna läsa av filen via ett program skapat i Smalltalk, se rubrik Smalltalk). Ex: // Tagit bort saknas (i kartaKLUJan.xls)1958-01-01 0 0 1979-12-31 23 0 saknasK 1980-01-01 0 0 1980-01-18 6 0 800101-800118kh 1980-01-18 7 0 1980-02-18 6 0 800118-800218kh Filnamnen från kartaKLU.xls har kopierats till nya txt-filer; kirunafileName.txt, lyckselefileName.txt och uppsalafileName.txt. Ex: //saknasK 800101-800118kh 800118-800218kh Smalltalk I metoden ”doSomething”: Läser av kartaK.txt osv, räknar ut antal sekunder sedan 1/1-1901 (smalltalks epoch). Skriver ut resultatet till filerna secListK, secListL, secListU. Ex: ”//1798761600 2492982000 saknasK 2492985600 2494476000 800101-800118kh 2494479600 2497154400 800118-800218kh” Dessa är vanliga textfiler. (I Smalltalk dock utan .txt ändelse i filnamnet.) MakeStationMap.java Läser av secListK om aktuell station är Kiruna osv. Tar bl a startSec och endSec minus 1735603200 (antalet sekunder den 1/1-1956, räknat från 1/1-1901 (smalltalks epoch)). Skapar en ”karta”, .binc-fil, (binär fil) över index (posForFile) och position i filen (posInFile). Index är filnamnspositionen med start på 0. Detta index matchas senare med kirunaFileName.txt för att få filnamnet. Position, posInFile, är bildnumret i en specifik fil.