• No results found

Matchningsprocedur mellan AIS-data och Hamnstatistiken

För varje anlöpsregistrering i Hamnstatistiken skapas en kvadrupel som representerar fartyget:

(CS,IMO,GT,FartygsNamn). För många av anlöpen finns felaktigheter och bortfall i denna kvadrupel. Men, i många fall, finns även en (eller många) korrekta kvadrupel för det aktuella fartyget. Idén i proceduren nedan är att använda korrekta kvadrupler för att korrigera de felaktiga:

1. Utgå från anlöpsdata från Hamnstatistiken. För varje registrering (dvs ankomst eller avgång) bildas kvadrupeln ovan. Samla alla dessa kvadrupler i en lista.

2. Komprimera listan genom att ta bort alla dubbletter i den. (Med dubblett menas att alla komponenter i två kvadrupler är identiskt lika.) Låt oss kalla denna lista för L.

3. Gör en lista (LIMO) över alla IMO-nummer som finns representerade i AIS-data (alla åren). Gör motsvarande lista för CallSign (LCS).

4. Tag bort felaktiga data i L: För varje kvadrupel i L gör följande:

a. Tag bort uppenbart felaktiga tecken i CallSign (även mellanslag). b. Gör versaler av CallSign och FartygsNamn.

c. Tag bort IMO-nummer som inte har sju siffror.

d. Tag bort IMO-nummer som inte finns representerade i AIS-listan, LIMO.

5. Imputera korrekta Imo-nummer: För varje kvadrupel, q, i L, som har tomt IMO-nummer: a. Finn alla kvadrupler i L som har samma CallSign som q.

b. Av dessa, välj den kvadrupel, m, som har störst AntalAnlop.

c. Om CallSign, GT och Fartygsnamn överensstämmer exakt (mellan kvadruplarna q och m) så tilldelar vi q samma IMO-nummer som m.

d. Om CallSign och GT överensstämmer exakt och fartygsnamnet ”ungefärligen”9, så tilldelar vi q samma IMO-nummer som m.

e. Om Fartygsnamn stämmer exakt och GT avviker med mindre än 30%, så tilldelar vi q samma IMO-nummer som m.

f. Om CallSign och GT överensstämmer exakt, så tilldelar vi q samma IMO-nummer som m. g. Om inget av villkoren c-f uppfylls, så görs i detta steg ingen imputation av IMO. För varje fall

ovan tilldelas en viss kod som klassar kvalitén på matchningen.

6. Korrigera felaktiga CallSign: För varje kvadrupel, q, i L, vars CallSign saknas i AIS-data (dvs i LCS) görs följande:

a. Finn alla kvadrupler i L som har: (samma GT som q eller samma IMO som q) och ”ungefärligen” samma FartygsNamn?? IMO icke-tomt ??

b. Av dessa, välj den kvadrupel, m, som har störst AntalAnlop.

c. Om CallSign för m finns representerad i AIS-data, så tilldelar vi q samma CallSign som m har. Om dessutom IMO-numret i m är icke-tomt, så tilldelar vi q samma IMO-nummer som m har. 7. Imputera IMO-nummer m.hj.a. SFV-data: För varje kvadrupel, q, i L som fortfarande saknar IMO-

nummer görs följande:

a. Om IMO-nummer för q är tomt och CallSign för q är icke-tomt, så används CallSign för att hitta SFV-kvadrupler med IMO-nummer. Tilldela q ett sådant IMO-nummer.

b. Om både IMO-nummer och CallSign är tomma för q, så används i stället GT och FartygsNamn för att hitta SFV-kvadrupler med IMO-nummer. Tilldela q ett sådant IMO- nummer (och även ett CallSign).

8. Imputera IMO-nummer m.hj.a. AIS-data: För varje kvadrupel, q, i L som fortfarande saknar IMO- nummer görs följande:

a. Om IMO-nummer för q är tomt och CallSign för q är icke-tomt, så används CallSign för att hitta AIS-kvadrupler med IMO-nummer. Tilldela q ett sådant IMO-nummer.

9 Att två fartygsnamn överensstämmer ”ungefärligen” innebär att minst ett av följande fall gäller: 1) det första namnet ingår som en del av det andra namnet, 2) det andra namnet ingår som en del av första namnet, 3) de två namnen skiljer sig för högst en bokstav.

b. Om både IMO-nummer och CallSign är tomma för q, så används i stället FartygsNamn för att hitta AIS-kvadrupler med IMO-nummer. Tilldela q ett sådant IMO-nummer (och även ett CallSign).

