Som vi sΓ₯ i forrige kapittel, lar Kystverkets NAIS-tjeneste oss gΓ₯ to uker tilbake i tid via sanntidsgrensesnittet. Men ofte har vi behov for Γ₯ se lenger tilbake. Hva gjΓΈr vi da? Heldigvis har Kystverket lansert HAIS β Historisk AIS β en tjeneste som gjΓΈr det mulig Γ₯ sΓΈke etter fartΓΈybevegelser i norske farvann opptil ett Γ₯r tilbake i tid.
Det finnes ogsΓ₯ kommersielle alternativer, som MarineTraffic, med historiske arkivfunksjoner. Men ettersom vi ofte undersΓΈker forhold i norske farvann β og disse dataene er gratis β velger vi Γ₯ bruke HAIS i dette kapittelet.
Historisk sΓΈkΒΆ
HAIS tilbyr flere mΓ₯ter Γ₯ sΓΈke etter fartΓΈy pΓ₯ β enten geografisk eller basert pΓ₯ fartΓΈyinformasjon. FΓΈr vi starter, mΓ₯ vi ta stilling til:
- Tidsperiode (fraβtil)
- TidsopplΓΈsning (full opplΓΈsning, hvert femte minutt, hver time)
- Dataformat (CSV eller (Geo)Parquet β velg (Geo)Parquet)
- E-postadresse for mottak av data
Figur 1: Kystverket HAIS.
NΓ₯r disse valgene er gjort, kan vi begynne sΓΈket.
SkipstypeΒΆ
Hvis du kjenner skipstypen du vil filtrere pΓ₯, men ikke fartΓΈyets navn, kan du bruke skipstype-feltet. Du kan filtrere pΓ₯ blant annet:
- Dykking
- FiskebΓ₯ter
- Forurensningsbekjempelse
- FritidsbΓ₯t
- HavnebΓ₯t
- HΓΈyhastighetsfartΓΈy
- Lasteskip
- LosbΓ₯t
- Medisinsk transport
- Militær
- Mudring/undervannsoperasjoner
- Passasjerskip
- Politi/lovhΓ₯ndhevelse
- SΓΈk og redning (SAR)
- SlepebΓ₯t
- TaubΓ₯t
- Tankskip
Figur 2: SΓΈk pΓ₯ skipstype i HAIS.
SkipΒΆ
Hvis du kjenner navnet pΓ₯ fartΓΈyet, eller har MMSI, IMO eller kallesignal, kan du sΓΈke direkte. Skriver du inn Richard With, fΓ₯r du opp relevante treff. Du kan filtrere pΓ₯ flere fartΓΈy samtidig eller laste opp en CSV-liste.
Figur 3: SΓΈk pΓ₯ skip i HAIS.
KartutsnittΒΆ
Du kan avgrense sΓΈket geografisk ved Γ₯ tegne et omrΓ₯de i kartverktΓΈyet, eller ved Γ₯ laste opp en WKT-fil med polygon. Tjenesten tilpasser automatisk omrΓ₯det til dekningen som er tilgjengelig.
Figur 4: SΓΈk pΓ₯ geografisk omrΓ₯de.
KjΓΈring av sΓΈkΒΆ
NΓ₯r du er fornΓΈyd med sΓΈkeparametrene, trykker du Send inn. Systemet validerer sΓΈket basert pΓ₯ geografisk omrΓ₯de og tidsrom. Hvis du fΓ₯r feilmelding, har du trolig sΓΈkt for bredt β snevre inn sΓΈket i tid eller rom.
Godkjente sΓΈk blir satt i kΓΈ. Du mottar en e-post nΓ₯r dataene er klare. Tiden det tar, varierer etter sΓΈkets stΓΈrrelse og trafikk pΓ₯ systemet.
Analyse av dataeneΒΆ
Etter en stund fΓ₯r du e-post med lenker til zip-filer som inneholder Parquet-filer. Pakk dem ut og legg dem i en lett tilgjengelig mappe.
Neste steg er Γ₯ importere dataene i et verktΓΈy som DuckDB. Dette minner om arbeidsflyten vi brukte for ADS-B-data, med noen mindre forskjeller i datastruktur og import.
DatastrukturΒΆ
Kystverket benytter spesifikasjonen GeoParquet 1.0.0 til de historiske dataene. Her er Kystverkets egen besrkivelse datastrukturen:
| Kolonner | Meldingstype | Datatype | Beskrivelse |
|---|---|---|---|
| date_time_utc | 1,2,3,5,18,24,27 | DateTime | Tidsstempel i UTC |
| mmsi | 1,2,3,5,18,27 | Integer | Maritime Mobile Service Identity-nummer (ID pΓ₯ fartΓΈyets transponder) |
| longitude | 1,2,3,18,27 | Float | Lengdegrad |
| latitude | 1,2,3,18,27 | Float | Breddegrad |
| status | 1,2,3,18,27 | Integer | Skipets navigasjonsstatus (les mer) |
| course_over_ground | 1,2,3,18,27 | Float | FartΓΈyets kurs over bakken i henhold til kompassnord. |
| true_heading | 1,2,3,18,27 | Integer | Den retningen fartΓΈyet peker i henhold til kompassnord (0-359 grader) |
| speed_over_ground | 1,2,3,18,27 | Float | FartΓΈyets fart i knop |
| rate_of_turn | 1,2,3,18,27 | Float | Rotasjonsrate |
| maneuvre | 1,2,3,18,27 | Integer | ManΓΈverinformasjon |
| imo | 5,24 | Integer | Skrogets IMO-nummer (satt av International Maritime Organization). |
| callsign | 5,24 | String | Radiokallesignal |
| ship_name | 5,24 | String | Skipets navn |
| ship_type | 5,24 | Integer | Skipstype fra AIS |
| length | 5,24 | Float | Lengde pΓ₯ skipet |
| draught | 5,24 | Float | Skipets dypgang |
| data_source | Generert kolonne | String | Datakilde (g: bakkestasjon, s: satelitt) |
| date_utc | Generert kolonne | Date | Dato-kolonne for filtrering pΓ₯ kun dato X |
| geometry | Generert kolonne | String | Geometri-kolonne i WKB-format generert av ST_Point(lon, lat) |
| hex_14 | Generert kolonne | Integer | H3-id for meldingens posisjon i opplΓΈsning 14 |
Her er det mye som minner oss om det vi har sett pΓ₯ tidligere. Vi merker oss felter for data/tid, registreringsnummer (mmsi), posisjon, status, og flere av de aktuelle punktene vi har sett pΓ₯ tidligere kapitler. Dette er nyttig. Vi ser ogsΓ₯ at det er en egen kolonne for geometri, og H3-id med opplΓΈsning 14. Dette er kjent materie for oss nΓ₯, og noe vi kan dra nytte av med det samme.
Import av data i DuckDBΒΆ
- Γ pne Terminal (Mac/Linux) eller PowerShell (Windows), og naviger til mappen der du pakket ut Parquet-filene.
- Start DuckDB med fΓΈlgende kommando:
duckdb geoparquet-hais.db
DuckDB starter med et prompt som ser noenlunde slik ut:
v1.2.1 8e52ec4395
Enter ".help" for usage hints.
DInstaller og last inn utvidelserΒΆ
Dersom du ikke allerede har gjort det i tidligere kapitler, installerer du nΓΈdvendige utvidelser slik:
INSTALL httpfs;
INSTALL spatial;
INSTALL h3 FROM community;Last dem deretter inn:
LOAD httpfs;
LOAD spatial;
LOAD h3;Last inn dataΒΆ
Siden filene ligger lokalt, bruker vi fΓΈlgende kommando for Γ₯ opprette tabellen haisdata:
CREATE TABLE haisdata AS SELECT * FROM '*.parquet';Dette leser inn alle .parquet-filer i mappen og legger dem i Γ©n tabell.
Utforske datasettetΒΆ
Sjekk datastrukturen med:
DESCRIBE haisdata;Du vil se kolonner for tid, posisjon, kurs, fart, skipstype, navn og andre kjente parametre β inkludert geometri og H3-ID.
ββββββββββββββββββββββ¬ββββββββββββββββ¬ββββββββββ¬ββββββββββ¬ββββββββββ¬ββββββββββ
β column_name β column_type β null β key β default β extra β
β varchar β varchar β varchar β varchar β varchar β varchar β
ββββββββββββββββββββββΌββββββββββββββββΌββββββββββΌββββββββββΌββββββββββΌββββββββββ€
β date_time_utc β TIMESTAMP β YES β β β β
β mmsi β INTEGER β YES β β β β
β longitude β DOUBLE β YES β β β β
β latitude β DOUBLE β YES β β β β
β status β TINYINT β YES β β β β
β course_over_ground β DOUBLE β YES β β β β
β true_heading β SMALLINT β YES β β β β
β speed_over_ground β DOUBLE β YES β β β β
β rate_of_turn β SMALLINT β YES β β β β
β maneuvre β SMALLINT β YES β β β β
β imo β INTEGER β YES β β β β
β callsign β VARCHAR β YES β β β β
β ship_name β VARCHAR β YES β β β β
β ship_type β TINYINT β YES β β β β
β length β SMALLINT β YES β β β β
β draught β DECIMAL(10,2) β YES β β β β
β data_source β VARCHAR β YES β β β β
β ais_class β VARCHAR β YES β β β β
β hex_7 β BIGINT β YES β β β β
β hex_14 β BIGINT β YES β β β β
β geometry β BLOB β YES β β β β
ββββββββββββββββββββββ΄ββββββββββββββββ΄ββββββββββ΄ββββββββββ΄ββββββββββ΄ββββββββββ€
β 21 rows 6 columns β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββAntall datapunkterΒΆ
Tell antall rader i datasettet:
SELECT count(*) FROM haisdata;ββββββββββββββββ
β count_star() β
β int64 β
ββββββββββββββββ€
β 236934 β
ββββββββββββββββEksempelradΒΆ
Se ett datapunkt:
SELECT * FROM haisdata LIMIT 1;βββββββββββββββββββββββ¬ββββββββββββ¬βββββββββββββ¬βββββββββββ¬βββββββββ¬βββββββββββββββββββββ¬βββββββββββββββ¬ββββββββββββββββββββ¬βββββββββββββββ¬βββββββββββ¬ββββββββββ¬βββββββββββ¬βββββββββββββββββββββββ¬ββββββββββββ¬βββββββββ¬ββββββββββββββββ¬ββββββββββββββ¬ββββββββββββ¬βββββββββββββββββββββ¬βββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β date_time_utc β mmsi β longitude β latitude β status β course_over_ground β true_heading β speed_over_ground β rate_of_turn β maneuvre β imo β callsign β ship_name β ship_type β length β draught β data_source β ais_class β hex_7 β hex_14 β geometry β
β timestamp β int32 β double β double β int8 β double β int16 β double β int16 β int16 β int32 β varchar β varchar β int8 β int16 β decimal(10,2) β varchar β varchar β int64 β int64 β blob β
βββββββββββββββββββββββΌββββββββββββΌβββββββββββββΌβββββββββββΌβββββββββΌβββββββββββββββββββββΌβββββββββββββββΌββββββββββββββββββββΌβββββββββββββββΌβββββββββββΌββββββββββΌβββββββββββΌβββββββββββββββββββββββΌββββββββββββΌβββββββββΌββββββββββββββββΌββββββββββββββΌββββββββββββΌβββββββββββββββββββββΌβββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β 2025-03-12 19:51:43 β 257600000 β 4.02070333 β 60.85677 β 0 β 182.2 β 178 β 13.3 β 14 β 0 β 9854478 β LAGH7 β SYDSTRAUM β 80 β 129 β 6.00 β G β A β 608156020115505151 β 639681217504175135 β \x00\x00\x00\x00\x01@\x10\x153@\xF5\x12\xBC@Nm\xAA\xA3\xAD\xβ¦ β
βββββββββββββββββββββββ΄ββββββββββββ΄βββββββββββββ΄βββββββββββ΄βββββββββ΄βββββββββββββββββββββ΄βββββββββββββββ΄ββββββββββββββββββββ΄βββββββββββββββ΄βββββββββββ΄ββββββββββ΄βββββββββββ΄βββββββββββββββββββββββ΄ββββββββββββ΄βββββββββ΄ββββββββββββββββ΄ββββββββββββββ΄ββββββββββββ΄βββββββββββββββββββββ΄βββββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββAntall og oversikt over fartΓΈyΒΆ
Finn unike fartΓΈy i datasettet:
SELECT DISTINCT(mmsi), callsign, ship_name FROM haisdata ORDER BY ship_name;βββββββββββββ¬βββββββββββ¬βββββββββββββββββββββββ
β mmsi β callsign β ship_name β
β int32 β varchar β varchar β
βββββββββββββΌβββββββββββΌβββββββββββββββββββββββ€
β 235076245 β 2CVX9 β EDZARD SCHULTE β
β 247302900 β ICPE β AIDASOL β
β 244120000 β PCYH β ANTEOS β
β 244120000 β P C Y H β ANTEOS β
β 636020363 β D5YW3 β AQUASMERALDA β
β 636023947 β 5LQF3 β ASPEN β
β 246598000 β PBTQ β BEATRIX β
β 209356000 β 5BBK5 β BORIS DAVYDOV β
β 255806224 β CQAN6 β BOTHNIA β
β 257619000 β LFGV β CAPRICE β
β 255805753 β CQCC β CHRISTIAN ESSBERGER β
β 215349000 β 9HA2707 β CSL TRIMNES β
β 311023800 β C6XW3 β DEEP ARCTIC β
β 310767000 β ZCEC8 β DEEPSEA STAVANGER β
β 257089140 β LAIX8 β EAGLE BLANE β
β 538006249 β V7LA9 β ECO ROYALTY β
β 259665000 β JWMZ3 β EDDA FAUNA β
β 231700000 β OZ2077 β ELDBORG β
β 305530000 β V2ER8 β FITNES β
β 220151000 β OWQD β FRIDA AMALIE β
β Β· β Β· β Β· β
β Β· β Β· β Β· β
β Β· β Β· β Β· β
β 257297000 β LLUO β REM STAR β
β 310805000 β ZCEZ8 β RENAISSANCE β
β 311000627 β C6DB3 β RUDOLF SAMOYLOVICH β
β 231850000 β OZ2076 β SAEBORG β
β 232419000 β MZHR7 β SEVEN NAVICA β
β 257286000 β LDZH β SIEM PEARL β
β 209190000 β 5BXG4 β SIF W β
β 253309000 β LXUB β SIMON STEVIN β
β 259888000 β LAHA7 β STAVFJORD β
β 538010467 β V7A6081 β STI MYSTERY β
β 538006343 β V7MB8 β STI SPIGA β
β 246695000 β PCKX β STORNES β
β 258527000 β JWRE β STRIL MAR β
β 257129000 β LGLA β STRIL MERKUR β
β 257600000 β LAGH7 β SYDSTRAUM β
β 241456000 β SVCL8 β THOMAS ZAFIRAS β
β 258390000 β LLVY β VIKING ENERGY β
β 257271000 β LACZ8 β VOLANTIS β
β 257970000 β LAUR5 β XANTHIA β
β 311000634 β C6DC2 β YAKOV GAKKEL β
βββββββββββββ΄βββββββββββ΄βββββββββββββββββββββββ€
β 75 rows (40 shown) 3 columns β
βββββββββββββββββββββββββββββββββββββββββββββββSe hvor mange datapunkter hvert fartΓΈy har:
SELECT mmsi, callsign, ship_name, COUNT(*) AS count
FROM haisdata
GROUP BY ALL
ORDER BY count DESC;βββββββββββββ¬βββββββββββ¬βββββββββββββββββββββββ¬ββββββββ
β mmsi β callsign β ship_name β count β
β int32 β varchar β varchar β int64 β
βββββββββββββΌβββββββββββΌβββββββββββββββββββββββΌββββββββ€
β 258390000 β LLVY β VIKING ENERGY β 24621 β
β 257129000 β LGLA β STRIL MERKUR β 17671 β
β 257105000 β LMEL β G.O.SARS β 16976 β
β 257271000 β LACZ8 β VOLANTIS β 16387 β
β 231700000 β OZ2077 β ELDBORG β 11514 β
β 636023947 β 5LQF3 β ASPEN β 9821 β
β 220151000 β OWQD β FRIDA AMALIE β 9787 β
β 538006343 β V7MB8 β STI SPIGA β 7860 β
β 259014300 β JXQO β REBEKKA L β 6115 β
β 258906000 β LDLA β JUANITA β 5990 β
β 259665000 β JWMZ3 β EDDA FAUNA β 5765 β
β 231099000 β OZ2088 β HAV NES β 5487 β
β 636020363 β D5YW3 β AQUASMERALDA β 5288 β
β 219597000 β OZOI β L56 ANNA LISE β 4758 β
β 257438000 β LCCC β HAVILA HEROY β 4239 β
β 257600000 β LAGH7 β SYDSTRAUM β 3430 β
β 245974000 β PARE β NATO WARSHIP A900 β 3422 β
β 231850000 β OZ2076 β SAEBORG β 3396 β
β 258895000 β LDAD β NORTH POMOR β 3378 β
β 257089140 β LAIX8 β EAGLE BLANE β 2968 β
β Β· β Β· β Β· β Β· β
β Β· β Β· β Β· β Β· β
β Β· β Β· β Β· β Β· β
β 310767000 β ZCEC8 β DEEPSEA STAVANGER β 961 β
β 258277000 β LAVS7 β HANNE KNUTSEN β 934 β
β 538010467 β V7A6081 β STI MYSTERY β 898 β
β 230688000 β OJTF β JATULI β 890 β
β 258152000 β LAWE7 β NORDSTRAUM β 846 β
β 255806224 β CQAN6 β BOTHNIA β 768 β
β 257297000 β LLUO β REM STAR β 768 β
β 311023800 β C6XW3 β DEEP ARCTIC β 684 β
β 538006249 β V7LA9 β ECO ROYALTY β 629 β
β 248221000 β 9HA2267 β KEY SOUTH β 628 β
β 266235000 β SJLF β FURE WEST β 619 β
β 205771000 β ONJY β JOAN β 541 β
β 310805000 β ZCEZ8 β RENAISSANCE β 428 β
β 259827000 β LGPE β NORMAND SIGMA β 407 β
β 211210150 β DRAA β GERMAN WARSHIP F219 β 166 β
β 636092960 β D5XR2 β GW ELENI β 162 β
β 257286000 β LDZH β SIEM PEARL β 38 β
β 257619000 β LFGV β CAPRICE β 36 β
β 236111791 β ZDKS2 β KEY BREEZE β 13 β
β 253309000 β LXUB β SIMON STEVIN β 8 β
βββββββββββββ΄βββββββββββ΄βββββββββββββββββββββββ΄ββββββββ€
β 75 rows (40 shown) 4 columns β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Eksport av et enkelt fartΓΈyΒΆ
La oss se pΓ₯ Juanita (MMSI: 258906000). Vi lager en GeoJSON-fil med hele sporloggen:
COPY (
SELECT mmsi, ship_name, ST_MakeLine(ARRAY_AGG(ST_POINT(longitude, latitude) ORDER BY date_time_utc)) AS geom
FROM haisdata
WHERE mmsi = '258906000'
GROUP BY mmsi, ship_name
) TO 'juanita.geojson' WITH (FORMAT gdal, DRIVER 'GeoJSON');Γ pne filen i GeoJSON.iofor Γ₯ se skipets rute visualisert pΓ₯ kart.
Figur 4: Juanitas sporlogg visualisert pΓ₯ et kart.
SΓΈk i geografisk omrΓ₯deΒΆ
HAIS stΓΈtter H3-rammeverket, slik vi kjenner det fra tidligere kapitler. Det betyr at vi enkelt kan sΓΈke etter trafikk i en gitt H3-celle. Merk at H3-ID-ene i HAIS lagres som tallverdier, sΓ₯ vi mΓ₯ konvertere dem til heksadesimal.
- Finn ΓΈnsket H3-celle ved hjelp av et verktΓΈy som H3 Viewer.
- Bruk for eksempel
8409851ffffffffmed opplΓΈsning4. - KjΓΈr denne spΓΈrringen i DuckDB:
SELECT *
FROM haisdata
WHERE h3_cell_to_parent(to_hex(hex_14), 4) = '8409851ffffffff';Du vil da fΓ₯ opp alle datapunkter som befinner seg innenfor den gitte H3-cellen:
βββββββββββββββββββββββ¬ββββββββββββ¬βββββββββββββ¬ββββββββββββββ¬βββββββββ¬βββββββββββββββββββββ¬βββββββββββββββ¬ββββββββββββββββββββ¬βββββββββββββββ¬βββββββββββ¬ββββββββββ¬βββββββββββ¬βββββββββββββββββββββββ¬ββββββββββββ¬βββββββββ¬ββββββββββββββββ¬ββββββββββββββ¬ββββββββββββ¬βββββββββββββββββββββ¬βββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β date_time_utc β mmsi β longitude β latitude β status β course_over_ground β true_heading β speed_over_ground β rate_of_turn β maneuvre β imo β callsign β ship_name β ship_type β length β draught β data_source β ais_class β hex_7 β hex_14 β geometry β
β timestamp β int32 β double β double β int8 β double β int16 β double β int16 β int16 β int32 β varchar β varchar β int8 β int16 β decimal(10,2) β varchar β varchar β int64 β int64 β blob β
βββββββββββββββββββββββΌββββββββββββΌβββββββββββββΌββββββββββββββΌβββββββββΌβββββββββββββββββββββΌβββββββββββββββΌββββββββββββββββββββΌβββββββββββββββΌβββββββββββΌββββββββββΌβββββββββββΌβββββββββββββββββββββββΌββββββββββββΌβββββββββΌββββββββββββββββΌββββββββββββββΌββββββββββββΌβββββββββββββββββββββΌβββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β 2025-03-12 23:59:57 β 636020363 β 3.99394833 β 60.451285 β 0 β 193.8 β 266 β 2.1 β 0 β 0 β 9884801 β D5YW3 β AQUASMERALDA β 80 β 182 β 8.40 β G β A β 608153422381711359 β 639678619758256391 β \x00\x00\x00\x00\x01@\x0F\xF3\x9B.\x9A\x1CK@N9\xC3\xB4\xFβ¦ β
β 2025-03-12 23:59:47 β 636020363 β 3.99399666 β 60.45135666 β 0 β 195.8 β 266 β 2.0 β 0 β 0 β 9884801 β D5YW3 β AQUASMERALDA β 80 β 182 β 8.40 β G β A β 608153422381711359 β 639678619758258871 β \x00\x00\x00\x00\x01@\x0F\xF3\xB4\x85XD\x0F@N9\xC6\x0E\x1β¦ β
β 2025-03-12 23:59:38 β 636020363 β 3.994055 β 60.45143333 β 0 β 194.9 β 267 β 1.9 β 0 β 0 β 9884801 β D5YW3 β AQUASMERALDA β 80 β 182 β 8.40 β G β A β 608153422381711359 β 639678619758258927 β \x00\x00\x00\x00\x01@\x0F\xF3\xD3\x1B\x9Bf\xF9@N9\xC8\x91β¦ β
β 2025-03-12 23:59:27 β 636020363 β 3.9941 β 60.45150833 β 0 β 195.1 β 267 β 2.1 β 0 β 0 β 9884801 β D5YW3 β AQUASMERALDA β 80 β 182 β 8.40 β G β A β 608153422381711359 β 639678619758234911 β \x00\x00\x00\x00\x01@\x0F\xF3\xEA\xB3g\xA0\xF9@N9\xCB\x06β¦ β
β 2025-03-12 23:59:25 β 636020363 β 3.99410333 β 60.45151666 β 0 β 195.9 β 267 β 2.0 β 0 β 0 β 9884801 β D5YW3 β AQUASMERALDA β 80 β 182 β 8.40 β G β A β 608153422381711359 β 639678619758234663 β \x00\x00\x00\x00\x01@\x0F\xF3\xECrY\x8E\xBD@N9\xCBLD&K β
β 2025-03-12 23:59:23 β 636020363 β 3.99412333 β 60.451565 β 0 β 201.1 β 268 β 1.3 β -127 β 0 β 9884801 β D5YW3 β AQUASMERALDA β 80 β 182 β 8.40 β G β A β 608153422381711359 β 639678619758234975 β \x00\x00\x00\x00\x01@\x0F\xF3\xF6\xEE\xB4S.@N9\xCC\xE1\xCβ¦ β
β 2025-03-12 23:59:18 β 636020363 β 3.99415166 β 60.45158166 β 0 β 200.1 β 269 β 1.9 β 0 β 0 β 9884801 β D5YW3 β AQUASMERALDA β 80 β 182 β 8.40 β G β A β 608153422381711359 β 639678619758233751 β \x00\x00\x00\x00\x01@\x0F\xF4\x05\xC9\x17\xB6\x80@N9\xCDmβ¦ β
β 2025-03-12 23:59:14 β 636020363 β 3.99418 β 60.45161666 β 0 β 194.0 β 269 β 1.9 β -127 β 0 β 9884801 β D5YW3 β AQUASMERALDA β 80 β 182 β 8.40 β G β A β 608153422381711359 β 639678619758233743 β \x00\x00\x00\x00\x01@\x0F\xF4\x14\xA4\xD2\xB2\xC0@N9\xCE\β¦ β
β 2025-03-12 23:59:13 β 636020363 β 3.994185 β 60.45163166 β 0 β 196.2 β 269 β 1.6 β -127 β 0 β 9884801 β D5YW3 β AQUASMERALDA β 80 β 182 β 8.40 β G β A β 608153422381711359 β 639678619758233815 β \x00\x00\x00\x00\x01@\x0F\xF4\x17C\xE9c\xDC@N9\xCF\x10\xFβ¦ β
β 2025-03-12 23:59:08 β 636020363 β 3.99420833 β 60.45165666 β 0 β 200.5 β 270 β 1.8 β 0 β 0 β 9884801 β D5YW3 β AQUASMERALDA β 80 β 182 β 8.40 β G β A β 608153422381711359 β 639678619758233823 β \x00\x00\x00\x00\x01@\x0F\xF4#\x7F6\x16\x12@N9\xCF\xE2\xAβ¦ β
β 2025-03-12 23:59:05 β 636020363 β 3.99423166 β 60.45167166 β 0 β 194.7 β 270 β 2.0 β -127 β 0 β 9884801 β D5YW3 β AQUASMERALDA β 80 β 182 β 8.40 β G β A β 608153422381711359 β 639678619758231911 β \x00\x00\x00\x00\x01@\x0F\xF4/\xBA\x82\xC8G@N9\xD0`\x80\xβ¦ β
β 2025-03-12 23:59:04 β 636020363 β 3.994235 β 60.451685 β 0 β 194.7 β 271 β 2.0 β -127 β 0 β 9884801 β D5YW3 β AQUASMERALDA β 80 β 182 β 8.40 β G β A β 608153422381711359 β 639678619758234519 β \x00\x00\x00\x00\x01@\x0F\xF41z\xCCN\xF9@N9\xD0\xD0g\x8C\β¦ β
β 2025-03-12 23:58:58 β 636020363 β 3.994265 β 60.45174333 β 0 β 195.9 β 271 β 1.9 β -127 β 0 β 9884801 β D5YW3 β AQUASMERALDA β 80 β 182 β 8.40 β G β A β 608153422381711359 β 639678619758234119 β \x00\x00\x00\x00\x01@\x0F\xF4A5Tu\xA3@N9\xD2\xB9\xB6D\xA0 β
β 2025-03-12 23:58:56 β 636020363 β 3.99427833 β 60.45174333 β 0 β 193.8 β 271 β 2.1 β -127 β 0 β 9884801 β D5YW3 β AQUASMERALDA β 80 β 182 β 8.40 β G β A β 608153422381711359 β 639678619758234119 β \x00\x00\x00\x00\x01@\x0F\xF4H2s\xC5\xA0@N9\xD2\xB9\xB6D\β¦ β
β 2025-03-12 23:58:47 β 636020363 β 3.994325 β 60.45182 β 0 β 196.8 β 272 β 2.0 β 0 β 0 β 9884801 β D5YW3 β AQUASMERALDA β 80 β 182 β 8.40 β G β A β 608153422381711359 β 639678619758234191 β \x00\x00\x00\x00\x01@\x0F\xF4`\xAAd\xC2\xF8@N9\xD5<\xDD\xβ¦ β
β 2025-03-12 23:58:38 β 636020363 β 3.99437666 β 60.451905 β 0 β 200.8 β 273 β 1.7 β 0 β 0 β 9884801 β D5YW3 β AQUASMERALDA β 80 β 182 β 8.40 β G β A β 608153422381711359 β 639678619758239087 β \x00\x00\x00\x00\x01@\x0F\xF4{\xC0\x14\xD8\x7F@N9\xD8\x05β¦ β
β 2025-03-12 23:58:27 β 636020363 β 3.99444166 β 60.45198666 β 0 β 204.8 β 273 β 2.0 β 0 β 0 β 9884801 β D5YW3 β AQUASMERALDA β 80 β 182 β 8.40 β G β A β 608153422381711359 β 639678619758237927 β \x00\x00\x00\x00\x01@\x0F\xF4\x9D\xD4;\xD6\xF1@N9\xDA\xB2β¦ β
β 2025-03-12 23:58:18 β 636020363 β 3.994515 β 60.45207333 β 0 β 207.1 β 273 β 1.7 β 0 β 0 β 9884801 β D5YW3 β AQUASMERALDA β 80 β 182 β 8.40 β G β A β 608153422381711359 β 639678619758238495 β \x00\x00\x00\x00\x01@\x0F\xF4\xC4G\xC3\x0D0@N9\xDD\x89\xFβ¦ β
β 2025-03-12 23:58:08 β 636020363 β 3.99458 β 60.45214833 β 0 β 207.2 β 273 β 1.7 β 0 β 0 β 9884801 β D5YW3 β AQUASMERALDA β 80 β 182 β 8.40 β G β A β 608153422381711359 β 639678619757651607 β \x00\x00\x00\x00\x01@\x0F\xF4\xE6[\xEA\x0B\xA2@N9\xDF\xFFβ¦ β
β 2025-03-12 23:57:58 β 636020363 β 3.99466166 β 60.452235 β 0 β 205.4 β 273 β 1.8 β 0 β 0 β 9884801 β D5YW3 β AQUASMERALDA β 80 β 182 β 8.40 β G β A β 608153422381711359 β 639678619758284135 β \x00\x00\x00\x00\x01@\x0F\xF5\x11,\x22G\xD3@N9\xE2\xD6#\xβ¦ β
β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β
β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β
β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β Β· β
β 2025-03-13 19:16:16 β 219023236 β 3.751666 β 60.536666 β 7 β 97.0 β β 2.0 β β β 9807786 β OXAB β MYGGENES β 30 β 33 β 0.00 β S β LRIT β 608153424898293759 β 639678622280122647 β \x00\x00\x00\x00\x01@\x0E\x03iv\xBC\x1F\x00@ND\xB1x\xB3p\β¦ β
β 2025-03-13 19:16:14 β 219023236 β 3.751666 β 60.536666 β 7 β 97.0 β β 2.0 β β β 9807786 β OXAB β MYGGENES β 30 β 33 β 0.00 β S β LRIT β 608153424898293759 β 639678622280122647 β \x00\x00\x00\x00\x01@\x0E\x03iv\xBC\x1F\x00@ND\xB1x\xB3p\β¦ β
β 2025-03-13 00:08:05 β 209356000 β 3.958333 β 60.433333 β 0 β 174.0 β β 13.0 β β β 9768394 β 5BBK5 β BORIS DAVYDOV β 84 β 299 β 12.10 β S β LRIT β 608153422868250623 β 639678620250946615 β \x00\x00\x00\x00\x01@\x0F\xAA\xAA}\xEDk\xA9@N7wt\xAB\xA3\β¦ β
β 2025-03-13 00:05:06 β 209356000 β 3.956666 β 60.445 β 0 β 173.0 β β 13.0 β β β 9768394 β 5BBK5 β BORIS DAVYDOV β 84 β 299 β 12.10 β S β LRIT β 608153422868250623 β 639678620245629839 β \x00\x00\x00\x00\x01@\x0F\xA7@\x80\xF9\x8F\xA3@N8\xF5\xC2β¦ β
β 2025-03-13 00:05:06 β 209356000 β 3.956666 β 60.445 β 0 β 173.0 β β 13.0 β β β 9768394 β 5BBK5 β BORIS DAVYDOV β 84 β 299 β 12.10 β S β LRIT β 608153422868250623 β 639678620245629839 β \x00\x00\x00\x00\x01@\x0F\xA7@\x80\xF9\x8F\xA3@N8\xF5\xC2β¦ β
β 2025-03-13 23:59:20 β 219022165 β 3.81623666 β 60.42955666 β 7 β 212.6 β 326 β 0.2 β -127 β 0 β 0 β OWBS β HM228 PONDUS β 30 β 28 β 5.00 β S β A β 608153419546361855 β 639678616932387447 β \x00\x00\x00\x00\x01@\x0E\x87\xA7\x16\x03\xF8]@N6\xFB\xB6β¦ β
β 2025-03-13 22:25:48 β 219022165 β 3.83790833 β 60.37293666 β 7 β 356.9 β 354 β 2.6 β 0 β 0 β 0 β OWBS β HM228 PONDUS β 30 β 28 β 5.00 β S β A β 608153421962280959 β 639678619351091791 β \x00\x00\x00\x00\x01@\x0E\xB4\x09HS*\xF5@N/\xBCcs\x16\xF9 β
β 2025-03-13 22:25:48 β 219022165 β 3.83790833 β 60.37293666 β 7 β 356.9 β 354 β 2.6 β 0 β 0 β 0 β OWBS β HM228 PONDUS β 30 β 28 β 5.00 β S β A β 608153421962280959 β 639678619351091791 β \x00\x00\x00\x00\x01@\x0E\xB4\x09HS*\xF5@N/\xBCcs\x16\xF9 β
β 2025-03-13 23:57:29 β 219022165 β 3.815 β 60.428333 β 7 β 330.0 β β 0.0 β β β 0 β OWBS β HM228 PONDUS β 30 β 28 β 5.00 β S β LRIT β 608153419546361855 β 639678616922679031 β \x00\x00\x00\x00\x01@\x0E\x85\x1E\xB8Q\xEB\x85@N6\xD3\x9Dβ¦ β
β 2025-03-13 23:57:28 β 219022165 β 3.815 β 60.428333 β 7 β 330.0 β β 0.0 β β β 0 β OWBS β HM228 PONDUS β 30 β 28 β 5.00 β S β LRIT β 608153419546361855 β 639678616922679031 β \x00\x00\x00\x00\x01@\x0E\x85\x1E\xB8Q\xEB\x85@N6\xD3\x9Dβ¦ β
β 2025-03-13 23:54:29 β 219022165 β 3.816666 β 60.428333 β 7 β 318.0 β β 0.0 β β β 0 β OWBS β HM228 PONDUS β 30 β 28 β 5.00 β S β LRIT β 608153419546361855 β 639678616922525039 β \x00\x00\x00\x00\x01@\x0E\x88\x88/\x0E\x0A\x85@N6\xD3\x9Dβ¦ β
β 2025-03-13 22:27:28 β 219022165 β 3.836666 β 60.373333 β 7 β 359.0 β β 2.0 β β β 0 β OWBS β HM228 PONDUS β 30 β 28 β 5.00 β S β LRIT β 608153421962280959 β 639678619351051575 β \x00\x00\x00\x00\x01@\x0E\xB1}\xF1\x9Df\xAE@N/\xC9`0\xC2@ β
β 2025-03-13 22:24:27 β 219022165 β 3.836666 β 60.371666 β 7 β 355.0 β β 2.0 β β β 0 β OWBS β HM228 PONDUS β 30 β 28 β 5.00 β S β LRIT β 608153421962280959 β 639678619351067943 β \x00\x00\x00\x00\x01@\x0E\xB1}\xF1\x9Df\xAE@N/\x92\xC0a\xβ¦ β
β 2025-03-13 21:06:28 β 219022165 β 3.851666 β 60.315 β 7 β 340.0 β β 2.0 β β β 0 β OWBS β HM228 PONDUS β 30 β 28 β 5.00 β S β LRIT β 608153422046167039 β 639678619429798647 β \x00\x00\x00\x00\x01@\x0E\xD06C\x88\xEB\xCC@N(Q\xEB\x85\xβ¦ β
β 2025-03-13 21:03:27 β 219022165 β 3.853333 β 60.311666 β 7 β 339.0 β β 2.0 β β β 0 β OWBS β HM228 PONDUS β 30 β 28 β 5.00 β S β LRIT β 608153422046167039 β 639678619430290455 β \x00\x00\x00\x00\x01@\x0E\xD3\xA0@|\xC7\xD2@N\x27\xE4\xABβ¦ β
β 2025-03-13 21:03:27 β 219022165 β 3.853333 β 60.311666 β 7 β 339.0 β β 2.0 β β β 0 β OWBS β HM228 PONDUS β 30 β 28 β 5.00 β S β LRIT β 608153422046167039 β 639678619430290455 β \x00\x00\x00\x00\x01@\x0E\xD3\xA0@|\xC7\xD2@N\x27\xE4\xABβ¦ β
β 2025-03-13 20:54:27 β 219022165 β 3.856666 β 60.306666 β 7 β 345.0 β β 2.0 β β β 0 β OWBS β HM228 PONDUS β 30 β 28 β 5.00 β S β LRIT β 608153422046167039 β 639678619433830087 β \x00\x00\x00\x00\x01@\x0E\xDAs\xB4,\xC2\xD7@N\x27@\xD4\xDβ¦ β
β 2025-03-13 20:54:27 β 219022165 β 3.856666 β 60.306666 β 7 β 345.0 β β 2.0 β β β 0 β OWBS β HM228 PONDUS β 30 β 28 β 5.00 β S β LRIT β 608153422046167039 β 639678619433830087 β \x00\x00\x00\x00\x01@\x0E\xDAs\xB4,\xC2\xD7@N\x27@\xD4\xDβ¦ β
β 2025-03-13 20:54:27 β 219022165 β 3.856666 β 60.306666 β 7 β 345.0 β β 2.0 β β β 0 β OWBS β HM228 PONDUS β 30 β 28 β 5.00 β S β LRIT β 608153422046167039 β 639678619433830087 β \x00\x00\x00\x00\x01@\x0E\xDAs\xB4,\xC2\xD7@N\x27@\xD4\xDβ¦ β
β 2025-03-13 20:51:28 β 219022165 β 3.858333 β 60.303333 β 7 β 345.0 β β 2.0 β β β 0 β OWBS β HM228 PONDUS β 30 β 28 β 5.00 β S β LRIT β 608153422046167039 β 639678619434559663 β \x00\x00\x00\x00\x01@\x0E\xDD\xDD\xB1 \x9E\xDC@N&\xD3\x9Dβ¦ β
βββββββββββββββββββββββ΄ββββββββββββ΄βββββββββββββ΄ββββββββββββββ΄βββββββββ΄βββββββββββββββββββββ΄βββββββββββββββ΄ββββββββββββββββββββ΄βββββββββββββββ΄βββββββββββ΄ββββββββββ΄βββββββββββ΄βββββββββββββββββββββββ΄ββββββββββββ΄βββββββββ΄ββββββββββββββββ΄ββββββββββββββ΄ββββββββββββ΄βββββββββββββββββββββ΄βββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β 28451 rows (40 shown) 21 columns β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
D SELECT * FROM haisdata WHERE h3_cell_to_parent(to_hex(hex_14), 4) LIKE '8409851ffffffff';
Bruk av Google Colab-notebooksΒΆ
For mange vil det vΓ¦re mer fleksibelt Γ₯ jobbe med dataene i en notebook, spesielt nΓ₯r vi nΓ₯ er blitt vant til det. La oss se hvordan vi kan ta med oss det vi har lΓ¦rt inn i Google Colab.
Opprett en ny notebookΒΆ
GΓ₯ til Google Colab.
Velg Fil β Ny notatbok. Du fΓ₯r opp en tom notatbok som ser slik ut:
Figur 5: Tom notebook.
Installer og last inn DuckDBΒΆ
Start med Γ₯ installere nΓΈdvendige pakker og laste inn utvidelsene:
# Last inn DuckDB og nΓΈdvendige tilleggsmoduler!pip install lonboard==v0.9.3 duckdb plotly.express
import duckdb
con = duckdb.connect()
con.sql('INSTALL spatial;')
con.sql('INSTALL httpfs;')
con.sql('INSTALL h3 FROM community;')
con.sql('LOAD spatial;')
con.sql('LOAD httpfs;')
con.sql('LOAD h3;')Last opp og importer dataΒΆ
Klikk pΓ₯ mappeikonet i venstremenyen.
Trykk pΓ₯ opplastingsikonet (pil opp) og velg Parquet-filene fra datamaskinen din.
Figur 5: Last opp filer fra maskinen din.
- Opprett en ny celle og les inn dataene:
con.sql('CREATE TABLE haisdata AS SELECT * FROM "*.parquet";')- Test at alt fungerer:
con.sql('DESCRIBE haisdata;').pl()| column_name | column_type | null | key | default | extra |
|---|---|---|---|---|---|
| date_time_utc | TIMESTAMP | YES | null | null | null |
| mmsi | INTEGER | YES | null | null | null |
| longitude | DOUBLE | YES | null | null | null |
| latitude | DOUBLE | YES | null | null | null |
| status | TINYINT | YES | null | null | null |
| ... | ... | ... | ... | ... | ... |
| data_source | VARCHAR | YES | null | null | null |
| ais_class | VARCHAR | YES | null | null | null |
| hex_7 | BIGINT | YES | null | null | null |
| hex_14 | BIGINT | YES | null | null | null |
| geometry | GEOMETRY | YES | null | null | null |
Dataene er nΓ₯ klare til analyse, visualisering og videre utforskning.