DjangoCon Europe 2016 - Let's Talk Geo: Adding the "Where" to Your Django Project

Speaker: Corryn Smith (twitter) is a grad student and used GeoDjango for Environmental Spatial Analysis.

What is GIS?

Geographic Information Systems. Includes environmental studies plus the IT side. It deals with creating, sotring, manipulating, analyzing and displaying spatial data (data of the earth), dealing with different projectsions, cooridante systems etc.

Everybody uses maps to find places. Use GIS to alyze places: Where to put the next business, where to build a park, mapping trails, look how the land has changed over a timespan.

GIS visualizes your data, and visualizations are powerful and easily understood! They can visualize different kinds of data: Points of Interest, Elevation, Physical Features, Routes, Spacial Patterns to find problems.

"Where" is important

Show accessibility. Show potential problems (poor areas without stores, when people don't have cars …).

How can programmers use maps?

  • Display Service Areas: pizza services
  • Points of Interest on a Blog: restaurant list
  • Density maps/Thematic maps: attendees' countries of origin

Maps with Python and Django

There is ArcMap from the ESRI Suite. Automate tasks with ArcPi. This is closed-source and expensive. There is also qgis: open source, free, but not popular

There is also GeoDjango with an amazing tutorial, which might be hard to understand.

Spatial Database

Your database needs the capability to hold geometry data: Postgres and an extension required.

Geographic Data

Geographic Data contains Points, Lines and Polygons, with these files, that need to be added to the app: - .shx (shape index format) - .shp (shape format/geometry) - .dbf (attribute data) - one other

Sources: - historical and boundary files - by country and subject - land use change over time

Geographic Model

See the tutorial. Models should duplicate the fields in the shapefile, and will be loaded with a

Django Admin

GIS provides an Admin. Don't use it to edit the data unless you are ready to lose all of it.

Geo-Friendly API

API is provided via a serializer and json_views.


Use mapbox to add a map (like, background) to the project, then call the Data in via your API. Use leaflet to write css for map appearance.