9. Korrigera fall där ett och samma CallSign svarar mot olika IMO-nummer. (Får ej förekomma!) a. Gör en entydig lista över alla (CallSign, IMO-nummer)-par som förekommer i L.

b. För de fall där vi har flera IMO-nummer för ett och samma CallSign, kan enbart ett av IMO- numren vara korrekt. Använd AIS-kvadruplerna för att avgöra vilket av numren som är korrekta.

c. Ersätt i L de funna felaktiga IMO-numren.

10. Ersätt återstående IMO-nummer i L som inte har någon motsvarighet i AIS-kvadruplerna. Detta görs med ledning av CallSign och FartygsNamn.

En rest av kvadrupler, för vilka IMO-nummer inte lyckats erhållas med ovanstående procedur, kommer att kvarstå. Denna rest omfattar (för år 2016) ca 25 kvadrupler (av totalt ca 4500

ursprungligen). För dessa får man med manuellt detektivarbete försöka googla sig fram till korrekt identitet. Nyckeln kan därefter kompletteras med dessa. För en liten handfull kvadrupler misslyckas även detta. De får betraktas som bortfallna och motsvarande anlöp kommer att bortfalla.

Det bör även påpekas att ovanstående procedur inte är någon garanti för att fartygsidentiteten blir korrekt. IMO-numret kan fortfarande vara felaktigt trots alla ansträngningar. Detta leder till att matchningarna mellan Hamnstatistiken och AIS-data kommer att bli felaktiga. Det finns goda möjligheter att upptäcka sådana fall i matchningssteget.

Motsvarande (men mindre omfattande) procedur för imputationer/korrigeringar görs även för AIS- kvadruplerna.

Observera att upplägget i proceduren är sådant att man börjar med de säkraste imputationerna för att sedan göra alltmer osäkra imputationer (dvs baserade på vagare information). Därefter görs

korrigeringarna efter samma princip.

Sekvensering av anlöp

Sekvenseringen av anlöpen görs både för hamnstatistikdata och AIS-data. Eftersom tillvägagångssättet är likartat i de båda fallen beskrivs här endast det första:

1. Inläsning av anlöpstabell för det aktuella året samt av ”fartygsnyckeln” från föregående avsnitt.

2. För varje registrering i anlöpstabellen:

a. bestäms kvadrupeln för fartygsidentiteten

b. använd ”fartygsnyckeln” för att bestämma korrigerad kvadrupel. c. korrigera fartygsdata för det aktuella anlöpet.

3. Sortera anlöpstabellen med avseende på IMO-nummer och tidpunkt.

För hamnstatistikanlöpen leder den grova tidsupplösningen för registreringarna till att dessa kommer i felaktig ordning efter sekvenseringen. En speciell procedur har tagits fram som med hjälp av andra variabler i många fall kan korrigera sådana fel. Dock, i mer komplicerade fall, exempelvis när även andra typer av fel föreligger, misslyckas den korrigeringen. Detta är en källa till att matchningen mot AIS-data ibland fallerar.

För AIS-data uppstår ett speciellt problem i vissa hamnar där passagelinjerna nödvändigtvis måste läggas nära kajen (särskilt i Göta Älv-hamnarna). Där fås ofta falska passageregistreringar. Dessa bör identifieras och elimineras för att förhindra att falska anlöp registreras. En speciell procedur har tagits fram för detta syfte. Dock är den inte helt tillförlitlig och en viss andel falska anlöp kvarstår i AIS- data, vilket försvårar matchningen mot Hamnstatistiken.

Matchning mellan hamnstatistik-registreringar och AIS-registreringar

Matchningens syfte är dels att säkerställa att de (korrigerade) data som finns verkligen är korrekta, dels att kombinera de uppgifter som finns i de båda datakällorna. Från Hamnstatistiken är det i första hamn uppgifter om godset som är intressant, från AIS är det exempelvis den mer exakta tidpunkten för ankomst/avgång, uppgift om fartygets djupgående samt framför allt anlöpen i de utländska hamnarna. Matchningen är inte helt symmetrisk utan görs med utgångspunkt från Hamnstatistikens anlöp. Vi utgår från dessa registreringar och försöker hitta de AIS-registreringar som matchar dessa. Först i ett senare skede imputeras AIS-registreringar som blir över. Anlöpen i de utländska hamnarna imputeras inte förrän i samband med skapandet av rutter (se nästa avsnitt).

