DGNLib: a Microstation DGN (ISFF) Reader

I (Frank Warmerdam)
have implemented a Microstation DGN reading library on contract to
Avenza Systems Inc., makers of
MAPublisher. The library will be OpenSource (under my usual X/MIT license),
portable and callable from C/C++. While it has been incorporated into my
OGR Simple Features library, it is
also be usable standalone with minimal overhead. The dgnlib library, and this
page of DGN related information are primarily hosted at
http://dgnlib.maptools.org.

No, but it does support most 2D and 3D elements. Some of the more esoteric
elements are read in "raw data mode", but not interpreted. It does support
lines, line strings, curves, bsplines, ellipses,
arcs, and text elements, as well as extracting color tables, and master
coordinate information.

Does DGNLib support Microstation V8 DGN Files?

No, they are a substantially different format, and are not recognised at
all. The DGNdirect library from the OpenDWG
Alliance does support DGN v8.

Is it portable?

Yes, fairly, though as distributed it may be necessary to tweak the
cpl_port.h and cpl_config.h files for different platforms. It was developed
on Linux for a client deploying on MacOS, and Windows.

Does it require alot of memory?

Generally speaking no. Only one element at a time is kept in memory. If
the file is "indexed" an additional 12 bytes per element is kept in memory
after a pre-scan, but this isn't required.

Does DGNLib include code to draw DGN elements?

No, but there is a document that tries to
indicate how to properly draw DGN elements given the structures returned by
DGNLib. The OGR layer re-interprets the drawing information into
OGR Feature Style
format which is understood by some applications such as
UMN MapServer.

What is the license?

DGNLib is under my usual MIT/X style open source license. Thus is can be
easily used in commercial, and free products with no concern about licensing
issues. See the header of any source file for the full license text.

Is there support for writing DGN files?

Yes, there is preliminary support for writing 2D and 3D DGN files in
recent releases.

Is there documentation?

There is a detailed DGN Library API Reference
available. There is currently no tutorial style information on how to
use the library, but the dgndump.c utility can serve as a limited example.

Is further work going on to improve the library?

The initial project is complete, but I am interested in fixing
bugs and adding minor features. Improvements are welcome.

The dgnlib@yahoogroups.com mailing list is for discussion of general DGN issues as well as dgnlib in
particular. The group includes an email archive and can be subscribed from the following subscribe box.
Please confirm your interest with me
by email if you are using a relatively anonymous email service so I can
verify you aren't a spammer.

Subscribe to dgnlib

Other DGN Viewers/Libraries

DGNdirect is a library from the
Open Design Alliance that supports reading (and to some extent) writing DGN
v8 files. It also supports reading DGN v7 files. The Open Design Alliance
offers it under quite reasonable (but not Open Source) licensing terms.

Bentley itself offers DGN libraries, and tools as part of their
OpenDGN program.

GraphStore has a product called
eCADLite that can be used in demo mode as a DGN viewer.