Skip to main content

Automatic Identification System decoding - ship tracking

Project description

Library for decoding maritime Automatic Identification System messages.


Building with Python

$ python build
$ python install

Testing with Python

$ virtualenv ve
$ source ve/bin/activate
$ python test

Building with CMake

$ cmake .
$ make

Building with legacy Makefile

$ make -f Makefile-custom test


There are two interfaces to libais, one high-level iterator based one and a low-level fast C++ only one. The iterator based interface is accessed the following way:

with open("file.nmea") as f:
    for msg in
        print msg

To use the low-level C++ interface directly, you need to handle multi-line messages and padding yourself:

import ais
ais.decode('15PIIv7P00D5i9HNn2Q3G?wB0t0I', 0)
ais.decode('402u=TiuaA000r5UJ`H4`?7000S:', 0)
ais.decode('55NBjP01mtGIL@CW;SM<D60P5Ld000000000000P0`<3557l0<50@kk@K5h@00000000000', 2)

There is also support for converting parsed messages to the structure output by GPSD / gpsdecode. For full compatibility, you have to write the resulting message dictionaries to a file with json.dump() and add a newline after each message.

import json
import ais.compatibility.gpsd

with open("infile.nmea") as inf:
    with open("outfile.gpsd") as outf:
        for msg in
            gpsdmsg = ais.compatibility.gpsd.mangle(msg)
            json.dump(gpsdmsg, outf)

AIS Specification Documents

  • ITU-1371, ITU-1371-{1,2,3,4]
  • e-Navigation
  • IMO Circ 236
  • IMO Circ 289
  • EU RIS


The C++ code was switched to the Google style in November, 2012. Indenting should be by 2 spaces.

$ git clone
$ cd libais
$ virtualenv ve
$ source ve/bin/activate
$ pip install -e .[tests]
$ python test
$ py.test --cov=ais --cov-report term-missing


$ git clone
$ cd libais
$ virtualenv ve
$ source ve/bin/activate
$ pip install -e .[test]
$ python develop
$ python test
$ py.test --cov=ais --cov-report term-missing

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for libais, version 0.17
Filename, size File type Python version Upload date Hashes
Filename, size libais-0.17.tar.gz (157.4 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page