- Add
start_date
andend_date
to boundaries. #31 (@mileswwatkins)
- Fix definition file loader to use an importer instead of
eval
#30 (@paultag)- If you were using
re
or other modules imported byboundaries/__init__.py
in your definition files without importing them in your definition files, you must now import them in your definition files.
- If you were using
- Relax
jsonfield
version requirements. - Fix assignment of default
srs
inFeature
class, which was breaking Heroku static assets.
- Fix regression in slugless definition files.
- Eliminate Django 1.7 deprecation warning.
- Set default value on
jsonfield
fields.
- Use
jsonfield
instead ofdjango-jsonfield
.
- Support shapefiles with binary field names.
- Recurse directories and ZIP files in
loadshapefiles
. loadshapefiles
will not create a boundary set if no shapefiles are found.
Identified quirks:
- If a shapefile has
_cleaned_
in its name, it will not be loaded, unless created by Represent Boundaries.
- Fix regression with
loadshapefiles
skip logic.
- Remove the
--database
(-u
) option from theloadshapefiles
management command, which would only specify the database in which to find thespatial_ref_sys
table. - Make non-integer
offset
error message consistent with non-integerlimit
error message. format=wkt
andformat=kml
no longer error in Django 1.7.- I18n support.
- Add tests.
Identified quirks:
- The
shape
,simple_shape
andcentroid
endpoints ignore thepretty
parameter.
- Add
start_date
andend_date
to boundary sets. #21 (@jamesturk) - Remove API throttle, as this is the responsibility of a proxy. #22 (@jamesturk)
- Add templates and static files to package.
- Python 3 compatibility: Fix writing ZIP file contents.
- Django 1.7 compatibility.
- If the
contains
parameter is an invalid latitude and longitude pair, return the invalid pair in the error message.
- Python 3 compatibility. #14 (@jamesturk)
- Fix various small bugs and encoding issues and add help text.
- API
- Add CORS support.
- New API throttle.
- If a request is made with invalid filters, return a 400 error instead of a 500 error.
- JSON
- Add
extent
to the detail of boundary sets. - Add
external_id
to the list of boundaries. - Add
extent
,centroid
andextra
to the detail of boundaries.
- Add
- Loading shapefiles
- Calculate the geographic extent of boundary sets and boundaries.
- Re-load a boundary set if the
last_updated
field in its definition is more recent than in the database, without having to set the--reload
switch. - If two boundaries have the same slug, and the
--merge
option is set tounion
orcombine
, union their geometries or combine their geometries into a MultiPolygon. - Follow symbolic links when walking the shapefiles directory tree.
- If
DEBUG = True
, prompt the user about the risk of high memory consumption. #15 (@jamesturk) - Log an error if a shapefile contains no layers.
- Add an example definition file.
- Definition files
- New
name
field so that a boundary set's slug and name can differ. - New
is_valid_func
field so that features can be excluded when loading a shapefile. - New
extra
field to add free-form metadata.
- New
- ZIP files
- If the
--clean
switch is set, convert 3D features to 2D when loading shapefiles from ZIP files. - Clean up temporary files created by uncompressing ZIP files.
- Support ZIP files containing directories.
- If the
- Management commands
- Add a
compute_intersections
management command to report overlapping boundaries from a pair of boundary sets. - Remove the
startshapedefinitions
management command.
- Add a
This first release is a significant refactoring of django-boundaryservice from this commit. Minor changes may not be logged.
- Don't
SELECT
geometries when retrieving boundary sets from the database. - Fix various small bugs and encoding issues and improve error messages.
- API
- Use plural endpoints
boundary-sets
andboundaries
instead ofboundary-set
andboundary
. - Move boundary detail endpoint from
boundaries/<boundary-slug>/
toboundaries/<boundary-set-slug>/<boundary-slug>/
. - Remove some fields from list endpoints, remove geospatial fields from detail endpoints, and add geospatial endpoints.
- Add a
touches
boundary filter. - Change the semantics of the
intersects
boundary filter from "intersects" to "covers or overlaps". - If the parameter
format=apibrowser
is present, display a HTML version of the JSON response. - Support
format=kml
andformat=wkt
. - JSON
- Rename
name
toname_plural
,singular
toname_singular
, andboundaries
toboundaries_url
on boundary sets. - Move
boundaries_url
underrelated
on boundary sets. - Change
boundaries_url
from a list of boundary detail URLs to a boundary list URL. - Add
licence_url
to the detail of boundary sets. - Remove
slug
,resource_uri
,count
andmetadata_fields
from the detail of boundary sets. - Rename
kind
toboundary_set_name
andset
toboundary_set_url
on boundaries. - Move
boundary_set_url
underrelated
on boundaries. - Add
shape_url
,simple_shape_url
,centroid_url
andboundaries_url
underrelated
to the detail of boundaries. - Remove
slug
,resource_uri
andcentroid
from the detail of boundaries.
- Rename
- Use plural endpoints
- Loading shapefiles
- Allow multiple
definition.py
files anywhere in the shapefiles directory tree, instead of a singledefinitions.py
file. - Use EPSG:4326 (WGS 84, Google Maps) instead of EPSG:4269 (NAD 83, US Census) by default.
- Add a
--reload
switch to re-load shapefiles that have already been loaded. - Remove the
--clear
switch. - Make the simplification tolerance configurable.
- Definition files
- Rename
ider
toid_func
,namer
toname_func
, andhref
tosource_url
. - New
slug_func
to set a custom slug. - New
licence_url
field to link to a data license. - If
singular
,id_func
orslug_func
are not set, use sensible defaults.
- Rename
- Allow multiple