Locally serve geospatial raster tiles in the Slippy Map standard.
Project description
🌐 Local Tile Server for Geospatial Rasters
Need to visualize a rather large (gigabytes) raster you have locally? This is for you.
A Flask application for serving tiles from large raster files in
the Slippy Maps standard
(i.e., /zoom/x/y.png
)
Launch a demo on MyBinder
Documentation: https://localtileserver.banesullivan.com/
🌟 Highlights
- Launch a tile server for large geospatial images
- View local or remote* raster files with
ipyleaflet
orfolium
in Jupyter - View rasters with CesiumJS with the built-in Flask web application
- Extract regions of interest (ROIs) interactively
- Use the example datasets to generate Digital Elevation Models
*remote raster files should be pre-tiled Cloud Optimized GeoTiffs
🚀 Usage
Usage details and examples can be found in the documentation: https://localtileserver.banesullivan.com/
The following is a minimal example to visualize a local raster file with
ipyleaflet
:
from localtileserver import get_leaflet_tile_layer, TileClient
from ipyleaflet import Map
# First, create a tile server from local raster file
tile_client = TileClient('path/to/geo.tif')
# Create ipyleaflet tile layer from that server
t = get_leaflet_tile_layer(tile_client)
m = Map(center=tile_client.center(), zoom=6)
m.add_layer(t)
m
ℹ️ Overview
This is a Flask application (blueprint) for serving tiles of large images.
The TileClient
class can be used to to launch a tile server in a background
thread which will serve raster imagery to a viewer (see ipyleaflet
and
folium
Jupyter notebook examples below).
This tile server can efficiently deliver varying levels of detail of your
raster imagery to your viewer; it helps to have pre-tiled, Cloud Optimized
GeoTIFFs (COG), but no wories if not as the backing libraries,
large_image
,
will tile and cache for you when opening the raster.
There is an included, standalone web viewer leveraging CesiumJS and GeoJS. You can use the web viewer to select and extract regions of interest from rasters.
Disclaimer: This is a hobby project and I am doing my best to make it
more stable/robust. Things might break between minor releases (I use the
major.minor.patch
versioning scheme).
⬇️ Installation
Get started with localtileserver
to view rasters locally in Jupyter or
deploy in your own Flask application.
🐍 Installing with conda
Conda makes managing localtileserver
's dependencies across platforms quite
easy and this is the recommended method to install:
conda install -c conda-forge localtileserver
🎡 Installing with pip
If you prefer pip, and know how to install GDAL on your system, then you can install from PyPI: https://pypi-hypernode.com/project/localtileserver/
pip install localtileserver
📝 A Brief Note on Installing GDAL
GDAL can be a pain in the 🍑 to install, so you may want to handle GDAL
before installing localtileserver
when using pip
.
If on linux, I highly recommend using the large_image_wheels from Kitware.
pip install --find-links=https://girder.github.io/large_image_wheels --no-cache GDAL
💭 Feedback
Please share your thoughts and questions on the Discussions board. If you would like to report any bugs or make feature requests, please open an issue.
If filing a bug report, please share a scooby Report
:
import localtileserver
print(localtileserver.Report())
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for localtileserver-0.5.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f566732cce3f9aeccbbe49fed1c9fe11880d255a175b3ac41d4dff5ff5944ab6 |
|
MD5 | 0365d93755f9d0cc48e75cc1b8332134 |
|
BLAKE2b-256 | a3a7d829a321b9665b96e0ca454c75268cfa2b559105dbc6696eab99e56bb80f |