8

Does anyone know if it's possible to create a 3D dxf with OGR? I would like to assign the contour lines a Z value and then export them to dxf for some cad work.

PS. I know FME can do this, however I would like to try and find a free solution, and if possible do it in QGIS.

2
  • Autocad map3d does this easily.
    – Brad Nesom
    Commented Feb 7, 2011 at 14:43
  • 2
    Yeah but Autocad map isn't really free
    – Nathan W
    Commented Feb 7, 2011 at 22:13

4 Answers 4

9

Easier then I thought (thanks to BenjaminGolder for the tip):

ogr2ogr -f "DXF" Contours.dxf Contours.TAB -zfield Height

Contours.TAB is the input MapInfo tab file.

2
  • 1
    As far as I can tell this will work for contour lines, but not for true 3d-lines, which have a (x,y,z) coordinate for every point, and not one z value for every point of the line
    – johanvdw
    Commented Sep 28, 2011 at 14:12
  • I have been trying this in FWTools (2.4.7) without any luck. Has anyone had any luck? I am not sure if I am missing something in my GDAL? Commented Jul 5, 2012 at 12:25
3

For the sake of completeness.

I believe this should be a comment on Regan response. But since I don't have enough reputation I'll leave it as a response.

The DXF writer supports 2.5D layers, and given a line input, should output a 3D linestring on dxf.

In the case of input POLYGONS you have to be more careful, since the driver defaults to generate a dxf HATCH with a Polyline. And by format specification, that line does not support Z coordinates, only X,Y.

If you input polygons, ogr can export dxf with 3D linestrings representing those polygons. For that you need to set up the config option DXF_WRITE_HATCH to NO.

//Bash
export DXF_WRITE_HATCH=NO
ogr2ogr -f "DXF" Contours.dxf Contours.TAB

//Windows
set NEWVAR=SOMETHING
ogr2ogr -f "DXF" Contours.dxf Contours.TAB

As far as I am aware this is not documented nor explained anywhere, it was added on revision 24991

1

I've never tried it, but it should be possible. The source code for the DXF driver writes Z values to dxf if the geometry is 2.5D, which (according to the source for the shapefile reader) is what you will have if the input shape has Z values.

4
  • That sounds good. Next question, how do you create a shapefile with Z values. Say I have a column called Height, is there a easy way to make this the Z value.
    – Nathan W
    Commented Feb 9, 2011 at 0:08
  • Provided the shapefile is Z-aware, with ArcGIS, you can use a code block in the field calculator. I don't know how you would do it in Qgis. Commented Feb 9, 2011 at 0:46
  • 1
    in the ogr2ogr documentation, it appears that you can create a 3d shapefile using the -zfield argument and then specifying a field name that holds z values. gdal.org/ogr2ogr.html Commented Mar 25, 2011 at 1:20
  • @BenjaminGolder That sounds good. I will give it a go.
    – Nathan W
    Commented Apr 14, 2011 at 7:14
1

Did you try in GRASS the v.out.dxf command? http://grass.osgeo.org/grass64/manuals/html64_user/v.out.dxf.html

1
  • I haven't tried it yet, I will give it a go. I was hoping for a QGIS option also but I could make a script to automate it in GRASS to make it easier to do.
    – Nathan W
    Commented Feb 9, 2011 at 0:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.