# Microstation DGN

Microstation DGN files from Microstation versions predating version 8.0 are supported for reading (a DGNv8 driver, using Teigha libraries, is available to read and write DGN v8 files). The entire file is represented as one layer (named "elements").

DGN files are considered to have no georeferencing information through OGR. Features will all have the following generic attributes:

- Type: The integer type code as listed below in supported elements.
- Level: The DGN level number (0-63).
- GraphicGroup: The graphic group number.
- ColorIndex: The color index from the dgn palette.
- Weight: The drawing weight (thickness) for the element.
- Style: The style value for the element.

DGN files do not contain spatial indexes; however, the DGN driver does take advantage of the extents information at the beginning of each element to minimize processing of elements outside the current spatial filter window when in effect.

## Supported Elements

The following element types are supported:

- Line (3): Line geometry.
- Line String (4): Multi segment line geometry.
- Shape (6): Polygon geometry.
- Curve (11): Approximated as a line geometry.
- B-Spline (21): Treated (inaccurately) as a line geometry.
- Arc (16): Approximated as a line geometry.
- Ellipse (15): Approximated as a line geometry.
- Text (17): Treated as a point geometry.

Generally speaking any concept of complex objects, and cells as associated components is lost. Each component of a complex object or cell is treated as a independent feature.

## Styling Information

Some drawing information about features can be extracted from the ColorIndex, Weight and Style generic attributes; however, for all features an OGR style string has been prepared with the values encoded in ready-to-use form for applications supporting OGR style strings.

The various kinds of linear geometries will carry style information indicating the color, thickness and line style (i.e. dotted, solid, etc).

Polygons (Shape elements) will carry styling information for the edge as well as a fill color if provided. Fill patterns are not supported.

Text elements will contain the text, angle, color and size information (expressed in ground units) in the style string.

## Creation Issues

2D DGN files may be written with OGR with significant limitations:

- Output features have the usual fixed DGN attributes. Attempts to create any other fields will fail.

- Virtual no effort is currently made to translate OGR feature style strings back into DGN representation information.

- POINT geometries that are not text (Text is NULL, and the feature style string is not a LABEL) will be translated as a degenerate (0 length) line element.

- Polygon, and multipolygon objects will be translated to simple polygons with all rings other than the first discarded.

- Polygons and line strings with too many vertices will be split into a group of elements prefixed with a Complex Shape Header or Complex Chain Header element as appropriate.

- A seed file must be provided (or if not provided, $PREFIX/share/gdal/seed_2d.dgn will be used). Many aspects of the resulting DGN file are determined by the seed file, and cannot be affected via OGR, such as initial view window.

- The various collection geometries other than MultiPolygon are completely discarded at this time.

- Geometries which fall outside the "design plane" of the seed file will be discarded, or corrupted in unpredictable ways.

- DGN files can only have one layer. Attempts to create more than one layer in a DGN file will fail.

The dataset creation supports the following options:

- 3D=YES or NO: Determine whether 2D (seed_2d.dgn) or 3D (seed_3d.dgn) seed file should be used. This option is ignored if the SEED option is provided.

- SEED=filename: Override the seed file to use.

- COPY_WHOLE_SEED_FILE=YES/NO: Indicate whether the whole seed file should be copied. If not, only the first three elements (and potentially the color table) will be copied. Default is NO.

- COPY_SEED_FILE_COLOR_TABLE=YES/NO: Indicates whether the color table should be copied from the seed file. By default this is NO.

- MASTER_UNIT_NAME=name: Override the master unit name from the seed file with the provided one or two character unit name.

- SUB_UNIT_NAME=name: Override the sub unit name from the seed file with the provided one or two character unit name.

- SUB_UNITS_PER_MASTER_UNIT=count: Override the number of subunits per master unit. By default the seed file value is used.

- UOR_PER_SUB_UNIT=count: Override the number of UORs (Units of Resolution) per sub unit. By default the seed file value is used.

- ORIGIN=x,y,z: Override the origin of the design plane. By default the origin from the seed file is used.

- Dgnlib Page
- OGR Feature Style Specification
- DGNv8 driver (using Teigha libraries)