Welcome to djangorestframework-mvt’s documentation!¶
System Requirements¶
Python >= 3.0
Installation¶
pip install djangorestframework-mvt
Getting Started¶
In a project’s models.py file add a MVTManager to a model to be served as Mapbox Vector Tiles. For example:
from django.contrib.gis.db import models
from rest_framework_mvt.managers import MVTManager
class Example(models.Model):
geom = models.PointField()
my_column = models.CharField()
objects = models.Manager()
vector_tiles = MVTManager()
The geo_col keyword argument specifies the name of the PostGIS geometry typed column.
In the project’s urls.py, create a view linked to a model using a MVTManager with the mvt_view_factory function. For example:
from rest_framework_mvt.views import mvt_view_factory
urlpatterns = [
path("api/v1/data/example.mvt/", mvt_view_factory(Example)),
]
The following requests should now be enabled:
GET api/v1/data/example.mvt?tile=1/0/0 HTTP/1.1
GET api/v1/data/example.mvt?tile=1/0/0&my_column=foo HTTP/1.1
GET api/v1/data/example.mvt?tile=1/0/0&my_column=foo&limit=10 HTTP/1.1
GET api/v1/data/example.mvt?tile=1/0/0&my_column=foo&limit=10&offset=10 HTTP/1.1
Source Documentation¶
-
class
rest_framework_mvt.managers.
MVTManager
(*args, geo_col='geom', source_name=None, **kwargs)¶ - Parameters
-
intersect
(bbox='', limit=-1, offset=0, filters={})¶ - Parameters
bbox (str) – A string representing a bounding box, e.g., ‘-90,29,-89,35’.
limit (int) – Number of entries to include in the result. The default is -1 (includes all results).
offset (int) – Index to start collecting entries from. Index size is the limit size. The default is 0.
filters (dict) – The keys represent column names and the values represent column values to filter on.
- Returns
Bytes representing a Google Protobuf encoded Mapbox Vector Tile. The vector tile will store each applicable row from the database as a feature. Applicable rows fall within the passed in bbox.
- Return type
- Raises
ValidationError – If filters include keys or values not accepted by the manager’s model.
Note
The sql execution follows the guidelines from Django below. As suggested, the executed query string does NOT contain quoted parameters.
https://docs.djangoproject.com/en/2.2/topics/db/sql/#performing-raw-queries
-
class
rest_framework_mvt.views.
BaseMVTView
(**kwargs)¶ Base view for serving a model as a Mapbox Vector Tile given X/Y/Z tile constraints.
-
get
(request, *args, **kwargs)¶ - Parameters
request (
rest_framework.request.Request
) – Standard DRF request object- Returns
Standard DRF response object
- Return type
rest_framework.response.Response
-
-
rest_framework_mvt.views.
mvt_view_factory
(model_class, geom_col='geom')¶ Creates an MVTView that serves Mapbox Vector Tiles for the given model and geom column.
- Parameters
model_class (
django.contrib.gis.db.models.Model
) – A GeoDjango modelgeom_col (str) – A string representing the column name containing PostGIS geometry types.
- Returns
A subclass of
rest_framework_mvt.views.MVTView
with its geom_col and model set to the function’s passed in values.- Return type
rest_framework_mvt.views.MVTView