smnorris / terraincache

Download, cache, merge mapzen terrain-tiles
MIT License
2 stars 0 forks source link

terraincache

A (yet another) basic Python script for downloading and accessing Mapzen Terrain Tiles geotiffs from AWS. Designed to integrate with rasterio and to provide a familiar command line tool for quick reprojection of downloads.

Installation

Installation assumes that you have gdal and the gdal Python bindings already installed to a location findable by your system.

pip install terraincache

Set the TERRAINCACHE environment variable to save typing:

export TERRAINCACHE=/users/snorris/Data/terrain-tiles

Usage

Python module

from matplotlib import pyplot as plt
import rasterio

from terraincache import TerrainTiles

bounds =[-125.2714, 51.3706, -125.2547, 51.3768]

# Initialize with bounds and zoom of interest
tt = TerrainTiles(bounds, 11)

# load to numpy array
array = tt.load()

# plot the array directly
plt.imshow(array, cmap='terrain', extent=bounds)

alt text

Dump to file and plot the array using rasterio.plot.show() (for correct axis labels):

tt.save(out_file="dem.tif")
with rasterio.open("dem.tif", "r") as src:
    fig, ax = plt.subplots()
    rasterio.plot.show(src, ax=ax, title='terrain-tiles', cmap="terrain")

alt text

CLI

$ terraincache --help
Usage: terraincache [OPTIONS]

  Write terrain tiles to geotiff

Options:
  -o, --out_file, --out-file PATH
                                  Output file name/path
  --bounds TEXT                   Bounds: "left bottom right top" or "[left,
                                  bottom, right, top]".  [required]
  -z, --zoom INTEGER              Web map zoom level  [required]
  -p, --cache-dir, --cache_dir TEXT
                                  Path to cache folder
  -tr, --resolution FLOAT         Output dataset target resolution in meters
                                  (square pixels)
  --bounds-crs, --bounds_crs TEXT
                                  CRS of provided bounds
  --dst-crs, --dst_crs TEXT       Target coordinate reference system.
  -r, --resampling_algorithm [bilinear|nearest|cubic|cubicspline|lanczos|average|mode]
                                  GDAL resampling algorithm
  -v, --verbose                   Increase verbosity.
  -q, --quiet                     Decrease verbosity.
  --help                          Show this message and exit.

For example, create a geotiff around the summit of Mt Fairweather (at BC / AK border) that aligns with the BC TRIM DEM. Note that this is almost certainly upsampling the data available, see below link to review source resolutions.

terraincache \
  --bounds "336637.5, 1597112.5, 346637.5, 1607112.5" \
  --bounds-crs EPSG:3005 \
  --zoom 11 \
  -tr 25 \
  -r bilinear \
  -o dem.tif

Data sources

See the data sources reference document

Credits / other implementations