Django vector tile generation
Project description
Generate MapBox VectorTiles from GeoDjango models
With mapbox_vector_tile or directly with PostgreSQL/PostGIS 2.4+
Installation
Basic
pip install django-vectortiles
- Without any other option, use only vectortiles.postgis
- Ensure you have psycopg2 set and installed
If you don't want to use Postgis
pip install django-vectortiles[mapbox]
- This will incude mapbox_vector_tiles package and its dependencies
- Use only vectortiles.mapbox
Simple model example:
# in your view file
from django.views.generic import ListView
from vectortiles.postgis.views import PostgisVectorTileView
from yourapp.models import Feature
class FeatureTileView(PostgisVectorTileView, ListView):
model = Feature
vector_tile_layer_name = "features"
vector_tile_fields = ('other_field_to_include', )
# in your urls file
from django.urls import path
from yourapp import views
urlpatterns = [
...
path('tiles/<int:z>/<int:x>/<int:y>', views.PostGISFeatureView.as_view(), name="feature-tile"),
...
]
Related model example:
# in your view file
from django.views.generic import DetailView
from vectortiles.mixins import BaseVectorTileView
from vectortiles.postgis.views import PostgisVectorTileView
from yourapp.models import Layer
class LayerTileView(PostgisVectorTileView, DetailView):
model = Layer
vector_tile_fields = ('other_field_to_include', )
def get_vector_tile_layer_name(self):
return self.get_object().name
def get_vector_tile_queryset(self):
return self.get_object().features.all()
def get(self, request, *args, **kwargs):
self.object = self.get_object()
return BaseVectorTileView.get(self,request=request, z=kwargs.get('z'), x=kwargs.get('x'), y=kwargs.get('y'))
# in your urls file
from django.urls import path
from yourapp import views
urlpatterns = [
...
path('layer/<int:pk>/tile/<int:z>/<int:x>/<int:y>', views.LayerTileView.as_view(), name="layer-tile"),
...
]
Usage without PostgreSQL / PostGIS
Just import and use vectortiles.mapbox.view.MapboxVectorTileVew instead of vectortiles.postgis.view.PostgisVectorTileView
Usage with DRF
django-vectortiles can be used with DRF, use right BaseMixin and action on viewsets, or directly a GET method in an APIView.
-> vectortiles.mapbox.mixins.MapboxBaseVectorTile and vectortiles.postgis.mixins.PostgisBaseVectorTile
Development
With docker and docker-compose
docker pull makinacorpus/geodjango:bionic-3.6
docker-compose build
# docker-compose up
docker-compose run /code/venv/bin/python ./manage.py test
Local
- Install python and django requirements (python 3.6+, django 2.2+)
- Install geodjango requirements
- Have a postgresql / postgis 2.4+ enabled database
- Use a virtualenv
pip install .[dev] -U
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
Close
Hashes for django-vectortiles-0.0.1.dev0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6a5b70b2c3bc7f20e34ac08da0b9e8387116f67543fcc0b24fd5131301b668f6 |
|
MD5 | 97a42ce90976f662a86a4f5f753641da |
|
BLAKE2b-256 | 6eac584a16e69de1a9a7d283720af04c10b16082ae0531a733213ed3da89f766 |