ETA-tieto virheellinen

46 views
Skip to first unread message

Antti Ahola

unread,
Dec 12, 2017, 3:58:02 AM12/12/17
to meri.digitraffic.fi
Moikka,

Kiitos mainiosta rajapinnastanne! Olen yrittänyt selvittää miten kääntäisin Vessel Metadata Controllerista saadun (/api/v1/metadata/vessels/{mmsi}) eta tiedon selkokieliseksi. Tästä aiheesta oli jo tässä ryhmässä yksi keskustelun pätkä, joka loppui siihen, ettei digitrafficin rajapintaan tulevaa dataa muuteta, vaan se julkaistaan eteenpäin sellaisenaan. 

AIS-dokumentaatio sanoo, että eta-viesti olisi tällainen:

Estimated time of arrival; MMDDHHMM UTC

Bits 19-16: month; 1-12; 0 = not available = default

Bits 15-11: day; 1-31; 0 = not available = default

Bits 10-6: hour; 0-23; 24 = not available = default

Bits 5-0: minute; 0-59; 60 = not available = default

For SAR aircraft, the use of this field may be decided by the responsible administration


Nyt kuitenkin digitraffic rajapinnasta tulevat eta-tiedot tulevat integereinä, jotka ovat maksimipituudeltaan 6 merkkiä. Skriptini hakee kaikki alukset, ja niille metatiedot, ja missään näistä metatietojen eta-tiedoissa ei ollut tuon virallisen formaatin mukaista dataa. Epäilen, että siinä palassa systeemiä, joka lukee virallista AIS-feediä ja muodostaa saadusta datasta sisältöä digirafficin rajapintaan tapahtuu jotain erikoista. 


Jos epäilykseni on aiheeton, niin olisiko jollain tieto, millä kikalla digitrafficin eta tiedon saa muutettua selkokieliseksi aikatiedoksi?


Tässä muutama eta-tieto suoraan digitrafficin feedistä:


t.Antti

Solita / Ville

unread,
Dec 12, 2017, 5:51:58 AM12/12/17
to meri.digitraffic.fi
Hei,

On tiedossa, että Digitrafficille tuleva AIS-data ei ole kaikilta osin kuranttia. Voisitko tarjota esimerkkejä, joissa ETA-tieto on kummallinen?

Ystävällisin terveisin / Best regards
– Digitraffic asiakastuki / Digitraffic support  –

Antti Ahola

unread,
Dec 12, 2017, 10:51:31 AM12/12/17
to meri.digitraffic.fi
Moi,

Hienoa, että on tiedossa! Nyt tehdään tälle jotain, vaikkapa yhdessä!

En viitsi liittää tänne kaikkia reilua 5000 esimerkkiriviä, mutta tässäpä muutama kymmentä ensimmäistä havainnollistamaan virheen systemaattisuutta. Ongelma ei ole siinä, että prosentissa datassa olisi inhimillinen tiedonsyöttövirhe vaan jokainen rivi on joko väärin, tai sitten en vain ole löytänyt sitä oikeaa tapaa muuntaa eta tieto selkokieliseksi ajaksi. Tämänkin keinon keksiminen olisi mainio lopputulema tälle viestittelylle. :)

Esimerkkirivit:
mmsi eta
236150000 795136
236039000 796992
230938640 372062
230993710 736128
230938560 754846
538005339 666432
230990040 291904
310398000 792832
249399000 803840
230084710 434176
244826000 398272
230277000 492672
236147000 798976
245258000 783552
230993680 641856
244870000 788864
276809000 790617
265514760 1596
304080887 795026
246629000 794688
276798000 781278
230109460 404397
230051080 67584
230352000 799104
230994870 756864
212702000 799040
563907000 281408
277449000 791040
218667000 740096
249500000 797056

t.Antti

Solita / Ville

unread,
Dec 13, 2017, 3:09:23 AM12/13/17
to meri.digitraffic.fi
Hei,


Yksi tapa testailla on ajaa komento "watch node test-ais-eta.js" ja muokkata tiedostoa sisältämään eri mmsi-arvoja.

Pertti Sundqvist

unread,
Dec 13, 2017, 3:18:57 AM12/13/17
to meridigi...@googlegroups.com

Onhan noissa ihan järkevä päivämäärä. Se vaan pitää katsoa ohjeiden mukaisesti:


Estimated time of arrival; MMDDHHMM UTC

Bits 19-16: month; 1-12; 0 = not available = default

Bits 15-11: day; 1-31; 0 = not available = default

Bits 10-6: hour; 0-23; 24 = not available = default

Bits 5-0: minute; 0-59; 60 = not available = default

Noissa kuusinumeroisissa luvuissa on 20 bittiä. Bitit vaan jaetaan neljään ryhmään sopivan mittaisissa pätkissä.

t Pertti
(jonka mielestä 1+1=10)

--
Sait tämän viestin, koska olet tilannut seuraavan Google-ryhmän: meri.digitraffic.fi.
Jos haluat peruuttaa tämän ryhmän tilauksen ja sen sähköpostiviestien vastaanottamisen, lähetä sähköpostia osoitteeseen meridigitraffi...@googlegroups.com.
Voit lähettää viestejä tähän ryhmään käyttämällä sähköpostiosoitetta meridigi...@googlegroups.com.
Jos haluat tarkastella tätä keskustelua verkossa, siirry osoitteeseen https://groups.google.com/d/msgid/meridigitrafficfi/3d540cc0-4d58-482b-b2b9-63be637a4b51%40googlegroups.com.
Lisää vaihtoehtoja on osoitteessa https://groups.google.com/d/optout.

Antti Ahola

unread,
Dec 18, 2017, 1:33:52 AM12/18/17
to meri.digitraffic.fi
Moi ja kiitos!

Tuo linkin skriptin tutkiminen auttoi. Datassa ei todella ole virhettä, en vaan itse osannut. :) Pahoittelut bugiksi väittämisestä.
Tässä siis miten homma toimii, jos joku seuraava miettii samaa:
-eta tieto pitää muuntaa binääriluvuksi ensin (aivan kuten Pertti vastauksessaan vihjaa).
-saatu binääriluku pitää pilkkoa neljän mittaisiksi ryhmiksi. 
-kun nämä neljän mittaiset ryhmät kääntää takaisin binääristä integereiksi, niin paljastuu kuukaudet, päivät, tunnit ja minuutit. 

Kiitos vielä keskusteluun osallistuneille!
t.Antti
Reply all
Reply to author
Forward
0 new messages