0% found this document useful (0 votes)
22 views17 pages

Django Geojson

The document provides documentation on the django-geojson package. It describes how to install the package, create GeoJSON views and layers, use GeoJSON fields in models and forms, and advanced usage including serialization and deserialization of GeoJSON data.

Uploaded by

arthur tankwa
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
22 views17 pages

Django Geojson

The document provides documentation on the django-geojson package. It describes how to install the package, create GeoJSON views and layers, use GeoJSON fields in models and forms, and advanced usage including serialization and deserialization of GeoJSON data.

Uploaded by

arthur tankwa
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 17

django-geojson Documentation

Release 2.10

Makina Corpus

Mar 04, 2019


Contents

1 Installation 3
1.1 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2 Views 5
2.1 GeoJSON layer view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2 Tiled GeoJSON layer view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3 GeoJSON template filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3 Model and forms fields 9

4 Advanced usage 11
4.1 Low-level serializer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.2 Low-level deserializer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.3 Dump GIS models, or fixtures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

5 Indices and tables 13

i
ii
django-geojson Documentation, Release 2.10

Contents:

Contents 1
django-geojson Documentation, Release 2.10

2 Contents
CHAPTER 1

Installation

pip install django-geojson

This package has optional extra dependencies.


If you need GeoJSON fields with map widgets :

pip install "django-geojson [field]"

1.1 Configuration

Add djgeojson to your applications :

# settings.py

INSTALLED_APPS += (
'djgeojson',
)

(not required for views)

3
django-geojson Documentation, Release 2.10

4 Chapter 1. Installation
CHAPTER 2

Views

2.1 GeoJSON layer view

Very useful for web mapping :


# urls.py
from djgeojson.views import GeoJSONLayerView
...
url(r'^data.geojson$', GeoJSONLayerView.as_view(model=MushroomSpot), name='data'),

Consume the vector layer as usual, for example, with Leaflet loaded with jQuery Ajax:
# Leaflet JS
var layer = L.geoJson();
map.addLayer(layer);
$.getJSON("{% url 'data' %}", function (data) {
layer.addData(data);
});

Inherit generic views only if you need a reusable set of options :


# views.py
from djgeojson.views import GeoJSONLayerView

class MapLayer(GeoJSONLayerView):
# Options
precision = 4 # float
simplify = 0.5 # generalization

# urls.py
from .views import MapLayer, MeetingLayer
...
url(r'^mushrooms.geojson$', MapLayer.as_view(model=MushroomSpot, properties=('name',
˓→)), name='mushrooms')
(continues on next page)

5
django-geojson Documentation, Release 2.10

(continued from previous page)

Most common use-cases of reusable options are: low-fi precision, common list of fields between several views, etc.
Options are :
• properties : list of properties names, or dict for mapping field names and properties
• simplify : generalization of geometries (See simplify())
• precision : number of digit after comma
• geometry_field : name of geometry field (default: geom)
• srid : projection (default: 4326, for WGS84)
• bbox : Allows you to set your own bounding box on feature collection level
• bbox_auto : True/False (default false). Will automatically generate a bounding box on a per feature level.
• use_natural_keys : serialize natural keys instead of primary keys (default: False)

2.2 Tiled GeoJSON layer view

Vectorial tiles can help display a great number of objects on the map, with reasonnable performance.

# urls.py
from djgeojson.views import TiledGeoJSONLayerView
...

url(r'^data/(?P<z>\d+)/(?P<x>\d+)/(?P<y>\d+).geojson$',
TiledGeoJSONLayerView.as_view(model=MushroomSpot), name='data'),

Consume the vector tiles using Leaflet TileLayer GeoJSON, Polymaps, OpenLayers 3 or d3.js for example.
Options are :
• trim_to_boundary : if True geometries are trimmed to the tile boundary
• simplifications : a dict of simplification values by zoom level

2.3 GeoJSON template filter

Mainly useful to dump features in HTML output and bypass AJAX call :

// Leaflet JS
L.geoJson({{ object_list|geojsonfeature|safe}}).addTo(map);

Will work either for a model, a geometry field or a queryset.

{% load geojson_tags %}

var feature = {{ object|geojsonfeature|safe }};

var geom = {{ object.geom|geojsonfeature|safe }};

var collection = {{ object_list|geojsonfeature|safe }};

6 Chapter 2. Views
django-geojson Documentation, Release 2.10

Properties and custom geometry field name can be provided.

{{ object|geojsonfeature:"name,age" }}
{{ object|geojsonfeature:"name,age:the_geom" }}
{{ object|geojsonfeature:":geofield" }}

2.3. GeoJSON template filter 7


django-geojson Documentation, Release 2.10

8 Chapter 2. Views
CHAPTER 3

Model and forms fields

GeoJSON fields are based on Brad Jasper’s JSONField. See Installation to install extra dependencies.
They are useful to avoid usual GIS stacks (GEOS, GDAL, PostGIS. . . ) for very simple use-cases (no spatial operation
yet).

from djgeojson.fields import PointField

class Address(models.Model):
geom = PointField()

address = Address()
address.geom = {'type': 'Point', 'coordinates': [0, 0]}
address.save()

Form widgets are rendered with Leaflet maps automatically if django-leaflet is available.
All geometry types are supported and respectively validated : GeometryField, PointField, MultiPointField, LineString-
Field, MultiLineStringField, PolygonField, MultiPolygonField, GeometryCollectionField.

9
django-geojson Documentation, Release 2.10

10 Chapter 3. Model and forms fields


CHAPTER 4

Advanced usage

4.1 Low-level serializer

from djgeojson.serializers import Serializer as GeoJSONSerializer

GeoJSONSerializer().serialize(Restaurants.objects.all(), use_natural_keys=True, with_


˓→modelname=False)

4.2 Low-level deserializer

from djgeojson.serializers import Serializer as GeoJSONSerializer

GeoJSONSerializer().deserialize('geojson', my_geojson)

You can optionally specify the model name directly in the parameters:

GeoJSONSerializer().deserialize('geojson', my_geojson, model_name=my_model_name)

4.3 Dump GIS models, or fixtures

Register the serializer in your project :

# settings.py

SERIALIZATION_MODULES = {
'geojson' : 'djgeojson.serializers'
}

Command-line dumpdata can export files, viewable in GIS software like QGis :

11
django-geojson Documentation, Release 2.10

python manage.py dumpdata --format=geojson yourapp.Model > export.geojson

Works with loaddata as well, which can now import GeoJSON files.

12 Chapter 4. Advanced usage


CHAPTER 5

Indices and tables

• genindex
• modindex
• search

13

You might also like