Provided by: tippecanoe_2.49.0-1build1_amd64 bug

Intent

       The goal of Tippecanoe is to enable making a scale-independent view of your data, so  that
       at  any  level  from  the  entire  world to a single building, you can see the density and
       texture of the data rather than a  simplification  from  dropping  supposedly  unimportant
       features or clustering or aggregating them.

       If  you  give it all of OpenStreetMap and zoom out, it should give you back something that
       looks like "All Streets ⟨http://benfry.com/allstreets/map5.html⟩"  rather  than  something
       that looks like an Interstate road atlas.

       If  you  give  it  all the building footprints in Los Angeles and zoom out far enough that
       most individual buildings are no longer discernable, you should still be able to  see  the
       extent  and  variety  of  development in every neighborhood, not just the largest downtown
       buildings.

       If you give it a collection of years of tweet locations, you should be  able  to  see  the
       shape  and  relative  popularity  of  every point of interest and every significant travel
       corridor.

Installation

       The easiest way to install tippecanoe on OSX is with Homebrew ⟨http://brew.sh/⟩:

              $ brew install tippecanoe

       On Ubuntu it will usually be easiest to build from the source repository:

              $ git clone https://github.com/felt/tippecanoe.git
              $ cd tippecanoe
              $ make -j
              $ make install

       See Development ⟨#development⟩ below for how to  upgrade  your  C++  compiler  or  install
       prerequisite packages if you get compiler errors.

Usage

              $ tippecanoe -o file.mbtiles [options] [file.json file.json.gz file.fgb ...]

       If  no  files  are specified, it reads GeoJSON from the standard input.  If multiple files
       are specified, each is placed in its own layer ⟨#input-files-and-layer-names⟩.

       The GeoJSON features need not be wrapped in  a  FeatureCollection.   You  can  concatenate
       multiple GeoJSON features or files together, and it will parse out the features and ignore
       whatever other objects it encounters.

Try this first

       If you aren't sure what options to use, try this:

              $ tippecanoe -zg -o out.mbtiles --drop-densest-as-needed in.geojson

       The -zg option will make Tippecanoe choose a maximum zoom level that should be high enough
       to  reflect  the  precision  of  the  original  data.  (If it turns out still not to be as
       detailed as you want, use -z manually with a higher number.)

       If the tiles come out too big, the --drop-densest-as-needed option  will  make  Tippecanoe
       try  dropping  what should be the least visible features at each zoom level.  (If it drops
       too many features, use -x to leave out some feature  attributes  that  you  didn't  really
       need.)

Examples

       Create  a tileset of TIGER roads for Alameda County, to zoom level 13, with a custom layer
       name and description:

              $ tippecanoe -o alameda.mbtiles -l alameda -n "Alameda County from TIGER" -z13 tl_2014_06001_roads.json

       Create a tileset of all TIGER roads, at only zoom level 12, but with  higher  detail  than
       normal,  with  a custom layer name and description, and leaving out the LINEARID and RTTYP
       attributes:

              $ cat tiger/tl_2014_*_roads.json | tippecanoe -o tiger.mbtiles -l roads -n "All TIGER roads, one zoom" -z12 -Z12 -d14 -x LINEARID -x RTTYP

