From d494a59d6dea797fa3a7306646c434f83f55d820 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Thu, 21 Sep 2017 16:10:01 +0200 Subject: [PATCH] fix geometry that has been invalidated by rounding before saving it --- src/c3nav/mapdata/fields.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/c3nav/mapdata/fields.py b/src/c3nav/mapdata/fields.py index 59a6b025..b82df6e7 100644 --- a/src/c3nav/mapdata/fields.py +++ b/src/c3nav/mapdata/fields.py @@ -76,7 +76,11 @@ class GeometryField(models.TextField): if value is None: return None self._validate_geomtype(value, exception=TypeError) - return json.dumps(format_geojson(mapping(value))) + json_value = format_geojson(mapping(value)) + rounded_value = shape(json_value) + if not rounded_value.is_valid: + json_value = format_geojson(mapping(rounded_value.buffer(0))) + return json.dumps(json_value) class JSONField(models.TextField):