Skip to main content
# mapturner

A command line utility for generating consolidated [TopoJSON](https://github.com/mbostock/topojson/wiki/Command-Line-Reference) from various data sources. Used for making fast vector maps with D3.

Important links:

* Repository: https://github.com/nprapps/mapturner
* Issues: https://github.com/nprapps/mapturner/issues

## Install

You will need to have the following non-Python dependencies installed:

* ogr2ogr (GDAL): `brew install ogr2ogr`
* topojson@1.6.27: (topojson 2+ does not work)

mapturner itself can be installed with pip:

```
pip install mapturner
```

Note: Since `mapturner` relies on topojson 1.x (old version of topojson), we recommend installing this version of topojson inside your project root folder by running:

```
npm install -g topojson@1.6.27 --prefix node_modules
```

To install topojson@1.6.27 globally instead run:

```
npm install -g topojson@1.6.27
```

`mapturner` will search first for the topojson binaries installed within the project and fallback to searching the topojson binary on your $PATH.


Developer install process:

```
git clone git://github.com/nprapps/mapturner.git
cd mapturner
mkvirtualenv mapturner

pip install -r requirements.txt

python setup.py develop
```

## Usage

Define a YAML configuration file, such as the following example. The complete list of valid options is further on in this documentation.

```
bbox: '77.25 24.28 91.45 31.5'
layers:
countries:
type: 'shp'
path: 'http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_admin_0_countries.zip'
id-property: 'NAME'
properties:
- 'country=NAME'

cities:
type: 'shp'
path: 'http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_populated_places_simple.zip'
id-property: 'name'
properties:
- 'featurecla'
- 'city=name'
where: adm0name = 'Nepal' AND scalerank < 8

quakes:
type: 'csv'
path: 'examples/nepal.csv'
all-properties: True
```

Then run it!

```
mapturner input.yaml output.json
```

The following layer types are currently supported:

* ESRI Shapefile (`shp`)
* GeoJSON or TopoJSON (`json`)
* CSV (`csv`)

## How it works

For each layer defined in the configuration file:

* If path is a URL the file will be downloaded and cached locally. (It will not be redownloaded on subsequent runs.)
* If path is to a zipped file it will be unzipped.
* All layers will be clipped to the specified bounding box (using ogr2ogr).
* For each layer, if a `where` attribute is specified, the layer data will be filtered by that clause.
* For each layer, all fields in the layer *not* specified in the `properties` array will be removed (to reduce file size), unless `all-properties` is specified, in which case all will be kept.
* For each layer, if an `id-property` is set, data from that property will be set as the identifier for the features in the layer.
* The layer will be converted to [TopoJSON](https://github.com/mbostock/topojson/wiki/Command-Line-Reference).

After each layer has been processed all of them will be concatenated into a single TopoJSON file. Each layer's key name will be used to identify it in the output.

## Complete list of configuration options

For all layer types:

* `type`: The type of layer. Valid types are `shp`, `json` (GeoJSON or TopoJSON), and `csv`. **(Required)**
* `path`: The path (relative or absolute) to the layer data file. **(Required)**
* `id-property`: A property from the data file to use as the unique identifier for features. See also, [the TopoJSON command-line documentation](https://github.com/mbostock/topojson/wiki/Command-Line-Reference).
* `properties`: A list of properties from the data to be kept in the output. All other properties are dropped.
* `all-properties`: If true, then all properties are kept for this layer.
* `where`: A SQL-like query predicate that will filter the feature data. This This uses exactly the same query syntax as [ogr2ogr](http://www.gdal.org/ogr2ogr.html).

CSV layers only:

* `latitude`: The name of a column in the data containing the latitude of the point/feature.
* `longitude`: The name of a column in the data containing the longitude of the point/feature.

## Cached data

Cached shapefiles are stored in `~/.mapturner`. You may wish to clear this folder periodically to free up space and ensure updated shapefiles are redownloaded.

Metadata

Release files for mapturner 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mapturner 0.2.1
File Size Uploaded
mapturner-0.2.1.tar.gz 6.9 kB Details

Release files / mapturner-0.2.1.tar.gz

Download URL mapturner-0.2.1.tar.gz
Size 6.9 kB
Tags Source
SHA-256 checksum
How to use checksums
65e0e8db129953987fe44b015fefd5c75a7350a41fd7119f0a0b624f94918080
BLAKE2b-256 checksum
How to use checksums
7e1c5efa20803f564b82b4a06d6500f447ed49d6fa3b4976162a15c060180119
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.2.1 This release

1 release file

0.1.4

1 release file

0.1.3

1 release file

0.1.2

1 release file

0.1.1

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page