I would like to read map files created by OCAD (.ocd). The file format specification is open and available on the web page, but it's binary and complex.
Is there an open source library that can be used for reading these .ocd files?
No, best I can tell the format has no open source parsers. The software itself does support exporting to AI and SVG files, which may be the best bet. Reverse engineering a format such as this is difficult, as it is an intermingling of symbols, raster and vector contents.
If you want migrate from OCAD on some free & open-source software then highly recommend you OpenOrienteering Mapper (OOMapper for short) - cartographic desktop publishing software for creating and printing maps (distributed with symbol sets for orienteering maps, but other symbol sets could be created in easy way directly in OOMapper).
OpenOrienteering Mapper's site - http://www.openorienteering.org/apps/mapper/
As advantage of migrating on OOMapper from OCAD:
At this point OpenOrienteering Mapper is free & open-source alternative to OCAD. So, if you already has some own created maps in
.ocd (OCAD) or
.dxf format you could easy open this map for editing in OOMapper too!
As of now, there is an OCAD viewer available from http://ocad.com/en/downloads/ocad-viewer This will allow you to open and view .ocd files.
OOM Open Orienteering Mapper can do it for you. https://github.com/OpenOrienteering/mapper/
We're looking for long answers that provide some explanation and context. Don't just give a one-line answer; explain why your answer is right, ideally with citations. Answers that don't include explanations may be removed.
This is a work in progress and not feature complete at the moment, but hopefully useful to you: