Mapshaper is software for editing Shapefile, GeoJSON, TopoJSON, CSV and several other data formats, written in JavaScript.
The mapshaper
command line program supports essential map making tasks like simplifying shapes, editing attribute data, clipping, erasing, dissolving, filtering and more.
The web UI supports interactive simplification, attribute data editing, and running cli commands in a built-in console. Visit the public website at www.mapshaper.org or use the web UI locally via the mapshaper-gui
script.
See the project wiki for more documentation on how to use mapshaper.
To suggest improvements, add an issue.
To learn about recent updates, read the changelog.
The mapshaper
command line program has been used successfully under Mac OS X, Linux and Windows.
The project wiki has an introduction to using the command line tool that includes many simple examples.
For a detailed reference, see the Command Reference.
The web UI works in recent desktop versions of Chrome, Firefox, Safari and Internet Explorer. Safari before v10.1 and IE before v10 are not supported.
The mapshaper distribution includes the script mapshaper-gui
, which runs mapshaper's web interface locally. You can also visit mapshaper.org to use mapshaper online.
All processing is done in the browser, so your data stays private, even when using the public website.
Web interface
Firefox is able to load Shapefiles and GeoJSON files larger than 1GB. Chrome has improved in recent versions, but is still prone to out-of-memory errors when importing files larger than several hundred megabytes.
Command line interface
When working with very large files, mapshaper may become unresponsive or crash with the message "JavaScript heap out of memory."
One option is to run mapshaper-xl
(added in v0.4.63), which allocates more memory than the standard mapshaper
program.
Another solution is to run Node directly with the --max-old-space-size
option. The following example (Mac or Linux) allocates 8GB of memory:
$ node --max-old-space-size=8192 `which mapshaper` <mapshaper commands>
Mapshaper requires Node.js.
With Node installed, you can install the latest release version of mapshaper using npm. Install with the "-g" flag to make the executable scripts available systemwide.
npm install -g mapshaper
To install and run the latest development code from github:
git clone [email protected]:mbloch/mapshaper.git
cd mapshaper
npm install
bin/mapshaper # run the command line program
bin/mapshaper-gui # use the web UI locally
Run the build
script to build both the cli and web UI modules.
Run npm test
in the project directory to run mapshaper's tests.
This software is licensed under MPL 2.0.
According to Mozilla's FAQ, "The MPL's ‘file-level’ copyleft is designed to encourage contributors to share modifications they make to your code, while still allowing them to combine your code with code under other licenses (open or proprietary) with minimal restrictions."
My colleagues at The New York Times, for countless suggestions, bug reports and general helpfulness.
Mark Harrower, for collaborating on the original "MapShaper" program at the University of Wisconsin–Madison.