Cookbook

   Linear features (world railroads), visible at all zoom levels
              curl -L -O https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_railroads.zip
              unzip ne_10m_railroads.zip
              ogr2ogr -f GeoJSON ne_10m_railroads.geojson ne_10m_railroads.shp

              tippecanoe -zg -o ne_10m_railroads.mbtiles --drop-densest-as-needed --extend-zooms-if-still-dropping ne_10m_railroads.geojson

              • -zg: Automatically  choose  a  maxzoom  that  should  be  sufficient  to  clearly
                distinguish the features and the detail within each feature

              • --drop-densest-as-needed:  If  the tiles are too big at low zoom levels, drop the
                least-visible features to allow tiles to be  created  with  those  features  that
                remain

              • --extend-zooms-if-still-dropping:  If  even the tiles at high zoom levels are too
                big, keep adding zoom levels until one is reached  that  can  represent  all  the
                features

   Discontinuous polygon features (buildings of Rhode Island), visible at all zoom levels
              curl -L -O https://usbuildingdata.blob.core.windows.net/usbuildings-v1-1/RhodeIsland.zip
              unzip RhodeIsland.zip

              tippecanoe -zg -o RhodeIsland.mbtiles --drop-densest-as-needed --extend-zooms-if-still-dropping RhodeIsland.geojson

              • -zg:  Automatically  choose  a  maxzoom  that  should  be  sufficient  to clearly
                distinguish the features and the detail within each feature

              • --drop-densest-as-needed: If the tiles are too big at low or medium zoom  levels,
                drop  the least-visible features to allow tiles to be created with those features
                that remain

              • --extend-zooms-if-still-dropping: If even the tiles at high zoom levels  are  too
                big,  keep  adding  zoom  levels  until one is reached that can represent all the
                features

   Continuous polygon features (states and provinces), visible at all zoom levels
              curl -L -O https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_admin_1_states_provinces.zip
              unzip -o ne_10m_admin_1_states_provinces.zip
              ogr2ogr -f GeoJSON ne_10m_admin_1_states_provinces.geojson ne_10m_admin_1_states_provinces.shp

              tippecanoe -zg -o ne_10m_admin_1_states_provinces.mbtiles --coalesce-densest-as-needed --extend-zooms-if-still-dropping ne_10m_admin_1_states_provinces.geojson

              • -zg: Automatically  choose  a  maxzoom  that  should  be  sufficient  to  clearly
                distinguish the features and the detail within each feature

              • --coalesce-densest-as-needed:  If  the  tiles  are  too big at low or medium zoom
                levels, merge as many features together as are necessary to  allow  tiles  to  be
                created with those features that are still distinguished

              • --extend-zooms-if-still-dropping:  If  even the tiles at high zoom levels are too
                big, keep adding zoom levels until one is reached  that  can  represent  all  the
                features

   Large point dataset (GPS bus locations), for visualization at all zoom levels
              curl -L -O ftp://avl-data.sfmta.com/avl_data/avl_raw/sfmtaAVLRawData01012013.csv
              sed 's/PREDICTABLE.*/PREDICTABLE/' sfmtaAVLRawData01012013.csv > sfmta.csv
              tippecanoe -zg -o sfmta.mbtiles --drop-densest-as-needed --extend-zooms-if-still-dropping sfmta.csv

       (The  sed  line  is  to  clean  the corrupt CSV header, which contains the wrong number of
       fields.)

              • -zg: Automatically  choose  a  maxzoom  that  should  be  sufficient  to  clearly
                distinguish the features and the detail within each feature

              • --drop-densest-as-needed:  If the tiles are too big at low or medium zoom levels,
                drop the least-visible features to allow tiles to be created with those  features
                that remain

              • --extend-zooms-if-still-dropping:  If  even the tiles at high zoom levels are too
                big, keep adding zoom levels until one is reached  that  can  represent  all  the
                features

   Clustered points (world cities), summing the clustered population, visible at all zoom levels
              curl -L -O https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_populated_places.zip
              unzip -o ne_10m_populated_places.zip
              ogr2ogr -f GeoJSON ne_10m_populated_places.geojson ne_10m_populated_places.shp

              tippecanoe -zg -o ne_10m_populated_places.mbtiles -r1 --cluster-distance=10 --accumulate-attribute=POP_MAX:sum ne_10m_populated_places.geojson

              • -zg:  Automatically  choose  a  maxzoom  that  should  be  sufficient  to clearly
                distinguish the features and the detail within each feature

              • -r1: Do not automatically drop a fraction of points at  low  zoom  levels,  since
                clustering will be used instead

              • --cluster-distance=10:  Cluster  together  features that are closer than about 10
                pixels from each other

              • --accumulate-attribute=POP_MAX:sum: Sum the  POP_MAX  (population)  attribute  in
                features  that are clustered together. Other attributes will be arbitrarily taken
                from the first feature in the cluster.

   Show countries at low zoom levels but states at higher zoom levels
              curl -L -O https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_admin_0_countries.zip
              unzip ne_10m_admin_0_countries.zip
              ogr2ogr -f GeoJSON ne_10m_admin_0_countries.geojson ne_10m_admin_0_countries.shp

              curl -L -O https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_admin_1_states_provinces.zip
              unzip -o ne_10m_admin_1_states_provinces.zip
              ogr2ogr -f GeoJSON ne_10m_admin_1_states_provinces.geojson ne_10m_admin_1_states_provinces.shp

              tippecanoe -z3 -o countries-z3.mbtiles --coalesce-densest-as-needed ne_10m_admin_0_countries.geojson
              tippecanoe -zg -Z4 -o states-Z4.mbtiles --coalesce-densest-as-needed --extend-zooms-if-still-dropping ne_10m_admin_1_states_provinces.geojson
              tile-join -o states-countries.mbtiles countries-z3.mbtiles states-Z4.mbtiles

       Countries:

              • -z3: Only generate zoom levels 0 through 3

              • --coalesce-densest-as-needed: If the tiles are too big  at  low  or  medium  zoom
                levels,  merge  as  many  features together as are necessary to allow tiles to be
                created with those features that are still distinguished

       States and Provinces:

              • -Z4: Only generate zoom levels 4 and beyond

              • -zg: Automatically  choose  a  maxzoom  that  should  be  sufficient  to  clearly
                distinguish the features and the detail within each feature

              • --coalesce-densest-as-needed:  If  the  tiles  are  too big at low or medium zoom
                levels, merge as many features together as are necessary to  allow  tiles  to  be
                created with those features that are still distinguished

              • --extend-zooms-if-still-dropping:  If  even the tiles at high zoom levels are too
                big, keep adding zoom levels until one is reached  that  can  represent  all  the
                features

   Represent multiple sources (Illinois and Indiana counties) as separate layers
              curl -L -O https://www2.census.gov/geo/tiger/TIGER2010/COUNTY/2010/tl_2010_17_county10.zip
              unzip tl_2010_17_county10.zip
              ogr2ogr -f GeoJSON tl_2010_17_county10.geojson tl_2010_17_county10.shp

              curl -L -O https://www2.census.gov/geo/tiger/TIGER2010/COUNTY/2010/tl_2010_18_county10.zip
              unzip tl_2010_18_county10.zip
              ogr2ogr -f GeoJSON tl_2010_18_county10.geojson tl_2010_18_county10.shp

              tippecanoe -zg -o counties-separate.mbtiles --coalesce-densest-as-needed --extend-zooms-if-still-dropping tl_2010_17_county10.geojson tl_2010_18_county10.geojson

              • -zg:  Automatically  choose  a  maxzoom  that  should  be  sufficient  to clearly
                distinguish the features and the detail within each feature

              • --coalesce-densest-as-needed: If the tiles are too big  at  low  or  medium  zoom
                levels,  merge  as  many  features together as are necessary to allow tiles to be
                created with those features that are still distinguished

              • --extend-zooms-if-still-dropping: If even the tiles at high zoom levels  are  too
                big,  keep  adding  zoom  levels  until one is reached that can represent all the
                features

   Merge multiple sources (Illinois and Indiana counties) into the same layer
              curl -L -O https://www2.census.gov/geo/tiger/TIGER2010/COUNTY/2010/tl_2010_17_county10.zip
              unzip tl_2010_17_county10.zip
              ogr2ogr -f GeoJSON tl_2010_17_county10.geojson tl_2010_17_county10.shp

              curl -L -O https://www2.census.gov/geo/tiger/TIGER2010/COUNTY/2010/tl_2010_18_county10.zip
              unzip tl_2010_18_county10.zip
              ogr2ogr -f GeoJSON tl_2010_18_county10.geojson tl_2010_18_county10.shp

              tippecanoe -zg -o counties-merged.mbtiles -l counties --coalesce-densest-as-needed --extend-zooms-if-still-dropping tl_2010_17_county10.geojson tl_2010_18_county10.geojson

       As above, but

              • -l counties: Specify the layer name instead of letting it  be  derived  from  the
                source file names

   Selectively remove and replace features (Census tracts) to update a tileset
              # Retrieve and tile California 2000 Census tracts
              curl -L -O https://www2.census.gov/geo/tiger/TIGER2010/TRACT/2000/tl_2010_06_tract00.zip
              unzip tl_2010_06_tract00.zip
              ogr2ogr -f GeoJSON tl_2010_06_tract00.shp.json tl_2010_06_tract00.shp
              tippecanoe -z11 -o tracts.mbtiles -l tracts tl_2010_06_tract00.shp.json

              # Create a copy of the tileset, minus Alameda County (FIPS code 001)
              tile-join -j '{"*":["none",["==","COUNTYFP00","001"]]}' -f -o tracts-filtered.mbtiles tracts.mbtiles

              # Retrieve and tile Alameda County Census tracts for 2010
              curl -L -O https://www2.census.gov/geo/tiger/TIGER2010/TRACT/2010/tl_2010_06001_tract10.zip
              unzip tl_2010_06001_tract10.zip
              ogr2ogr -f GeoJSON tl_2010_06001_tract10.shp.json tl_2010_06001_tract10.shp
              tippecanoe -z11 -o tracts-added.mbtiles -l tracts tl_2010_06001_tract10.shp.json

              # Merge the filtered tileset and the tileset of new tracts into a final tileset
              tile-join -o tracts-final.mbtiles tracts-filtered.mbtiles tracts-added.mbtiles

       The  -z11  option  explicitly  specifies  the  maxzoom,  to make sure both the old and new
       tilesets have the same zoom range.

       The -j option to tile-join specifies a filter, so that only the desired features  will  be
       copied to the new tileset.  This filter excludes (using none) any features whose FIPS code
       (COUNTYFP00) is the code for Alameda County (001).

