The Automatic Identification System (AIS) is a ship tracking network using VHF transponders. AIS equipped ships are transmitting their positions, destinations, names, cargo types, etc. You can receive these transmissions using expensive AIS transponders, or receivers such as those available from Milltech Marine, SeaCAS and Y-Tronic. AIS transponders and receivers output the received information as serial data using AIVDM messages. These are described in the IEC 61993-2 specification, but they are very similar to NMEA 0813 messages output by GPS devices.

The AIS Parser SDK parses these packed serial messages into data structures containing all of the AIS information for each message type. It allows you to easily add AIS capabilities to your desktop and web products, saving you valuable development time. The SDK consists of 3 'C' files to link into your project; you then pass serial data to the SDK and it returns data structures with all of the information from the message. The AIS message contents are documented by the ITU M.1371 and IEC 62287 specifications. You will need a copy of these to fully understand the data generated by the SDK.

Example applications are included that process AIS messages from stdin and output json, xml and human readable text. The ais_json application is used in the AIS Google Map Demo page.

Current Release: v1.8
This release includes the following changes:
  • win32 python module built with Python 2.5.2
  • Added get_timetag function to parse 20 bit timestamp format used in ETA, Seaway and IMO messages.
  • Fixed missing break; in message 15 parsing
  • portable.h now checks for cygwin
  • Added missing wave_dir field in IMO message 1.11
  • Fixed bin2sixbit 1-off error
  • Improved example documentation (loop when adding packets)

v1.7 Changes were:
Fixed a bug with message 14, spare should have been 2 bits instead of 1 bit. It also fixes processing of message 6,8 and 17 binary messages. The previous method dropped bits if the data wasn't aligned on a 6-bit boundary.
The major addition to v1.7 was support for St. Lawrence Seaway and IMO binary messages. The 'C' and Python modules have full support for these new messages. The Visual Basic 6 DLL does not support them -- I have not been able to get VB6 to recognize the additions to the data structures.

v1.6 changes vdm_parse to allow any 3 characters before VDM and VDO
v1.5 fixes an uninitialized structure bug in the VB6 DLL code.
The parser also includes a Visual Basic compatible DLL with Type Library, example Visual Basic source and full source for the DLL. A generous user has also donated a Delphi port of the SDK (note that the Delphi code is unsupported).

Because of the additional effort needed to add St. Lawrence Seaway and IMO binary message support I have increased the prices slightly, effective immediately.

Features

  • AIS Messages 1-24(A/B)
  • Full source included
  • Written using portable 'C'
  • Only 3 core 'C' files to link to your project
  • Cross platform: runs on Windows, Linux, Mac and embedded systems
  • Small memory footprint, suitable for embedded systems
  • Static memory allocation, no malloc() were used in creating this product
  • Python 2.4 module included (added v1.1)
  • VB6 Compatible .DLL with example Visual Basic Source included (added v1.3) NOTE: Not Compatible with VB .NET 2005 and does not support Seaway or IMO binary messages.
  • Delphi (added v1.4) NOTE: No support for binary messages
  • Fast (tests run on a 1.83GHz Core Duo Mac Mini)
    • 395000 Message1 / sec.
    • 248000 Message5 / sec.
  • Inexpensive - $249 per project license fee
  • Unlimited licenses for $499
  • Support for St. Lawrence Seaway binary messages
  • Support for IMO binary messages

AIS Message Information

  • MMSI number (unique ship identifier)
  • Latitude and Longitude in 1/10000 of a minute
  • Course
  • Speed
  • Rate of Turn
  • Ship Name and Callsign
  • Destination and ETA
  • Size of Ship
  • Cargo Type
  • Draught
  • Much more...