Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

I need to find and easy and affordable way to generate 3D linear shapefiles in Windows so one of our users can inspect our tool. We incorrectly assumed that he had 3D shapefile source data available or had a way to produce it.

I found an ArcGIS Technical Article on how to convert a 2D shapefile to a 3D shapefile; however, it requires ArcGIS with 3D Analyst. I have ArcGIS available but do not have a 3D Analyst license, so I cannot replicate the steps from the article. The user also has ArcGIS available but I do not know if he has a 3D Analyst license. Regardless, I would like to test the process before sending him the article.

I have previously created 3D shapefiles using the OGR/GDAL C++ API and the OGR/GDAL Python API included in FWTools and OSGeo4W. I considered writing a simple program or Python script that can parse an input text file. The Python solution would require the user to install a Python runtime with GDAL support, so I am hesitant to take that approach.

MapWindow 4.7.5 has a 3D vector to 2D vector option in the GIS Tools | Vector menu, but not the other way around. I just checked and MapWindow is at version 4.8.3, but could not find any reference to 3D shapefiles or vector features in its online documentation.

Is there a Windows GIS editor (besides ArcGIS with 3D Analyst) that supports the creation of 3D shapefiles?

share|improve this question
2  
Autocad Map 3d is easy but not cheap. It will create 3d shapefiles. –  Brad Nesom Aug 31 '11 at 16:12
add comment

2 Answers 2

up vote 5 down vote accepted

Using ArcCatalog (or the ArcCatalog toolbox from ArcMap), create a new shapefile and check 'Coordinates will contain Z values.'. Set the spatial reference, including the vertical SR. In ArcMap, start an edit session, create a feature (doesn't matter if its point/line/polygon). Once the feature is created, select it (still in an edit session) and click 'Sketch Properties' on the Edit Toolbar. You'll see all vertices for the selected feature, and you'll be able to edit X/Y/Z/M values using the table of vertices. This method only requires an ArcView license, and does not require Editor/Analyst licenses.

share|improve this answer
    
This is similar to the OGR/GDAL solution except that it uses the ArcObjects Java SDK. I know how to solve this problem with code but wanted to see if there was an existing solution in a GIS editor. It would be nice to be able to set the 3D coordinates of a vertex through a UI. –  Jaime Soto Aug 31 '11 at 15:53
2  
You can set the Z value of a 3d coordinate through ArcMap when you are in an edit session. Start an edit session, select the feature you want to set the coordinates for, and then go to Sketch Properties. Sketch Properties will list all vertices and will allow you to set X/Y/Z/M values directly. It does not let you convert 2D -> 3D Shapefile though, which is what the original question implied. You can create the Shapefile using ArcCatalog directly, or using the Catalog toolbox in ArcMap. –  Sasa Ivetic Aug 31 '11 at 16:09
    
I just verified that you can edit an existing 3D shapefile with the method you described. I also verified that you can create a 3D shapefile through ArcCatalog. Please make this comment an answer so I can mark it as the accepted answer. –  Jaime Soto Aug 31 '11 at 16:39
    
@Jaime: I've changed the answer to reflect creating 3D Shapefiles using ArcGIS Desktop. –  Sasa Ivetic Aug 31 '11 at 16:44
add comment

I'm not aware of an editor supporting this, but if you have to program something I would use shapelib instead of using python/GDAL/...

http://shapelib.maptools.org/

The api is straightforward [1], and if you statically link the library it would require only one .exe file for making the conversion.

[1] http://shapelib.maptools.org/shp_api.html

share|improve this answer
    
You're correct, using shapelib is a much simpler solution than GDAL/OGR if I have to code something up. –  Jaime Soto Aug 31 '11 at 15:56
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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