How to import 3D DGN into ArcGIS successfully?

6883
3
03-27-2012 03:14 PM
ChadStidham
New Contributor II
I've been searching for nearly a week on how to import 3D data from a DGN into ArcMap.  The DGN I have contains 3D polylines and 3D point features.  Has anyone found a foolproof way of getting this data into Arc?

I am using the CAD to Geodatabase tool as my first process. I have tried just importing the normal unaltered 3D DGN using this tool only to get a few Point features (they show up as Point Z) in the output Geodatabase, but not all of the points in the drawing.  For the ones that do, the CAD "Elevation" field is populated with 0.  I do not get any Polygon or Polyline feature classes. It is consistent that I cannot get any 3D features to come in this way. 

My next test was to export my DGN (from Microstation) to a 2D drawing while checking the option to "Preserve Z-Values."  All of these features come in fine in the Point, Polyline, and Polygon feature classes.  Unfortunately, none of the shape type fields indicate any of them containing Z-values.  Again, the CAD "Elevation" fields are all populated with 0.

My end goal is to get all of the point features out of this into a feature class and to create an "ELEVATION" field that will contain each Z-value.  This will then be appended to another table.  Having the 3D polyline features would be a plus, but as of now the only requirement I need is Z-values for the point features.

Am I missing something?  This seems like it should be something fairly simple or already supported via an out-of-the-box tool.  Is there a process in Microstation that I may benefit from?  I have considered exporting to a DWG if Arc handles them better.  Worse come to worse I may have to export to XYZ from AutoCAD and change it to a CSV and re-name the Z column to ELEVATION and pull it in that way.  I would just like to be proved wrong on this 🙂

Any help is greatly appreciated, thanks!
Tags (2)
0 Kudos
3 Replies
ChadStidham
New Contributor II
Today I tested with an exported DWG from MicroStation and that drawing came in great in ArcGIS.  All of the features came in as their respective Z shape types.  Everything also came in with the Elevation attribute populated (including polygons and polylines; is that just the first vertex populating the field?). 

I also credit this thread for helping me:
http://forums.arcgis.com/threads/51321-Model-error-Converting-CAD-to-FC?p=175387&posted=1#post175387

Hopefully this may help someone else!
0 Kudos
TiannaDulmage
New Contributor
Today I tested with an exported DWG from MicroStation and that drawing came in great in ArcGIS.  All of the features came in as their respective Z shape types.  Everything also came in with the Elevation attribute populated (including polygons and polylines; is that just the first vertex populating the field?). 

I also credit this thread for helping me:
http://forums.arcgis.com/threads/51321-Model-error-Converting-CAD-to-FC?p=175387&posted=1#post175387

Hopefully this may help someone else!


Thanks Chad,

I'm having a similar problem, where the imported Polylines (either *.dgn or *.dwg) just brought into ArcMap show the Z value only of the first vertex.    Do I have to convert all the lines to points, to get Z values at every vertices, does anyone know?

Essentially what I'm getting is a CAD line representing the ground level and top of each tree, which they're hoping I can then auto generate the height based on the length of the line.  However, the incoming polyline is the xy distance between the roots and the top of the tree, NOT the 3d distance between 2 z values.

Is there a good way to import a 3d line? Or do I have to go to points and then work with those?

Thanks,

-tianna.dulmage
0 Kudos
ChadStidham
New Contributor II
Thanks Chad,

I'm having a similar problem, where the imported Polylines (either *.dgn or *.dwg) just brought into ArcMap show the Z value only of the first vertex.    Do I have to convert all the lines to points, to get Z values at every vertices, does anyone know?

Essentially what I'm getting is a CAD line representing the ground level and top of each tree, which they're hoping I can then auto generate the height based on the length of the line.  However, the incoming polyline is the xy distance between the roots and the top of the tree, NOT the 3d distance between 2 z values.

Is there a good way to import a 3d line? Or do I have to go to points and then work with those?

Thanks,

-tianna.dulmage


Tianna,

If the lines are simply like you say they are (vertices representing the top and bottom) you could add a field to the attribute table and use a field calculation to get the difference between those Z-Values.  You would want to check and see if all of the lines are the same as in if the end vertices are all at the top of the tree or vice versa.

The following Python expressions that you can use in Field Calculator will give you the Z-values at the beginning and end vertices respectively as long as they are 3D Polylines / Polyline Z features which you can tell right away from the attribute table or by double-clicking the line in an edit session and opening the sketch properties tool.

!Shape!.firstPoint.Z
!Shape!.lastPoint.Z

Simply calculate the difference between those values and you'll have what you are looking for.  You could look up the Python absolute value function if you are unsure if each polyline was digitized in the same direction.

Hopefully that helps.  The elevation attribute is sort of useless on a 3D Polyline unless of course it's a contour which kind of defeats the purpose too.
0 Kudos