Options

       There are a lot of options. A lot of the time you won't want to use any of them other than
       -o output.mbtiles to name the output file, and probably -f to delete the file that already
       exists with that name.

       If you aren't sure what the right maxzoom is for your data, -zg will  guess  one  for  you
       based on the density of features.

       Tippecanoe  will normally drop a fraction of point features at zooms below the maxzoom, to
       keep the low-zoom tiles from getting too big. If you have a smaller data set where all the
       points  would  fit without dropping any of them, use -r1 to keep them all.  If you do want
       point dropping, but you still want the tiles to be denser than -zg thinks they should  be,
       use -B to set a basezoom lower than the maxzoom.

       If  some  of  your  tiles  are coming out too big in spite of the settings above, you will
       often want to use --drop-densest-as-needed to drop whatever fraction of  the  features  is
       necessary at each zoom level to make that zoom level's tiles work.

       If your features have a lot of attributes, use -y to keep only the ones you really need.

       If  your  input  is formatted as newline-delimited GeoJSON, use -P to make input parsing a
       lot faster.

   Output tileset-o file.mbtiles, file.pmtiles or --output=file.mbtiles: Name the output file.

              • -e directory or --output-to-directory=directory: Write  tiles  to  the  specified
                directory instead of to an mbtiles file.

              • -f  or --force: Delete the mbtiles file if it already exists instead of giving an
                error

              • -F or --allow-existing: Proceed (without deleting existing data) if the  metadata
                or  tiles  table  already exists or if metadata fields can't be set. You probably
                don't want to use this.

   Tileset description and attribution-n name or --name=name: Human-readable name for the tileset (default file.json)

              • -A text or --attribution=text: Attribution (HTML) to be shown with maps that  use
                data from this tileset.

              • -N description or --description=description: Description for the tileset (default
                file.mbtiles)

   Input files and layer namesname.json or name.geojson: Read the named GeoJSON input file into a layer  called
                name.

              • name.json.gz or name.geojson.gz: Read the named gzipped GeoJSON input file into a
                layer called name.

              • name.fgb: Read the named FlatGeobuf input file into a layer called name.

              • name.csv: Read the named CSV input file into a layer called name.

              • -l name or --layer=name: Use the specified layer name instead of deriving a  name
                from  the  input  filename  or  output tileset. If there are multiple input files
                specified, the files are all merged into the single named layer, even if they try
                to specify individual names with -L.

              • -L  name:file.json  or  --named-layer=name:file.json:  Specify  layer  names  for
                individual files. If your shell supports it, you can use a subshell redirect like
                -L  name:<(cat  dir/*.json)  to  specify  a layer name for the output of streamed
                input.

              • -L{layer-json} or --named-layer={layer-json}: Specify an  input  file  and  layer
                options  by  a  JSON object. The JSON object must contain a "file" key to specify
                the filename to read from. (If the "file" key is an empty  string,  it  means  to
                read  from  the  standard  input  stream.) It may also contain a "layer" field to
                specify the name of the layer,  and/or  a  "description"  field  to  specify  the
                layer's  description  in the tileset metadata, and/or a "format" field to specify
                csv or fgb file format if it is not obvious from the name. Example:

              tippecanoe -z5 -o world.mbtiles -L'{"file":"ne_10m_admin_0_countries.json", "layer":"countries", "description":"Natural Earth countries"}'

       CSV input files currently support only Point  geometries,  from  columns  named  latitude,
       longitude, lat, lon, long, lng, x, or y.

   Parallel processing of input-P  or  --read-parallel:  Use  multiple  threads  to read different parts of each
                GeoJSON input file at once.  This will only work if the input  is  line-delimited
                JSON with each Feature on its own line, because it knows nothing of the top-level
                structure  around  the  Features.  Spurious  "EOF"  error  messages  may   result
                otherwise.   Performance  will be better if the input is a named file that can be
                mapped into memory rather than a stream that can only be read sequentially.

       If the input file begins with the RFC  8142  ⟨https://tools.ietf.org/html/rfc8142⟩  record
       separator, parallel processing of input will be invoked automatically, splitting at record
       separators rather than at all newlines.

       Parallel processing will also be automatic if the input file is in FlatGeobuf format.

   Projection of input-s projection or --projection=projection: Specify the  projection  of  the  input
                data.  Currently  supported are EPSG:4326 (WGS84, the default) and EPSG:3857 (Web
                Mercator). In general you should use  WGS84  for  your  input  files  if  at  all
                possible.

   Zoom levels-z  zoom  or --maximum-zoom=zoom: Maxzoom: the highest zoom level for which tiles
                are generated (default 14)

              • -zg or --maximum-zoom=g: Guess what is probably a reasonable maxzoom based on the
                spacing of features.

              • --smallest-maximum-zoom-guess=zoom:  Guess  what is probably a reasonable maxzoom
                based on the spacing of features, but using the specified zoom if a lower maxzoom
                is guessed. If -Bg is also set, the base zoom will be set to the guessed maxzoom,
                with all the points  carried  forward  into  additional  zooms  through  the  one
                specified.

              • -Z  zoom  or  --minimum-zoom=zoom: Minzoom: the lowest zoom level for which tiles
                are generated (default 0)

              • -ae or --extend-zooms-if-still-dropping: Increase the  maxzoom  if  features  are
                still  being  dropped  at that zoom level.  The detail and simplification options
                that ordinarily apply only to the maximum zoom  level  will  apply  both  to  the
                originally specified maximum zoom and to any levels added beyond that.

              • --extend-zooms-if-still-dropping-maximum=count:  Increase the maxzoom if features
                are still being dropped at that zoom level by up to count zoom levels.

              • -R zoom/x/y or --one-tile=zoom/x/y: Set the  minzoom  and  maxzoom  to  zoom  and
                produce only the single specified tile at that zoom level.

       If  you know the precision to which you want your data to be represented, or the map scale
       of a corresponding printed map, this table  shows  the  approximate  precision  and  scale
       corresponding to various -z options if you use the default -d detail of 12:

       ┌───────────┬────────────────┬───────────────┬───────────────┐
       │zoom levelprecision (ft)precision (m)map scale   │
       ├───────────┼────────────────┼───────────────┼───────────────┤
       │-z0        │ 32000 ft       │ 10000 m       │ 1:320,000,000 │
       ├───────────┼────────────────┼───────────────┼───────────────┤
       │-z1        │ 16000 ft       │ 5000 m        │ 1:160,000,000 │
       ├───────────┼────────────────┼───────────────┼───────────────┤
       │-z2        │ 8000 ft        │ 2500 m        │ 1:80,000,000  │
       ├───────────┼────────────────┼───────────────┼───────────────┤
       │-z3        │ 4000 ft        │ 1250 m        │ 1:40,000,000  │
       ├───────────┼────────────────┼───────────────┼───────────────┤
       │-z4        │ 2000 ft        │ 600 m         │ 1:20,000,000  │
       ├───────────┼────────────────┼───────────────┼───────────────┤
       │-z5        │ 1000 ft        │ 300 m         │ 1:10,000,000  │
       ├───────────┼────────────────┼───────────────┼───────────────┤
       │-z6        │ 500 ft         │ 150 m         │ 1:5,000,000   │
       ├───────────┼────────────────┼───────────────┼───────────────┤
       │-z7        │ 250 ft         │ 80 m          │ 1:2,500,000   │
       ├───────────┼────────────────┼───────────────┼───────────────┤
       │-z8        │ 125 ft         │ 40 m          │ 1:1,250,000   │
       ├───────────┼────────────────┼───────────────┼───────────────┤
       │-z9        │ 64 ft          │ 20 m          │ 1:640,000     │
       ├───────────┼────────────────┼───────────────┼───────────────┤
       │-z10       │ 32 ft          │ 10 m          │ 1:320,000     │
       ├───────────┼────────────────┼───────────────┼───────────────┤
       │-z11       │ 16 ft          │ 5 m           │ 1:160,000     │
       ├───────────┼────────────────┼───────────────┼───────────────┤
       │-z12       │ 8 ft           │ 2 m           │ 1:80,000      │
       ├───────────┼────────────────┼───────────────┼───────────────┤
       │-z13       │ 4 ft           │ 1 m           │ 1:40,000      │
       ├───────────┼────────────────┼───────────────┼───────────────┤
       │-z14       │ 2 ft           │ 0.5 m         │ 1:20,000      │
       ├───────────┼────────────────┼───────────────┼───────────────┤
       │-z15       │ 1 ft           │ 0.25 m        │ 1:10,000      │
       ├───────────┼────────────────┼───────────────┼───────────────┤
       │-z16       │ 6 in           │ 15 cm         │ 1:5000        │
       ├───────────┼────────────────┼───────────────┼───────────────┤
       │-z17       │ 3 in           │ 8 cm          │ 1:2500        │
       ├───────────┼────────────────┼───────────────┼───────────────┤
       │-z18       │ 1.5 in         │ 4 cm          │ 1:1250        │
       ├───────────┼────────────────┼───────────────┼───────────────┤
       │-z19       │ 0.8 in         │ 2 cm          │ 1:600         │
       ├───────────┼────────────────┼───────────────┼───────────────┤
       │-z20       │ 0.4 in         │ 1 cm          │ 1:300         │
       ├───────────┼────────────────┼───────────────┼───────────────┤
       │-z21       │ 0.2 in         │ 0.5 cm        │ 1:150         │
       ├───────────┼────────────────┼───────────────┼───────────────┤
       │-z22       │ 0.1 in         │ 0.25 cm       │ 1:75          │
       └───────────┴────────────────┴───────────────┴───────────────┘
   Tile resolution-d detail or --full-detail=detail: Detail at max zoom level (default 12, for tile
                resolution of 2

              • -D detail or --low-detail=detail: Detail at lower zoom levels  (default  12,  for
                tile resolution of 2

              • -m  detail  or  --minimum-detail=detail: Minimum detail that it will try if tiles
                are too big at regular detail (default 7)

              • --extra-detail=detail: Generate tiles with  even  more  detail  than  the  "full"
                detail at the max zoom level, to maximize location precision. These tiles may not
                work with some rendering software that internally limits detail to 12 or 13.  The
                extra  detail  does  not  affect  the  choice  of maxzoom guessing, the amount of
                simplification, or the "tiny polygon" threshold as --full-detail does. The  tiles
                should  look  the  same  as  they  did  without it, except that they will be more
                precise when overzoomed.

       All internal math is done in terms of a 32-bit tile coordinate system, so 1/(2 of the size
       of  Earth,  or  about 1cm, is the smallest distinguishable distance. If maxzoom + detail >
       32, no additional resolution is obtained than by using a smaller maxzoom  or  detail,  and
       the  detail  of  tiles  will be reduced to the maximum that can be used with the specified
       maxzoom.

   Filtering feature attributes-x name or --exclude=name: Exclude the named attributes from  all  features.  You
                can   specify   multiple   -x  options  to  exclude  several  attributes.  (Don't
                comma-separate names within a single -x.)

              • -y name  or  --include=name:  Include  the  named  attributes  in  all  features,
                excluding  all those not explicitly named. You can specify multiple -y options to
                explicitly include several  attributes.  (Don't  comma-separate  names  within  a
                single -y.)

              • -X or --exclude-all: Exclude all attributes and encode only geometries

   Modifying feature attributes-Tattribute:type  or  --attribute-type=attribute:type:  Coerce  the named feature
                attribute to be of the specified type.  The type may be string,  float,  int,  or
                bool.   If  the type is bool, then original attributes of 0 (or, if numeric, 0.0,
                etc.), false, null, or the empty string become false, and otherwise become  true.
                If  the  type  is  float  or  int  and the original attribute was non-numeric, it
                becomes 0.  If the type is int and the original attribute was floating-point,  it
                is rounded to the nearest integer.

              • -Yattribute:description or --attribute-description=attribute:description: Set the
                description for the specified attribute in the tileset  metadata  to  description
                instead of the usual String, Number, or Boolean.

              • -Eattribute:operation or --accumulate-attribute=attribute:operation: Preserve the
                named  attribute  from  features  that  are  dropped,   coalesced-as-needed,   or
                clustered. The operation may be sum, product, mean, max, min, concat, or comma to
                specify how the named attribute is accumulated onto the  attribute  of  the  same
                name  in  a feature that does survive.  The attributes and operations may also be
                specified as JSON keys and values: --accumulate-attribute='{"attr":  "operation",
                "attr2", "operation2"}'.

              • --set-attribute attribute:value: Set the value of the specified attribute in each
                feature to the specified value. This is mostly useful to  give  an  attribute  in
                each  feature  an  initial  value for --accumulate-attribute.  The attributes and
                values may also be specified as JSON keys and  values:  --set-attribute='{"attr":
                value, "attr2", value}'.

              • -pe or --empty-csv-columns-are-null: Treat empty CSV columns as nulls rather than
                as empty strings.

              • -aI or --convert-stringified-ids-to-numbers:  If  a  feature  ID  is  the  string
                representation  of  a  number, convert it to a plain number to use as the feature
                ID.

              • --use-attribute-for-id=name: Use the attribute with the specified name as  if  it
                were specified as the feature ID. (If this attribute is a stringified number, you
                must also use -aI to convert it to a number.)

              • -pN or --single-precision: Write double-precision  numeric  attribute  values  to
                tiles as single-precision to reduce tile size.

   Filtering features by attributes-j  filter  or --feature-filter=filter: Check features against a per-layer filter
                (as defined in the Mapbox GL Style Specification ⟨https://docs.mapbox.com/mapbox-
                gl-js/style-spec/#other-filter⟩  or  in  a  Felt filter specification still to be
                finalized) and only include those that match. Any features in layers that have no
                filter  specified  will be passed through. Filters for the layer "*" apply to all
                layers. The special variable $zoom refers to the current zoom level.

              • -J filter-file or --feature-filter-file=filter-file: Like -j, but read the filter
                from a file.

       Example: to find the Natural Earth countries with low scalerank but high LABELRANK:

              tippecanoe -z5 -o filtered.mbtiles -j '{ "ne_10m_admin_0_countries": [ "all", [ "<", "scalerank", 3 ], [ ">", "LABELRANK", 5 ] ] }' ne_10m_admin_0_countries.geojson

       Example: to retain only major TIGER roads at low zoom levels:

              tippecanoe -o roads.mbtiles -j '{ "*": [ "any", [ ">=", "$zoom", 11 ], [ "in", "MTFCC", "S1100", "S1200" ] ] }' tl_2015_06001_roads.json

       Tippecanoe  also accepts expressions of the form [ "attribute-filter", name, expression ],
       to filter individual feature attributes instead of entire features. For example,  you  can
       exclude the road names at low zoom levels by doing

              tippecanoe -o roads.mbtiles -j '{ "*": [ "attribute-filter", "FULLNAME", [ ">=", "$zoom", 9 ] ] }' tl_2015_06001_roads.json

       An  attribute-filter  expression itself is always considered to evaluate to true (in other
       words, to retain the feature instead  of  dropping  it).  If  you  want  to  use  multiple
       attribute-filter expressions, or to use other expressions to remove features from the same
       layer, enclose them in an all expression so they will all be evaluated.

   Dropping a fixed fraction of features by zoom level-r rate or --drop-rate=rate: Rate at which dots are dropped at zoom levels  below
                basezoom (default 2.5).  If you use -rg, it will guess a drop rate that will keep
                at most 50,000 features in the densest tile.  You can also specify a marker-width
                with  -rgwidth  to allow fewer features in the densest tile to compensate for the
                larger marker, or -rfnumber to allow at most number features in the densest tile.
                If  you  use  -rp with -zg or --smallest-maximum-zoom-guess it will choose a drop
                rate from the same distance-between-features metrics as are used  to  choose  the
                maxzoom.

              • -B  zoom  or --base-zoom=zoom: Base zoom, the level at and above which all points
                are included in the tiles (default maxzoom).  If you use -Bg,  it  will  guess  a
                zoom  level  that will keep at most 50,000 features in the densest tile.  You can
                also specify a marker-width with -Bgwidth to allow fewer features in the  densest
                tile  to  compensate  for the larger marker, or -Bfnumber to allow at most number
                features in the densest tile.

              • --retain-points-multiplier=multiple: Retain  the  specified  multiple  of  points
                instead  of  just  the  number of points that would ordinarily be retained by the
                drop  rate.  These  can  be  thinned  out   later   with   the   -m   option   to
                tippecanoe-overzoom.  The start of each cluster is marked in the feature sequence
                by the tippecanoe:retain_points_multiplier_first attribute. The --tile-size-limit
                will also be extended at low zoom levels to allow for the multiplied features.

              • --drop-denser=percentage:  When dropping dots at zoom levels below the base zoom,
                give the specified percentage preference to retaining points in sparse areas  and
                dropping points in dense areas.

              • --limit-base-zoom-to-maximum-zoom  or  -Pb:  Limit  the  guessed base zoom not to
                exceed the maxzoom, even if this would put more  than  the  requested  number  of
                features in a base zoom tile.

              • -al or --drop-lines: Let "dot" dropping at lower zooms apply to lines too

              • -ap or --drop-polygons: Let "dot" dropping at lower zooms apply to polygons too

              • -K   distance   or   --cluster-distance=distance:   Cluster   points   (as   with
                --cluster-densest-as-needed, but without the experimental discovery process) that
                are  approximately  within distance of each other. The units are tile coordinates
                within a nominally 256-pixel tile, so the maximum value of 255  allows  only  one
                feature  per  tile.  Values around 10 are probably appropriate for typical marker
                sizes. See --cluster-densest-as-needed below for behavior.

              • -k zoom or --cluster-maxzoom=zoom:  Max  zoom  on  which  to  cluster  points  if
                clustering is enabled.

              • -kg  or  --cluster-maxzoom=g:  Set  --cluster-maxzoom= to maxzoom - 1 so that all
                features are visible at the maximum zoom level.

              • --preserve-point-density-threshold=level: At the low zoom levels, do  not  reduce
                point  density  below  the  specified level, even if the specfied drop rate would
                normally call for it, so that low-density areas of the map do not  appear  blank.
                The unit is the distance between preserved points, as a fraction of the size of a
                tile. Values of 32 or 64 are probably appropriate for typical marker sizes.

   Dropping a fraction of features to keep under tile size limits-as or --drop-densest-as-needed: If a tile is too large,  try  to  reduce  it  to
                under  500K  by  increasing  the minimum spacing between features. The discovered
                spacing applies to the entire zoom level.

              • -ad or --drop-fraction-as-needed: Dynamically drop some fraction of features from
                each  zoom level to keep large tiles under the 500K size limit. (This is like -pd
                but applies to the entire zoom level, not to each tile.)

              • -an  or  --drop-smallest-as-needed:  Dynamically  drop  the   smallest   features
                (physically smallest: the shortest lines or the smallest polygons) from each zoom
                level to keep large tiles under the 500K size limit.

              • -aN or --coalesce-smallest-as-needed: Dynamically combine the  smallest  features
                (physically  smallest: the shortest lines or the smallest polygons or the densest
                points) from each zoom level into other nearby features to keep large tiles under
                the  500K  size  limit.  This  option  will  probably  not  help  very  much with
                LineStrings. It is mostly intended for polygons, to maintain  the  full  original
                area  covered  by  polygons  while  still reducing the feature count somehow. The
                attributes of the small polygons are not preserved  into  the  combined  features
                (except  through  --accumulate-attribute),  only their geometry. Furthermore, the
                polygons to which nested polygons  are  coalesced  may  not  necessarily  be  the
                immediately enclosing features.

              • -aD  or  --coalesce-densest-as-needed:  Dynamically  combine the densest features
                from each zoom level into other nearby features to keep  large  tiles  under  the
                500K size limit. (Again, mostly useful for polygons.)

              • -aS  or --coalesce-fraction-as-needed: Dynamically combine a fraction of features
                from each zoom level into other nearby features to keep  large  tiles  under  the
                500K size limit. (Again, mostly useful for polygons.)

              • -pd  or  --force-feature-limit:  Dynamically  drop some fraction of features from
                large tiles to keep them under the 500K size limit. It will probably look ugly at
                the tile boundaries. (This is like -ad but applies to each tile individually, not
                to the entire zoom level.) You probably don't want to use this.

              • -aC or --cluster-densest-as-needed: If a tile is too large,  try  to  reduce  its
                size  by  increasing  the  minimum  spacing  between  features,  and  leaving one
                placeholder feature from each group.  The  remaining  feature  will  be  given  a
                "clustered":  true  attribute  to  indicate  that  it  represents  a  cluster,  a
                "point_count" attribute to indicate the number of features  that  were  clustered
                into  it,  and a "sqrt_point_count" attribute to indicate the relative width of a
                feature to represent the cluster. If the features being clustered are points, the
                representative  feature  will  be  located at the average of the original points'
                locations;  otherwise,  one  of  the  original  features  will  be  left  as  the
                representative.

   Dropping tightly overlapping features-g  gamma  or  --gamma=_gamma_:  Rate  at which especially dense dots are dropped
                (default 0, for no effect). A gamma of 2 reduces the number of dots less  than  a
                pixel apart to the square root of their original number.

              • -aG  or  --increase-gamma-as-needed:  If a tile is too large, try to reduce it to
                under 500K by increasing the -g gamma. The discovered gamma applies to the entire
                zoom level. You probably want to use --drop-densest-as-needed instead.

   Line and polygon simplification-S  scale  or --simplification=scale: Multiply the tolerance for line and polygon
                simplification by scale. The standard tolerance tries to keep the line or polygon
                within  one  tile unit of its proper location. You can probably go up to about 10
                without too much visible difference.

              • -ps or --no-line-simplification: Don't simplify lines and polygons

              • -pS or --simplify-only-low-zooms: Don't simplify lines and  polygons  at  maxzoom
                (but do simplify at lower zooms)

              • --simplification-at-maximum-zoom=scale:   Use  the  specified  scale  at  maxzoom
                instead of the standard simplification scale (which still applies at lower zooms)

              • -pn or --no-simplification-of-shared-nodes: Don't simplify away  nodes  at  which
                LineStrings  or  Polygon  rings  converge,  diverge,  or cross. (This will not be
                effective if you also use --coalesce.) In between intersection nodes,  LineString
                segments  or  polygon  edges  will  be  simplified identically in each feature if
                possible. Use this instead of --detect-shared-borders.

              • -pt or --no-tiny-polygon-reduction: Don't combine the area of very small polygons
                into small squares that represent their combined area.

              • -pT  or  --no-tiny-polygon-reduction-at-maximum-zoom:  Combine  the  area of very
                small polygons into small squares that represent their combined area only at zoom
                levels below the maximum.

              • --tiny-polygon-size=size: Use the specified size for tiny polygons instead of the
                default 2. Anything above 6 or so will lead to visible artifacts with the default
                tile detail.

              • -av  or  --visvalingam:  Use  Visvalingam's  simplification algorithm rather than
                Douglas-Peucker's.

   Attempts to improve shared polygon boundaries-ab  or  --detect-shared-borders:  DEPRECATED.  In   the   manner   of   TopoJSON
                ⟨https://github.com/mbostock/topojson/wiki/Introduction⟩, detect borders that are
                shared between multiple polygons and simplify them identically in  each  polygon.
                This  takes  more time and memory than considering each polygon individually. Use
                no-simplification-of-shared-nodes instead, which is faster and more correct.

              • -aL or --grid-low-zooms: At all zoom levels below maxzoom,  snap  all  lines  and
                polygons to a stairstep grid instead of allowing diagonals. You will also want to
                specify a tile resolution, probably -D8. This option provides a  way  to  display
                continuous  parcel, gridded, or binned data at low zooms without overwhelming the
                tiles with tiny polygons, since features will either get  stretched  out  to  the
                grid  unit  or lost entirely, depending on how they happened to be aligned in the
                original data. You probably don't want to use this.

   Controlling clipping to tile boundaries-b pixels or --buffer=pixels: Buffer size  where  features  are  duplicated  from
                adjacent  tiles.  Units  are "screen pixels"—1/256th of the tile width or height.
                (default 5)

              • -pc or --no-clipping: Don't clip features to the size of the tile. If  a  feature
                overlaps  the  tile's  bounds  or  buffer  at  all, it is included completely. Be
                careful: this can produce very large tilesets, especially with large polygons.

              • -pD or --no-duplication: As with --no-clipping, each feature is  included  intact
                instead  of  cut to tile boundaries. In addition, it is included only in a single
                tile per zoom level rather than potentially in multiple copies.  Clients  of  the
                tileset  must  check  adjacent tiles (possibly some distance away) to ensure they
                have all features.

   Reordering features within each tile-pi or --preserve-input-order: Preserve the original input order of  features  as
                the  drawing  order instead of ordering geographically. (This is implemented as a
                restoration of the original order at the  end,  so  that  dot-dropping  is  still
                geographic, which means it also undoes -ao).

              • -ac  or  --coalesce: Coalesce consecutive features that have the same attributes.
                This can be useful if you have lots of small polygons with  identical  attributes
                and you would like to merge them together.

              • -ao  or  --reorder:  Reorder  features  to  put  ones with the same attributes in
                sequence (instead of ones that are approximately spatially adjacent), to  try  to
                get them to coalesce. You probably want to use this if you use --coalesce.

              • -ar or --reverse: Try reversing the directions of lines to make them coalesce and
                compress better. You probably don't want to use this.

              • -ah or --hilbert: Put features in  Hilbert  Curve  order  instead  of  the  usual
                Z-Order.  This  improves  the  odds  that  spatially  adjacent  features  will be
                sequentially adjacent,  and  should  improve  density  calculations  and  spatial
                coalescing. It should be the default eventually.

              • --order-by=attribute:  Order features by the specified attribute, in alphabetical
                or numerical order. Multiple --order-by and --order-descending-by options may  be
                specified, the first being the primary sort key.

              • --order-descending-by=attribute:  Order  features  by the specified attribute, in
                reverse   alphabetical   or   numerical   order.    Multiple    --order-by    and
                --order-descending-by  options may be specified, the first being the primary sort
                key.

              • --order-smallest-first: Order features so the smallest geometry  comes  first  in
                each   tile.   Multiple  --order-by  and  --order-descending-by  options  may  be
                specified, the first being the primary sort key.

              • --order-largest-first: Order features so the largest geometry comes first in each
                tile. Multiple --order-by and --order-descending-by options may be specified, the
                first being the primary sort key.

   Adding calculated attributes-ag     or     --calculate-feature-density:     Add     a     new      attribute,
                tippecanoe_feature_density,  to  each feature, to record how densely features are
                spaced in that area of the tile. You can use  this  attribute  in  the  style  to
                produce  a glowing effect where points are densely packed. It can range from 0 in
                the sparsest areas to 255 in the densest.

              • -ai or --generate-ids: Add an id (a feature ID, not an  attribute  named  id)  to
                each feature that does not already have one. There is currently no guarantee that
                the id added will be stable between runs  or  that  it  will  not  conflict  with
                manually-assigned  feature  IDs.  Future  versions  of  Tippecanoe may change the
                mechanism for allocating IDs.

   Trying to correct bad source geometry-aw or --detect-longitude-wraparound: Detect when  consecutive  points  within  a
                feature jump to the other side of the world, and try to fix the geometry.

              • -pw  or  --use-source-polygon-winding: Instead of respecting GeoJSON polygon ring
                order, use the original polygon winding in the source data to  distinguish  inner
                (clockwise) and outer (counterclockwise) polygon rings.

              • -pW  or  --reverse-source-polygon-winding:  Instead of respecting GeoJSON polygon
                ring order, use the opposite of the original polygon winding in the  source  data
                to distinguish inner (counterclockwise) and outer (clockwise) polygon rings.

              • --clip-bounding-box=minlon,minlat,maxlon,maxlat:   Clip   all   features  to  the
                specified bounding box.

              • -aP or --convert-polygons-to-label-points:  Replace  polygon  geometries  with  a
                label point or points for the polygon in each tile it intersects.

   Setting or disabling tile size limits-M  bytes or --maximum-tile-bytes=bytes: Use the specified number of bytes as the
                maximum compressed tile size instead of 500K.

              • -O features or --maximum-tile-features=features:  Use  the  specified  number  of
                features as the maximum in a tile instead of 200,000.

              • --limit-tile-feature-count=features:  Abruptly  limit  each tile to the specified
                number of features, after ordering them if specified.

              • --limit-tile-feature-count-at-maximum-zoom=features: Abruptly limit each tile  at
                the  maximum  zoom level to the specified number of features, after ordering them
                if specified.

              • -pf or --no-feature-limit: Don't limit tiles to 200,000 features

              • -pk or --no-tile-size-limit: Don't limit tiles to 500K bytes

              • -pC or --no-tile-compression: Don't compress the PBF vector tile data. If you are
                getting  "Unimplemented  type  3"  error messages from a renderer, it is probably
                because it expects uncompressed tiles using this option rather  than  the  normal
                gzip-compressed tiles.

              • -pg or --no-tile-stats: Don't generate the tilestats row in the tileset metadata.
                Uploads without tilestats ⟨https://github.com/mapbox/mapbox-geostats⟩  will  take
                longer to process.

              • --tile-stats-attributes-limit=count:  Include tilestats information about at most
                count attributes instead of the default 1000.

              • --tile-stats-sample-values-limit=count: Calculate tilestats attribute  statistics
                based on count values instead of the default 1000.

              • --tile-stats-values-limit=count:   Report   count   unique  attribute  values  in
                tilestats instead of the default 100.

   Temporary storage-t directory or  --temporary-directory=directory:  Put  the  temporary  files  in
                directory.  If you don't specify, it will use /tmp.

   Progress indicator-q or --quiet: Work quietly instead of reporting progress or warning messages

              • -Q or --no-progress-indicator: Don't report progress, but still give warnings

              • -U  seconds or --progress-interval=seconds: Don't report progress more often than
                the specified number of seconds.

              • -u or --json-progress: like -quiet but logs progress as a  JSON  object.  Use  in
                combination with -U.

              • -v or --version: Report Tippecanoe's version number

   Filters-C  command  or  --prefilter=command: Specify a shell filter command to be run at
                the start of assembling each tile

              • -c command or --postfilter=command: Specify a shell filter command to be  run  at
                the end of assembling each tile

       The  pre- and post-filter commands allow you to do optional filtering or transformation on
       the features of each tile as it is created. They are shell commands,  run  with  the  zoom
       level,  X,  and  Y as the $1, $2, and $3 arguments.  Future versions of Tippecanoe may add
       additional arguments for more context.

       The features are provided to the filter as a series of newline-delimited  GeoJSON  objects
       on the standard input, and tippecanoe expects to read another set of GeoJSON features from
       the filter's standard output.

       The prefilter receives the features at  the  highest  available  resolution,  before  line
       simplification,  polygon  topology repair, gamma calculation, dynamic feature dropping, or
       other internal processing.  The postfilter receives the features at tile resolution, after
       simplification, cleaning, and dropping.

       The  layer  name  is provided as part of the tippecanoe element of the feature and must be
       passed through to keep the feature in its correct layer. In the case of the prefilter, the
       tippecanoe  element may also contain index, sequence, extent, and dropped, elements, which
       must  be  passed  through   for   internal   operations   like   --drop-densest-as-needed,
       --drop-smallest-as-needed, and --preserve-input-order to work.

   Examples:
              • Make  a tileset of the Natural Earth countries to zoom level 5, and also copy the
                GeoJSON features to files in a tiles/z/x/y.geojson directory hierarchy.

              tippecanoe -o countries.mbtiles -z5 -C 'mkdir -p tiles/$1/$2; tee tiles/$1/$2/$3.geojson' ne_10m_admin_0_countries.json

              • Make a tileset of the Natural Earth countries to zoom level 5, but including only
                those     tiles     that     intersect    the    bounding    box    of    Germany
                ⟨https://www.flickr.com/places/info/23424829⟩.  (The  limit-tiles-to-bbox  script
                is in the Tippecanoe source directory ⟨filters/limit-tiles-to-bbox⟩.)

              tippecanoe -o countries.mbtiles -z5 -C './filters/limit-tiles-to-bbox 5.8662 47.2702 15.0421 55.0581 $*' ne_10m_admin_0_countries.json

              • Make  a  tileset of TIGER roads in Tippecanoe County, leaving out all but primary
                and       secondary       roads       (as       classified        by        TIGER
                ⟨https://www.census.gov/geo/reference/mtfcc.html⟩) below zoom level 11.

              tippecanoe -o roads.mbtiles -c 'if [ $1 -lt 11 ]; then grep "\"MTFCC\": \"S1[12]00\""; else cat; fi' tl_2016_18157_roads.json

Environment

       Tippecanoe  ordinarily  uses  as many parallel threads as the operating system claims that
       CPUs are available.  You can override this number by  setting  the  TIPPECANOE_MAX_THREADS
       environmental variable.

GeoJSON extension

       Tippecanoe  defines  a  GeoJSON  extension  that you can use to specify the minimum and/or
       maximum zoom level at which an individual feature will be included in the  vector  tileset
       being produced.  If you have a feature like this:

              {
                  "type" : "Feature",
                  "tippecanoe" : { "maxzoom" : 9, "minzoom" : 4 },
                  "properties" : { "FULLNAME" : "N Vasco Rd" },
                  "geometry" : {
                      "type" : "LineString",
                      "coordinates" : [ [ -121.733350, 37.767671 ], [ -121.733600, 37.767483 ], [ -121.733131, 37.766952 ] ]
                  }
              }

       with  a  tippecanoe object specifiying a maxzoom of 9 and a minzoom of 4, the feature will
       only appear in the vector tiles for zoom levels 4 through  9.  Note  that  the  tippecanoe
       object  belongs  to  the  Feature,  not  to its properties. If you specify a minzoom for a
       feature, it will be preserved down to that zoom level even if dot-dropping with  -r  would
       otherwise have dropped it.

       You  can  also  specify  a layer name in the tippecanoe object, which will take precedence
       over the filename or name specified using --layer, like this:

              {
                  "type" : "Feature",
                  "tippecanoe" : { "layer" : "streets" },
                  "properties" : { "FULLNAME" : "N Vasco Rd" },
                  "geometry" : {
                      "type" : "LineString",
                      "coordinates" : [ [ -121.733350, 37.767671 ], [ -121.733600, 37.767483 ], [ -121.733131, 37.766952 ] ]
                  }
              }

       If your source GeoJSON only has minzoom, maxzoom and/or layer within  properties  you  can
       use ndjson-cli ⟨https://github.com/mbostock/ndjson-cli/blob/master/README.md⟩ to move them
       into the required tippecanoe object by piping the GeoJSON like this:

              ndjson-map 'd.tippecanoe = { minzoom: d.properties.minzoom, maxzoom: d.properties.maxzoom, layer: d.properties.layer }, delete d.properties.minzoom, delete d.properties.maxzoom, delete d.properties.layer, d'

Geometric simplifications

       At  every  zoom  level,  line  and  polygon  features  are  subjected  to  Douglas-Peucker
       simplification to the resolution of the tile.

       For  point  features,  it drops 1/2.5 of the dots for each zoom level above the point base
       zoom (which is normally the same as the -z max zoom, but can be a different zoom specified
       with  -B  if  you  have precise but sparse data).  I don't know why 2.5 is the appropriate
       number, but the densities of many different data sets fall off at about  this  same  rate.
       You can use -r to specify a different rate.

       You  can  use  the  gamma option to thin out especially dense clusters of points.  For any
       area where dots are closer than one pixel together (at whatever zoom level), a gamma of 3,
       for example, will reduce these clusters to the cube root of their original density.

       For  line  features,  it drops any features that are too small to draw at all.  This still
       leaves the lower zooms too dark (and too dense for the 500K tile limit, in  some  places),
       so I need to figure out an equitable way to throw features away.

       Unless  you  specify  --no-tiny-polygon-reduction,  any  polygons  that are smaller than a
       minimum area (currently 4 square subpixels) will have their probability diffused, so  that
       some  of  them will be drawn as a square of this minimum size and others will not be drawn
       at all, preserving the total area that all of them should have had together.

       Features in the same tile that share the same type and attributes are  coalesced  together
       into  a  single  geometry  if you use --coalesce. You are strongly encouraged to use -x to
       exclude any unnecessary attributes to reduce wasted file size.

       If a tile is larger than 500K, it will try  encoding  that  tile  at  progressively  lower
       resolutions before failing if it still doesn't fit.

Development

       Requires  sqlite3  and zlib (should already be installed on MacOS). Rebuilding the manpage
       uses md2man (gem install md2man).

       Linux:

              sudo apt-get install build-essential libsqlite3-dev zlib1g-dev

       Then build:

              make

       and perhaps

              make install

       Tippecanoe now requires features from the 2011 C++ standard. If  your  compiler  is  older
       than  that,  you will need to install a newer one. On MacOS, updating to the lastest XCode
       should get you a new enough version of clang++. On Linux, you should be  able  to  upgrade
       g++ with

              sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
              sudo apt-get update -y
              sudo apt-get install -y g++-5
              export CXX=g++-5

Docker Image

       A tippecanoe Docker image can be built from source and executed as a task to automatically
       install dependencies and allow tippecanoe to run on any system supported by Docker.

              $ docker build -t tippecanoe:latest .
              $ docker run -it --rm \
                -v /tiledata:/data \
                tippecanoe:latest \
                tippecanoe --output=/data/output.mbtiles /data/example.geojson

       The commands above will build a Docker image  from  the  source  and  compile  the  latest
       version. The image supports all tippecanoe flags and options.

Examples

       Check out some examples of maps made with tippecanoe ⟨MADE_WITH.md⟩

Name

       The  name is a joking reference ⟨http://en.wikipedia.org/wiki/Tippecanoe_and_Tyler_Too⟩ to
       a "tiler" for making map tiles.

tile-join

       Tile-join is a tool for copying and merging vector  mbtiles  files  and  for  joining  new
       attributes from a CSV file to existing features in them.

       It reads the tiles from an existing .mbtiles file, .pmtiles file, or a directory of tiles,
       matches them against the records of the CSV (if one is specified), and writes  out  a  new
       tileset.

       If  you  specify  multiple  source  mbtiles  files or source directories of tiles, all the
       sources are read and their combined contents are written to the  new  mbtiles  output.  If
       they define the same layers or the same tiles, the layers or tiles are merged.

       The options are:

   Output tileset-o  out.mbtiles,  out.pmtiles or --output=out.mbtiles: Write the new tiles to the
                specified .mbtiles file.

              • -e directory or --output-to-directory=directory:  Write  the  new  tiles  to  the
                specified directory instead of to an mbtiles file.

              • -f or --force: Remove out.mbtiles if it already exists.

              • -r or --read-from: list of input mbtiles to read from.

   Overzooming--overzoom:  If  one of the source tilesets has a larger maxzoom than the others,
                scale up tiles from the tilesets with the lower maxzooms so they  will  all  have
                the same maxzoom in the output tileset.

              • --buffer=pixels  or  -b pixels: Set the size of the tile buffer in the overzoomed
                tiles.

   Tileset description and attribution-A attribution or --attribution=attribution: Set the attribution string.

              • -n name or --name=name: Set the tileset name.

              • -N description or --description=description: Set the tileset description.

   Layer filtering and naming-l layer or --layer=layer: Include the named layer in the output. You can specify
                multiple  -l options to keep multiple layers. If you don't specify, they will all
                be retained.

              • -L layer or --exclude-layer=layer: Remove the named layer from  the  output.  You
                can specify multiple -L options to remove multiple layers.

              • -Rold:new  or  --rename-layer=old:new: Rename the layer named old to be named new
                instead. You can specify multiple -R options to rename multiple layers.  Renaming
                happens before filtering.

   Zoom levels-z zoom or --maximum-zoom=zoom: Don't copy tiles from higher zoom levels than the
                specified zoom

              • -Z zoom or --minimum-zoom=zoom: Don't copy tiles from lower zoom levels than  the
                specified zoom

   Merging attributes from a CSV file-c  match.csv  or --csv=match.csv: Use match.csv as the source for new attributes
                to join to the features. The first line of the file should be the key names;  the
                other lines are values. The first column is the one to match against the existing
                features; the other columns are the new data to add.

   Filtering features and feature attributes-x key or --exclude=key: Remove attributes named key from the output. You can use
                this  to remove the field you are matching against if you no longer need it after
                joining, or to remove any other attributes you don't want. You can  use  multiple
                -x options to remove multiple attributes.

              • -X or --exclude-all: Remove all attributes from the output.

              • -y  key  or  --include=key: Remove all attributes except for those named key from
                the output. You can use multiple -y options to retain multiple attributes.

              • -i or --if-matched: Only include features that matched the CSV.

              • -j filter or --feature-filter=filter: Check features against a  per-layer  filter
                (as defined in the Mapbox GL Style Specification ⟨https://docs.mapbox.com/mapbox-
                gl-js/style-spec/#other-filter⟩) and only include those that match. Any  features
                in  layers  that have no filter specified will be passed through. Filters for the
                layer "*" apply to all layers.

              • -J filter-file or --feature-filter-file=filter-file: Like -j, but read the filter
                from a file.

              • -pe or --empty-csv-columns-are-null: Treat empty CSV columns as nulls rather than
                as empty strings.

   Setting or disabling tile size limits-pk or --no-tile-size-limit: Don't skip tiles larger than 500K.

              • -pC or --no-tile-compression: Don't compress the PBF vector tile data.

              • -pg or --no-tile-stats: Don't generate the tilestats row in the tileset metadata.
                Uploads  without  tilestats ⟨https://github.com/mapbox/mapbox-geostats⟩ will take
                longer to process.

              • --tile-stats-attributes-limit=count: Include tilestats information about at  most
                count attributes instead of the default 1000.

              • --tile-stats-sample-values-limit=count:  Calculate tilestats attribute statistics
                based on count values instead of the default 1000.

              • --tile-stats-values-limit=count:  Report  count  unique   attribute   values   in
                tilestats instead of the default 100.

       Because  tile-join  just copies the geometries to the new .mbtiles without processing them
       (except to rescale the  extents  if  necessary),  it  doesn't  have  any  of  tippecanoe's
       recourses  if the new tiles are bigger than the 500K tile limit.  If a tile is too big and
       you haven't specified -pk, it is just left out of the new tileset.

Example

       Imagine you have a tileset of census blocks:

              curl -L -O http://www2.census.gov/geo/tiger/TIGER2010/TABBLOCK/2010/tl_2010_06001_tabblock10.zip
              unzip tl_2010_06001_tabblock10.zip
              ogr2ogr -f GeoJSON tl_2010_06001_tabblock10.json tl_2010_06001_tabblock10.shp
              ./tippecanoe -o tl_2010_06001_tabblock10.mbtiles tl_2010_06001_tabblock10.json

       and a CSV of their populations:

              curl -L -O http://www2.census.gov/census_2010/01-Redistricting_File--PL_94-171/California/ca2010.pl.zip
              unzip -p ca2010.pl.zip cageo2010.pl |
              awk 'BEGIN {
                  print "GEOID10,population"
              }
              (substr($0, 9, 3) == "750") {
                  print "\"" substr($0, 28, 2) substr($0, 30, 3) substr($0, 55, 6) substr($0, 62, 4) "\"," (0 + substr($0, 328, 9))
              }' > population.csv

       which looks like this:

              GEOID10,population
              "060014277003018",0
              "060014283014046",0
              "060014284001020",0
              ...
              "060014507501001",202
              "060014507501002",119
              "060014507501003",193
              "060014507501004",85
              ...

       Then you can join those populations to the geometries and discard the no-longer-needed  ID
       field:

              ./tile-join -o population.mbtiles -x GEOID10 -c population.csv tl_2010_06001_tabblock10.mbtiles

tippecanoe-enumerate

       The  tippecanoe-enumerate utility lists the tiles that an mbtiles file defines.  Each line
       of the output lists the name of the mbtiles file and the zoom, x, and y coordinates of one
       of the tiles. It does basically the same thing as

              select zoom_level, tile_column, (1 << zoom_level) - 1 - tile_row from tiles;

       on the file in sqlite3.

tippecanoe-decode

       The  tippecanoe-decode utility turns vector mbtiles back to GeoJSON. You can use it either
       on an entire file:

              tippecanoe-decode file.mbtiles
              tippecanoe-decode file.pmtiles

       or on an individual tile:

              tippecanoe-decode file.mbtiles zoom x y
              tippecanoe-decode file.vector.pbf zoom x y

       Unless you use -c, the output is a set of nested FeatureCollections identifying each  tile
       and  layer  separately.  Note that the same features generally appear at all zooms, so the
       output for the file will have many copies of the same features at different resolutions.

   Options-s projection or --projection=projection: Specify the projection  of  the  output
                data.  Currently  supported are EPSG:4326 (WGS84, the default) and EPSG:3857 (Web
                Mercator).

              • -z maxzoom or --maximum-zoom=maxzoom: Specify the highest zoom  level  to  decode
                from the tileset

              • -Z  minzoom  or  --minimum-zoom=minzoom:  Specify the lowest zoom level to decode
                from the tileset

              • -l layer or --layer=layer: Decode only layers with the specified names. (Multiple
                -l options can be specified.)

              • -c  or  --tag-layer-and-zoom: Include each feature's layer and zoom level as part
                of its tippecanoe object rather than as a FeatureCollection wrapper

              • -S or --stats: Just report statistics about each tile's size and  the  number  of
                features in it, as a JSON structure.

              • -f  or  --force:  Decode tiles even if polygon ring order or closure problems are
                detected

              • -I or --integer: Report coordinates in integer tile coordinates

              • -F or --fraction: Report coordinates as a fraction of the tile extent

tippecanoe-json-tool

       Extracts GeoJSON features or standalone geometries as line-delimited JSON objects  from  a
       larger  JSON  file,  following the same extraction rules that Tippecanoe uses when parsing
       JSON.

              tippecanoe-json-tool file.json [... file.json]

       Optionally also wraps them in a FeatureCollection or GeometryCollection as appropriate.

       Optionally extracts an attribute from the GeoJSON properties for sorting.

       Optionally joins a sorted CSV of new attributes to a sorted GeoJSON file.

       The reason for requiring sorting is so that it is possible to  work  on  CSV  and  GeoJSON
       files  that  are  larger  than  can comfortably fit in memory by streaming through them in
       parallel, in the same way that the Unix join command does. The Unix sort  command  can  be
       used to sort large files to prepare them for joining.

       The sorting interface is weird, and future version of tippecanoe-json-tool will replace it
       with something better.

   Options-w or --wrap: Add the FeatureCollection or GeometryCollection wrapper.

              • -e attribute or --extract=attribute: Extract the named attribute as a  prefix  to
                each  feature.   The  formatting  makes  excessive  use  of \u quoting so that it
                follows JSON string rules but will still be sorted correctly by tools  that  just
                do ASCII comparisons.

              • -c  file.csv  or  --csv=file.csv: Join attributes from the named sorted CSV file,
                using its first column as the join key. Geometries will be passed through even if
                they  do  not  match  the  CSV;  CSV  lines  that do not match a geometry will be
                discarded.

              • -pe or --empty-csv-columns-are-null: Treat empty CSV columns as nulls rather than
                as empty strings.

   Example
       Join Census LEHD (Longitudinal Employer-Household Dynamics ⟨https://lehd.ces.census.gov/⟩)
       employment data to a file of Census block geography for Tippecanoe County, Indiana.

       Download Census block geometry, and convert to GeoJSON:

              $ curl -L -O https://www2.census.gov/geo/tiger/TIGER2010/TABBLOCK/2010/tl_2010_18157_tabblock10.zip
              $ unzip tl_2010_18157_tabblock10.zip
              $ ogr2ogr -f GeoJSON tl_2010_18157_tabblock10.json tl_2010_18157_tabblock10.shp

       Download Indiana employment data, and fix name of join key in header

              $ curl -L -O https://lehd.ces.census.gov/data/lodes/LODES7/in/wac/in_wac_S000_JT00_2015.csv.gz
              $ gzip -dc in_wac_S000_JT00_2015.csv.gz | sed '1s/w_geocode/GEOID10/' > in_wac_S000_JT00_2015.csv

       Sort GeoJSON block geometry so it is ordered by block ID. If you don't do this,  you  will
       get a "GeoJSON file is out of sort" error.

              $ tippecanoe-json-tool -e GEOID10 tl_2010_18157_tabblock10.json | LC_ALL=C sort > tl_2010_18157_tabblock10.sort.json

       Join block geometries to employment attributes:

              $ tippecanoe-json-tool -c in_wac_S000_JT00_2015.csv tl_2010_18157_tabblock10.sort.json > blocks-wac.json

tippecanoe-overzoom

       The  tippecanoe-overzoom  utility  creates  a  vector  tile  from one of its parent tiles,
       clipping and scaling the geometry from the parent tile and  excluding  features  that  are
       clipped  away.  The  idea  is  that  if  you  create  very  high  resolution  tiles (using
       --extra-detail) at a moderate zoom level, you can use tippecanoe-overzoom  to  turn  those
       into  moderate  detail tiles at high zoom levels, for the benefit of renderers that cannot
       internally overzoom high-resolution tiles without losing some of the precision. Running:

              tippecanoe-overzoom -o out.mvt.gz inz/inx/iny outz/outx/outy in.mvt.gz

       reads tile inz/inx/iny of in.mvt.gz and produces tile outz/outx/outy of out.mvt.gz.

   Options-b buffer: Set the tile buffer in the output tile (default 5)

              • -d detail: Set the detail of the output tile (default 12)

              • -y attribute:  Retain  the  specified  attribute  in  the  output  features.  All
                attributes that are not named in a -y option will be removed.

              • -j filter: Filter features using the same expression syntax as in tippecanoe.

              • -m:  If  a  tile was created with the --retain-points-multiplier option, thin the
                tile back down to its normal feature count during overzooming. The first  feature
                from  each  cluster  will  be retained, unless -j is used to specify a filter, in
                which case the first matching filter from each cluster will be retained instead.

              • --preserve-input-order: Restore a set of filtered features to its original  input
                order

              • --accumulate-attribute:  Behaves  as  in  tippecanoe  to  sum attributes from the
                features of a multiplier cluster that are not included in the final  output.  The
                attributes  from features that are filtered away with -j are not accumulated onto
                the output feature.

                                                                                     tippecanoe()