# Django Tiles GL
Integrated Django Vector Tile Server based on mbtiles.
## Description
Simple app to serve [Mabpox Vector Tiles](https://docs.mapbox.com/data/tilesets/guides/vector-tiles-standards/) directly from [MBTiles files](https://github.com/mapbox/mbtiles-spec) via Django views.
Django Tiles has a minimal dependencies. It does not require GeoDjano or any other libraries. Its only dependency is Django itself.
Django Tiles GL **does not create raster tiles**. It may only be used with map libraries that support to render vector tiles like [MapLibre](https://maplibre.org/) or [OpenLayers](https://openlayers.org/).
Django Tiles GL contains the [OSM Bright map style](https://openmaptiles.org/styles/#osm-bright) which can be used to render Vector Tiles following the [OpenMapTiles vector tile schema](https://openmaptiles.org/schema).
Note that this default style is using [OpenSans fonts](https://github.com/openmaptiles/fonts) which does only contain Latin, Greek and Cyrillic alphabets.
Other tile schemes are possible by creating a custom [map style specification](https://docs.mapbox.com/mapbox-gl-js/style-spec/) and referencing Django Tiles GL [TileJSON endpoint](https://github.com/mapbox/tilejson-spec) as a source.
## Usage
See the [`demo`](https://github.com/kleingeist/django-tiles-gl/tree/main/demo) Django application for a simple usage example.
### Setup
- Add `django_tiles_gl` to you `INSTALLED_APPS` setting.
- Add `django_tiles_gl.urls` to your url patterns.
For example with the `tiles` prefix:
```python
urlpatterns = [
...
path("tiles/", include("django_tiles_gl.urls")),
]
```
- Set path to your MBTiles files in you application settings.
```python
MBTILES_DATABASE = BASE_DIR / "demo" / "data" / "berlin.mbtiles"
```
- Optionally set the default center to be set on the default map style.
```python
MBTILES_CENTER = [13.4, 52.5, 13] # [longitude, latitude, zoom]
```
- Optionally force absolute urls to use SSL by prefixing them with "https://".
This might be required if you app is running behind a reverse proxy and you
are not able to set [`SECURE_PROXY_SSL_HEADER`](https://docs.djangoproject.com/en/4.0/ref/settings/#secure-proxy-ssl-header)
from the SSL enabled proxy server.
```python
MBTILES_FORCE_SSL = True
```
### Views
To render a map you have to include a JavaScript mapping library and refer to the `tile` endpoint or the default integrated style.
Django Tiles GL provides the following endpoints:
- `{% url 'django_tiles_gl:openmaptiles_style' %}` - Default [OpenMapTiles style defintion](https://openmaptiles.org) using the [OSM Bright map style](https://openmaptiles.org/styles/#osm-bright).
- `{% url 'django_tiles_gl:tilejson' %}` - [TileJSON](https://github.com/mapbox/tilejson-spec) describing the configured MBTiles files and providing the correct tile urls.
- `{% url 'django_tiles_gl:tile' x y z %}` - Actual tile endpoint, returning vector data in the [PBF format](https://wiki.openstreetmap.org/wiki/PBF_Format).
Django Tiles GL is bundles with [MapLibre](https://maplibre.org/) and provides a template tag for easy inclusion. A minimal working example has to contain the following defintions:
```html
{% load tiles_gl_tags %}
<!DOCTYPE html>
<html>
<head>
{% maplibre_head %}
<style>
body { margin:0; padding:0; }
#map { position:absolute; top:0; bottom:0; width:100%; }
</style>
</head>
<body>
<div id='map'></div>
<script>
var map = new maplibregl.Map({
container: 'map',
style: '{% url 'django_tiles_gl:openmaptiles_style' %}',
});
</script>
</body>
</html>
```
## Data / MBTiles generation
There are mutiple tools to generate valid MBTiles databases. The easiest to use with Django Tiles GL is [OpenMapTiles](https://github.com/openmaptiles/openmaptiles) as it is compatible with the bundled default style.
For a quickstart you may generate the MbTiles for an area with the following commands:
```sh
git clone https://github.com/openmaptiles/openmaptiles.git
cd openmaptiles
./quickstart.sh <area>
```
Fo further information and optiones see [https://github.com/openmaptiles/openmaptiles](https://github.com/openmaptiles/openmaptiles)
## Further Topics
### Caching
It is advised setup a caching proxy for the `tile` endpoint. Please refer to you HTTP servers documentation. For example the [nginx proxy cache config](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache)
## Other Django tile server solutions
- [django-geojson-tiles](https://github.com/glenrobertson/django-geojson-tiles) - Generates GeoJSON tiles from a GeoDjango model. No MBTiles support. Not to be used as a base layer.
- [django-vectortiles](https://github.com/submarcos/django-vectortiles) - Generates Vector Tile layers from GeoDjango. No MBTiles support. Not to be used as a base layer.
- [django-mbtiles](https://github.com/makinacorpus/django-mbtiles) - Uses MBTiles to generate rastered tiles and [UTFGrid](https://github.com/mapbox/mbtiles-spec/blob/master/1.1/utfgrid.md). Does not support modern vector tiles. Strong inspiration for this project.
Raw data
{
"_id": null,
"home_page": "https://github.com/kleingeist/django-tiles-gl",
"name": "django-tiles-gl",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.10",
"maintainer_email": null,
"keywords": "django, map, mbtiles",
"author": "Johannes Dillmann",
"author_email": "dev@ae35.de",
"download_url": "https://files.pythonhosted.org/packages/c4/79/2c6063644b5cfc39a408417dfd1e3d5b9b73c09aa26aef10a9ad961801d2/django_tiles_gl-0.3.9.tar.gz",
"platform": null,
"description": "# Django Tiles GL\n\nIntegrated Django Vector Tile Server based on mbtiles.\n\n\n## Description\n\nSimple app to serve [Mabpox Vector Tiles](https://docs.mapbox.com/data/tilesets/guides/vector-tiles-standards/) directly from [MBTiles files](https://github.com/mapbox/mbtiles-spec) via Django views.\n\nDjango Tiles has a minimal dependencies. It does not require GeoDjano or any other libraries. Its only dependency is Django itself.\n\nDjango Tiles GL **does not create raster tiles**. It may only be used with map libraries that support to render vector tiles like [MapLibre](https://maplibre.org/) or [OpenLayers](https://openlayers.org/).\n\nDjango Tiles GL contains the [OSM Bright map style](https://openmaptiles.org/styles/#osm-bright) which can be used to render Vector Tiles following the [OpenMapTiles vector tile schema](https://openmaptiles.org/schema).\n\nNote that this default style is using [OpenSans fonts](https://github.com/openmaptiles/fonts) which does only contain Latin, Greek and Cyrillic alphabets.\n\nOther tile schemes are possible by creating a custom [map style specification](https://docs.mapbox.com/mapbox-gl-js/style-spec/) and referencing Django Tiles GL [TileJSON endpoint](https://github.com/mapbox/tilejson-spec) as a source.\n\n## Usage\n\nSee the [`demo`](https://github.com/kleingeist/django-tiles-gl/tree/main/demo) Django application for a simple usage example.\n\n\n### Setup\n\n- Add `django_tiles_gl` to you `INSTALLED_APPS` setting.\n- Add `django_tiles_gl.urls` to your url patterns.\n For example with the `tiles` prefix:\n ```python\n urlpatterns = [\n ...\n path(\"tiles/\", include(\"django_tiles_gl.urls\")),\n ]\n ```\n- Set path to your MBTiles files in you application settings.\n ```python\n MBTILES_DATABASE = BASE_DIR / \"demo\" / \"data\" / \"berlin.mbtiles\"\n ```\n- Optionally set the default center to be set on the default map style.\n ```python\n MBTILES_CENTER = [13.4, 52.5, 13] # [longitude, latitude, zoom]\n ```\n- Optionally force absolute urls to use SSL by prefixing them with \"https://\".\n This might be required if you app is running behind a reverse proxy and you\n are not able to set [`SECURE_PROXY_SSL_HEADER`](https://docs.djangoproject.com/en/4.0/ref/settings/#secure-proxy-ssl-header)\n from the SSL enabled proxy server.\n ```python\n MBTILES_FORCE_SSL = True\n ```\n\n### Views\nTo render a map you have to include a JavaScript mapping library and refer to the `tile` endpoint or the default integrated style.\n\nDjango Tiles GL provides the following endpoints:\n\n- `{% url 'django_tiles_gl:openmaptiles_style' %}` - Default [OpenMapTiles style defintion](https://openmaptiles.org) using the [OSM Bright map style](https://openmaptiles.org/styles/#osm-bright).\n- `{% url 'django_tiles_gl:tilejson' %}` - [TileJSON](https://github.com/mapbox/tilejson-spec) describing the configured MBTiles files and providing the correct tile urls.\n- `{% url 'django_tiles_gl:tile' x y z %}` - Actual tile endpoint, returning vector data in the [PBF format](https://wiki.openstreetmap.org/wiki/PBF_Format).\n\n\nDjango Tiles GL is bundles with [MapLibre](https://maplibre.org/) and provides a template tag for easy inclusion. A minimal working example has to contain the following defintions:\n\n```html\n{% load tiles_gl_tags %}\n<!DOCTYPE html>\n<html>\n<head>\n {% maplibre_head %}\n\n <style>\n body { margin:0; padding:0; }\n #map { position:absolute; top:0; bottom:0; width:100%; }\n </style>\n</head>\n<body>\n\n<div id='map'></div>\n\n<script>\nvar map = new maplibregl.Map({\n\tcontainer: 'map',\n\tstyle: '{% url 'django_tiles_gl:openmaptiles_style' %}',\n});\n</script>\n\n</body>\n</html>\n```\n\n## Data / MBTiles generation\n\nThere are mutiple tools to generate valid MBTiles databases. The easiest to use with Django Tiles GL is [OpenMapTiles](https://github.com/openmaptiles/openmaptiles) as it is compatible with the bundled default style.\n\nFor a quickstart you may generate the MbTiles for an area with the following commands:\n```sh\ngit clone https://github.com/openmaptiles/openmaptiles.git\ncd openmaptiles\n./quickstart.sh <area>\n```\n\nFo further information and optiones see [https://github.com/openmaptiles/openmaptiles](https://github.com/openmaptiles/openmaptiles)\n\n\n\n## Further Topics\n\n### Caching\n\nIt is advised setup a caching proxy for the `tile` endpoint. Please refer to you HTTP servers documentation. For example the [nginx proxy cache config](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache)\n\n\n\n## Other Django tile server solutions\n\n- [django-geojson-tiles](https://github.com/glenrobertson/django-geojson-tiles) - Generates GeoJSON tiles from a GeoDjango model. No MBTiles support. Not to be used as a base layer.\n\n- [django-vectortiles](https://github.com/submarcos/django-vectortiles) - Generates Vector Tile layers from GeoDjango. No MBTiles support. Not to be used as a base layer.\n\n- [django-mbtiles](https://github.com/makinacorpus/django-mbtiles) - Uses MBTiles to generate rastered tiles and [UTFGrid](https://github.com/mapbox/mbtiles-spec/blob/master/1.1/utfgrid.md). Does not support modern vector tiles. Strong inspiration for this project.\n",
"bugtrack_url": null,
"license": "BSD-3-Clause",
"summary": "Integrated Django Vector Tile Server based on mbtiles",
"version": "0.3.9",
"project_urls": {
"Homepage": "https://github.com/kleingeist/django-tiles-gl",
"Repository": "https://github.com/kleingeist/django-tiles-gl"
},
"split_keywords": [
"django",
" map",
" mbtiles"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "18c4e45cf2c8c0b4885675fb305305626af3e76f751d5a04a16acc6fc143f803",
"md5": "ccaad18e631bd794f27abd8be579bac9",
"sha256": "f110727cdee9d67001ffff29dbd3c71ce84f40dfcea6a8eadcfc97bd3d1e387c"
},
"downloads": -1,
"filename": "django_tiles_gl-0.3.9-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ccaad18e631bd794f27abd8be579bac9",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.10",
"size": 3195121,
"upload_time": "2024-08-23T07:50:01",
"upload_time_iso_8601": "2024-08-23T07:50:01.080723Z",
"url": "https://files.pythonhosted.org/packages/18/c4/e45cf2c8c0b4885675fb305305626af3e76f751d5a04a16acc6fc143f803/django_tiles_gl-0.3.9-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c4792c6063644b5cfc39a408417dfd1e3d5b9b73c09aa26aef10a9ad961801d2",
"md5": "54b7cad34d81176e0c79159ef8cf68ca",
"sha256": "3e3010c0a2925e50f20f49be5e5253e277176b3d3e2ca3fe0fa0ea861fc336a7"
},
"downloads": -1,
"filename": "django_tiles_gl-0.3.9.tar.gz",
"has_sig": false,
"md5_digest": "54b7cad34d81176e0c79159ef8cf68ca",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.10",
"size": 2446418,
"upload_time": "2024-08-23T07:50:03",
"upload_time_iso_8601": "2024-08-23T07:50:03.317774Z",
"url": "https://files.pythonhosted.org/packages/c4/79/2c6063644b5cfc39a408417dfd1e3d5b9b73c09aa26aef10a9ad961801d2/django_tiles_gl-0.3.9.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-08-23 07:50:03",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "kleingeist",
"github_project": "django-tiles-gl",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "django-tiles-gl"
}