1. Läs in de sekvenser som skapades i föregående steg (hamnstatistik respektive AIS). Läs även in en aggregeringsnyckel för hamnarna och tillämpa denna på varje anlöpshamn så att både AIS-hamnar och hamnstatistikhamnar får en gemensam aggregeringsnivå.

2. Matchningen görs för ett fartyg i taget. Alltså: görs en lista av IMO-nummer som förekommer i hamnstatistikanlöpen. För varje sådant IMO-nummer, plockas hela sekvensen anlöp ut, dels för Hamnstatistiken, dels för AIS-data. Dessa två delsekvenser, SH resp SA, ska matchas mot

varandra:

a. För varje registrering i SH, dvs hamnstatistikanlöpen, klassificeras hur bra den hänger

ihop med föregående, respektive, efterföljande registrering, P resp N. Detta görs dels genom att använda information om riktning (dvs ankomst eller avgång), dels genom att använda information om närmast föregående/efterföljande hamnar.

b. För varje registrering i SH, finn den registrering i SA som matchar perfekt med

avseende på anlöpt hamn, datum samt föregående och efterföljande anlöp. Mergea ihop dessa. (Om flera registreringar i AIS, välj den första.) Stryk de matchade från SH

och SA.

c. För varje registrering i SH, finn den registrering i SA som matchar perfekt med

avseende på anlöpt hamn, riktning, datum samt föregående och efterföljande anlöp. Mergea ihop dessa.

d. För varje återstående registrering i SH, finn den återstående registrering i SA som

matchar perfekt med avseende på anlöpt hamn, riktning och datum samt där antingen föregående eller efterföljande anlöp matchar acceptabelt. Mergea ihop dessa.

e. För varje återstående registrering i SH som är inklämd mellan två redan matchade,

registreringar och för vilka datumen inte är i konflikt med varandra, finn den återstående registrering i SA som matchar med avseende på hamn och riktning men

där datum avviker med exakt ±1 dag. Mergea ihop dessa.

f. Upprepa föregående punkt men där datum istället avviker med exakt ±2 dagar. Sedan med ±3 dagar och slutligen med ±4 dagar.

g. Imputation av saknade poster i Hamnstatistiken. (Ej genomförd ännu.)

Vi har nu en uppsättning registreringar för Hamnstatistiken som är fler än de var ursprungligen (tack vare imputationen i punkt g), och där de allra flesta registreringar har kunnat matchas mot en AIS- registrering, och därmed också kunnat tilldelas dennas variabelvärden. För vissa registreringar har dock matchningen misslyckats, vilket innebär att AIS-variabler saknar värde för denna post.

I samma veva passar vi även på att koppla ihop alla registreringar från Hamnstatistiken med lastdata. Detta görs med hjälp av en speciell nyckel, i förväg framtagen för ändamålet. Vi har därmed, för varje registrering data om hur mycket gods som lastats på (eller av, beroende på riktning) för olika varuslag.

Skapandet av rutter

Detta steg består av olika delmoment. Vi beskriver dessa i var sitt avsnitt. I ett första steg slås registreringarna ihop till anlöp. Därefter definieras och numreras de egentliga rutterna. Två fall särskiljes: enbart svenska hamnanlöpen och alla anlöpen.

Från passagelinjeregistreringar till anlöp

Fram till nu har vi hanterat ankomst- och avgångsregistreringarna snarare än egentliga anlöp. Här ska nu dessa registreringar slås samman så att varje anlöp representeras av en post i stället för två. Det blir därmed betydligt enklare både att göra beräkningar på dessa men också att få överblick över

anlöpssekvenserna.

Registreringarna paras om möjligt ihop parvis, ankomstregistreringen + avgångsregistreringen. (Om någon av dessa saknas får detta hanteras separat.) Eftersom det är två registreringar inblandade krävs för vissa variabler (t ex tidpunkter) ett fält för ankomst och ett annat för avgång. För övrigt är denna omstrukturering ganska okomplicerad.

Ovanstående görs oberoende av varandra för Hamnstatistiken och för AIS-data.

Imputering av utländska hamnanlöp till de svenska.

Imputeringen görs för ett fartyg (IMO-nummer) i taget. En sammanvävning mellan anlöp från de svenska ut de utländska görs genom att utgå från tidpunkterna för anlöpen. Detta är relativt enkelt för de svenska anlöp som har exakt klockstämpel (dvs. för vilka matchningen mot AIS-data lyckats). Vid bortfall av klockangivelse kompliceras vävningen en smula.

