Shapefiles
From charlesreid1
Shapefiles (.shx, .shp, and .dbf bundle of files) are a data format for storing geospatial vector data. Shapefiles can describe vector features like points, lines, and polygons, and can add extra attributes to shapes.
The shapefile format stores everything as a vector feature, i.e., as a set of points. This means that any curvature is discretely represented, and resolution therefore relies on scale. (Compare this to other formats that use things like splines to maintain smooth curvature at arbitrary scales).
Converting Shapefiles to STL Files
Typically, GIS information comes as shapefiles, which are readable by GIS programs and libraries. However, if we want to do non-GIS-specific tasks with GIS information (like 3D Printing), we need to convert the Shapefile (GIS-specific) to an STL file (readable by CAD software).
I downloaded contour elevation data for the Seattle area, which was contained in a zip file called Elev_322166_Seattle_E_1X1.zip
.
Unzipping results in a pile of files of various formats:
The one I'll use there is the shapefile.
We'll use the shp2stl utility to convert the shapefile (GIS format) into an STL file (3D printing format).
Nice writeup/utility here: http://dougmccune.com/blog/2014/12/30/using-shp2stl-to-convert-maps-to-3d-models/
Download Node, and get npm. Use npm to install shp2stl utility:
$ npm update $ npm install shp2stl
Here is the javascript file that I used to convert this shapefile to a stl file:
$ cat stlify.js var fs = require('fs'); var shp2stl = require('shp2stl'); var file = 'Elev_Contour.shp'; shp2stl.shp2stl(file, { width: 100, //in STL arbitrary units, but typically 3D printers use mm height: 10, extraBaseHeight: 0, extrudeBy: "Pop_psmi", simplification: .8, binary: true, cutoutHoles: false, verbose: true, extrusionMode: 'straight' }, function(err, stl) { fs.writeFileSync('SeattleContours.stl', stl); } );
To run this, just pass it to node:
$ node stlify.js bounds: Infinity Infinity -Infinity -Infinity (spherical) pre-quantization: 111.195km (1.00°) 111.195km (1.00°) topology: 0 arcs, 0 points topojson done simplification: effective minimum area 0.00 simplification: retained 0 / 0 points (NaN%) making top planes making side planes making bottom planes done making 3D planes