Skip to main content
File added late

1 file was added to this release more than 14 days after its initial publication. Inspect the release files before installing.

django-geojson is a set of tools to manipulate GeoJSON with Django :

  • (De)Serializer for (Geo)Django objects, querysets and lists

  • Base views to serve GeoJSON map layers from models

  • GeoJSON model and form fields to avoid spatial database backends (compatible with django-leaflet for map widgets)

https://pypip.in/v/django-geojson/badge.png https://pypip.in/d/django-geojson/badge.png https://travis-ci.org/makinacorpus/django-geojson.png?branch=master https://coveralls.io/repos/makinacorpus/django-geojson/badge.png?branch=master

INSTALL

pip install django-geojson

This package has optional extra dependencies.

If you need GeoJSON fields with map widgets :

pip install "django-geojson [field]"

USAGE

Add djgeojson to your applications :

# settings.py

INSTALLED_APPS += (
    'djgeojson',
)

(not required for views)

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')

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.

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

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 }};

Properties and custom geometry field name can be provided.

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

Model and forms fields

GeoJSON fields are based on Brad Jasper’s JSONField. See INSTALL 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, LineStringField, MultiLineStringField, PolygonField, MultiPolygonField, GeometryCollectionField.

Low-level serializer

from djgeojson.serializers import Serializer as GeoJSONSerializer

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

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)

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 :

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

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

AUTHORS

Version 1.X:

  • Daniel Sokolowski, serializer snippet

  • ozzmo, python 2.6 compatibility

makinacom

LICENSE

  • Lesser GNU Public License

CHANGELOG

2.7.0 (2015-02-21)

** New features **

  • Add a with_modelname option to serializer

** Bug fixes **

  • change ‘fields’ to ‘properties’ in code example

  • Adds a warning for “Module version, as defined in PEP-0396

2.6.0 (2014-07-21)

** New features **

  • Django GeoJSON fields without libgeos installed (thanks Florent Lebreton)

  • Properties can be a tuple (fixes #34)

2.5.0 (2014-06-03)

** New features **

  • Add vector tiles view

  • Improved geojsonfeature template tag (fixes #15, #16)

  • Add various GeoJSON fields, for each geometry type

** Bug fixes **

  • Fix (de)serializers not being usable from command-line (fixes #28)

  • Fix import attempt for django-leaflet (fixes #27), by Seyi Ogunyemi

  • Fix missed SRID after copying a geometry in _handle_geom, by Biel Frontera

** Internal changes **

  • Specify django-leaflet minimal version for GeoJSON model field

  • Got rid of shapely for deserialization

2.4.0 (2014-03-22)

  • Add GeoJSON fields

2.3.0 (2014-02-08)

  • Python 3 support (thanks @amarandon)

  • Add bbox at feature level (thanks @7wonders)

2.2.0 (2013-12-18)

  • Deserialization: add ability to specify model name as option (thanks @Vross)

  • Deserialization: look-up ìd value in properties whe missing at feature level: (thanks @Vross)

2.1.1 (2013-08-21)

  • Set default SRID to 4326 in generic GeoJSON views.

2.1.0 (2013-08-19)

  • Serialize reversed relations using natural keys (fixes #8)

  • Support empty geometries (None or NULL in Db)

  • Fix serializing property in upper class

2.0.1 (2013-07-10)

  • Fix usage of simplify.

  • Expose force2d option in view

  • Allow to have pk or id in properties if explicitly listed

2.0.0 (2013-07-09)

  • Complete rewrite using @jeffkistler and @glenrobertson code

  • CRS is added to GeoJSON ouput by default

  • Ability to build pk dynamically by passing a lambda

  • Ability to provide a bbox

  • Ability to use Django natural keys

  • Support of ValuesQuerySet

  • Support of ForeignKey and ManyToMany

  • Added force2d option

** Backwards incompatible changes **

  • Geom field is not guessed automatically : Use geometry_field option, default is 'geom'.

  • no more pk in properties : use feature id, or list pk in properties explicitly.

  • fields list in GeoJSONLayer was renamed properties.

1.2.0 (2013-05-22)

  • Shapely is now optional (used for deserialization only)

  • Add Django to requirements

  • Skip a step in GeoJSON conversion of geometries (fixes #6)

1.1.0 (2013-03-06)

  • Django 1.5 support

  • Fix template tag geojsonfeature on empty geometries

1.0.0 (2012-08-03)

  • Initial working version.

Metadata

Release files for django-geojson 2.7.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

File added late

1 file was uploaded more than 14 days after the first file in this release.

While project maintainers occasionally add legitimate files to an existing release, late additions can also indicate a security compromise.

We recommend inspecting the release files before installing.

Source distribution (sdist)

Source distribution for django-geojson 2.7.0
File Size Uploaded
django-geojson-2.7.0.tar.gz 20.6 kB Details

Release files / django-geojson-2.7.0.tar.gz

File added late

This file was uploaded more than 14 days after the first file in this release.

While project maintainers occasionally add legitimate files to an existing release, late additions can also indicate a security compromise.

We recommend inspecting the release file before installing.

Download URL django-geojson-2.7.0.tar.gz
Size 20.6 kB
Tags Source
SHA-256 checksum
How to use checksums
b05a23218c337e3a78bc4938c652d3e35d59c561ce479d2ed36522da7836fe72
BLAKE2b-256 checksum
How to use checksums
ed2236c1463b03cb6bae8ec28ba7435fd5a0744875b193d6f8f5a27d8158abfd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

4.2.0

2 release files

4.1.0

2 release files

4.0.0

2 release files

3.2.1

2 release files

3.2.0

2 release files

3.1.0

2 release files

3.0.0

1 release file

2.12.0

1 release file

2.11.0

1 release file

2.10.0

1 release file

2.9.1

1 release file

2.9.0

1 release file

2.8.1

1 release file

2.8.0

1 release file

This release

2.7.0 This release

1 release file

2.6.0

1 release file

2.5.0

1 release file

2.4.0

1 release file

2.3.0

1 release file

2.2.0

1 release file

2.1.1

1 release file

2.1.0

1 release file

2.0.1

1 release file

2.0.0

1 release file

1.2.0

1 release file

1.0.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page