From OSGeo
Jump to navigation Jump to search

Implementation of ODA DWG files Specification, which will allow to read DWG as a newly supported file-format.

Idea for this project was taken from GDAL SoC Ideas.

Implementation details

Write a new library to read DWG files GitHub libopencad

  • Library should be written in an easy-to-extend style, so every DWG version can be handled easily.
  • Library should provide a clear API how to interact with it, and an easy method to write OGR Driver based on it.
  • Library should has an abstract data model for all DWG/DXF files of any version (so, DXF format also could be added to the library).

GDAL Driver

Implement a new DWG driver for OGR, which will work with libopencad.

Possible future extension (not necessarily part of SoC project)

  • Support for writing ability - creating CAD files is more complicated than reading, but with good library/driver architecture it will be possible without any painful refactoring.
  • Not all DWG format versions will be handled during GSoC, so working with them will also be a good extension.


  • May 28: Reading of DWG R15, basic documentation of libopencad
  • June 20: Implementation of OGR Driver for reading DWG R15.
  • July 8: OGR DWG Driver documentation and testing.
  • July 22: Implement DWG R13, R14, bug fixes and testing.
  • August 18: Completed documentation for libopencad and OGR DWG Driver, PR to GDAL Trunk.

What new functionality this project brings

  • A lot of GIS Applications are based on GDAL, so adding a new supported extension will give a capability to work with Autodesk DWG files, which is the most popular CAD format in the world[1].
  • There is no open-source library which is still maintained and is under X/MIT compatible license. libopencad will be under X/MIT license, so every application which is interested in DWG files can use it.

Student's Biography

My name is Alexandr Borzykh, I am second-year undergraduate student at ITMO University.

I am pretty new to OpenSource projects. I like C/C++ languages, have some experience with Python.