From charlesreid1

Revision as of 00:16, 17 April 2017 by Admin (talk | contribs) (Created page with "==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-spe...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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:

NationalMapViewerFiles.png

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