Ruttnumrering

För fallet enbart svenska anlöp

Rutter påbörjas och avslutas så snart de avgår/ankommer till en utländsk hamn. Inom varje sådan slinga kan ytterligare rutter skapas. Detta görs genom att bestämma det vi kallar för den

”ruttbestämmande hamnen” för slingan. Detta är den hamn som angörs flest gånger i slingan. Ett krav är att den ruttbestämmande hamnen angörs minst två gånger i slingan. (Om ingen hamn angörs mer än en gång i slingan så saknas en ruttbestämmande hamn. Om två olika hamnar har flest anlöp så väljs den som påträffas först i slingan.) Varje gång fartyget ankommer till den ruttbestämmande hamnen så påbörjas en ny rutt. Under varje rutt kan det förekomma att en fullständig (under)loop görs. Vi kallar en sådan för subloop. (En underloop till en subloop kan teoretiskt förekomma, men vi ignorerar dessa.) Rutterna numreras i kronologisk ordning. Varje anlöp tilldelas ett ruttnummer och ett anlöpsnummer inom rutten. Sublooparna numreras inte utan markeras på speciellt sätt.

För fallet anlöp i svenska + utländska hamnar

I detta fall särskiljer vi inte anlöp i svenska hamnar från anlöp i utländska. Rutter påbörjas och avslutas vid passagelinjerna genom Skagerack och Kielkanalen. Väster om denna passagelinje är rutter

odefinierade. För övrigt är ruttdefiniering och ruttnumrering helt analoga med hur de gjordes i det rent svenska fallet. Den enda skillnaden är att den ruttbestämmande hamnen nu kan vara en godtycklig hamn inom Östersjö-Skagerack-området.

Ruttklassning

Förutom numrering av rutter görs även en typindelning av dessa i olika klasser. Klassningen skiljer sig åt för fallen enbart svenska anlöp och svenska och utländska anlöp. Den klassindelning som föreslås här gäller svenska+utländska anlöp. Den är preliminär och kan modifieras/anpassas framöver, beroende på frågeställning och tillämpning.

Rutter från passagelinjen Skagerack-Kielkanalen till den ruttbestämmande hamnen (I) • Rutter från ruttbestämmande hamnen till ruttbestämmande hamnen (R).

• Subloopar (L).

Rutter från den ruttbestämmande hamnen till passagelinjen Skagerack-Kielkanalen (O). • Rutter som saknar ruttbestämmande hamn (M).

Utöver detta särskiljer vi om rutten angör någon svensk hamnar (S) eller ej (U). Vi får därmed följande tio kategorier: Is, Iu, Rs, Ru, Ls, Lu, Os, Ou, Ms, Mu. Varje anlöp tilldelas någon av dessa kategorier. Man kan tänka sig många olika varianter av klassindelningar. Exempelvis kan man tänka sig att räkna antal anlöp, svenska resp. utländska, i rutterna och låta detta ingå i klassnamnet: exempelvis skulle då Is1u3 kunna markera de rutter som går från passagelinjen Skagerack-Kielkanalen till den

ruttbestämmande hamnen och därvid gör anlöp i en svenska hamn och tre utländska.

På motsvarande sätt kan en klassning göras för enbart svenska anlöp. En detalj här är att vi lägger till (imputerar) det närmast föregående utländska hamnanlöpet (om sådant finns) i början på rutten, och på motsvarande sätt det närmast efterföljande hamnanlöpet. Dessa utländska hamnar blir då helt analoga med (och hanteras på samma sätt som) passagelinjerna Skagerack-Kielkanalen i fallet

svenska+utländska.

Diverse kompletteringar

Fram till nu har vi inte beaktat transporternas längder (distanser). Från Trafikanalys har vi fått avståndsmatriser mellan hamnarna (ref…). Dessa har vi lagt in i rutterna och anger avståndet mellan aktuellt anlöp och närmast föregående. (En uppdelning av dessa avstånd på olika länders vatten finns även tillgänglig.) Därmed kan man enkelt beräkna körsträckor för ruttbenen och rutterna.

Ur tidsstämplingarna (från AIS) kan man även beräkna tidsåtgången för ruttbenen och rutterna. OBServera dock att tiderna gäller passagerna förbi passagelinjerna utanför hamnarna, inte

ankomst/avgång till/från kaj. Vill man beräkna medelhastigheter på olika ruttben bör man kompensera för sträckan mellan kaj och passagelinje.

Related documents