[Gdal-dev] OGR: DXF driver

Frank Warmerdam warmerdam at pobox.com
Tue Oct 14 11:10:50 EDT 2008


Fodder wrote:
> Hi All,
> 
> I am also very keen for an OGR DXF/DWG driver that supports reading and
> writing. I imagine there would be many people that would take advantage of
> this capability.
> 
> I would also be willing to contribute financially if somebody wanted to take
> the project on board. I may not be able to fund the entire development, but
> perhaps there are others that might also contribute....

Folks,

I had a client request for a simple DXF read/write driver and prepared
the following proposal.  It might prove to be of interest to someone
interested in implementing DXF support.  Alternatively if someone wanted
to fund the work I would be prepared to do it under these terms.  I'd
prefer not to do the styling work if I could avoid it - or at least
leave it as a follow on effort.



	OGR DXF Read/Write Driver
	=========================


Purpose
-------

To implement a read/write OGR DXF driver.


Technical Notes
---------------

Generally speaking the implementation will be done on the basis of the
DXF 2000 specification from Autodesk.  Features of newer versions of DXF
will not generally be supported, though hopefully some newer DXF files
can be read if they use older styles of geometric objects.   The provided
sample files were for an older version of AutoCAD than DXF 2000 and should
be well supported.

  * At a minimum the following DXF geometry types should be supported for
    reading:

      LINE, POLYLINE, LWPOLYLINE, POINT, VERTEX, TEXT

  * The following geometric types will be supported for reading if suitable
    examples are available, and if the client indicates an interest:

      ARC, CIRCLE, 3DFACE, ELLIPSE, MLINE, SPLINE

  * There are no plans to implement the following geometric types:

      IMAGE, REGION, HATCH, OLE*, SHAPE, RAY, MTEXT, BODY, 3DSOLID, ATTRIB,
      DIMENSION, INSERT, LEADER, VIEWPORT, WIPEOUT

  * When reading and writing the Polyline flag "1" code will be used to
    mark and recognise POLYLINE objects that are actually rings of a polygon
    (as is generated by the shpdxf utility for instance).

  * In general the DXF writer will write point geometries as POINT,
    linestrings as POLYLINE and polygons as specially marked POLYLINEs.
    Features with collection geometries (MULTIPOLYGON, MULTILINE, MULTIPOINT,
    GEOMETRYCOLLECTION) will be written as if each component geometry was a
    feature.

  * For the most part section of the DXF file other than the ENTITIES section
    will be ignored, or written in a minimal form.

  * Each feature read will have a "LAYER" attribute.  All features in one DXF
    file will be treated as a single OGRLayer (named according to the basename
    of the dxf file).

  * When writing, the DXF LAYER name will be written from the corresponding
    feature attribute named LAYER - if that does not exist it will be
    written from the name associated with the OGRLayer.

  * There is no standard coordinate system definition approach for DXF,
    so the OGR DXF driver would not support reading or writing coordinate
    system definitions.


OGR Feature Styling
-------------------

As an optional item, an attempt will be made to capture feature styling
(line color, line width, text size and angle, etc) in the form defined by
the OGR Feature Style Specification:

   http://www.gdal.org/ogr/ogr_feature_style.html

This associates the feature styling with a feature in a special text
format.  These feature style strings are utilized by a few OGR client
applications to display features as originally intended.  Currently the
main applications honouring OGR feature style strings are MapServer and
OpenEV.  The other file formats supported in this manner are DGN and Mapinfo.

Feature styling would also be utilized to produced styled DXF entities
if available in the source features when writing to DXF.


Prototyping
-----------

The OGR DXF read/write driver being proposed here should be considered
to be a prototype or "limited use" DXF driver.  It will be tailored for the
requirements of the particular client, and will have many limitations.  If
a very general purpose DXF driver is desired, a second implementation phase
might be contemplated, and would operate based on the lessons learned during
implementation and use of this original driver.


Sample Data
-----------

During implementation a variety of sample data will be collected from the
internet.  It is also important that the client supply a variety of sample
datasets representative of the sorts of DXF files they desire to be able
to read.


Intellectual Property
---------------------

The resulting OGR DXF driver will be placed under the usual GDAL/OGR MIT/X
style open source license.  The copyright may be held by the client, or if
they do not wish this, by Frank Warmerdam.

The intention is to implement this component from scratch, and there
are no expected dependencies on external libraries like DIME, dxflib or
the Open Design Alliance libraries.


Pricing
-------

Basic Read/Write OGR DXF Driver: 2200 Euros

OGR Feature Styling: 1200 Euros


Timeline
--------

A preliminary driver would be delivered (in source form) within four weeks of
proposal acceptance.  A final driver (incorporating client feedback) would
be completed within two weeks of receiving client feedback.




-- 
---------------------------------------+--------------------------------------
I set the clouds in motion - turn up   | Frank Warmerdam, warmerdam at pobox.com
light and sound - activate the windows | http://pobox.com/~warmerdam
and watch the world go round - Rush    | Geospatial Programmer for Rent



More information about the gdal-dev mailing list