summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2019-02-19 20:12:56 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2019-04-24 19:38:56 +0200
commit0e34062d370da99b1c1711a0045bd639d1add20e (patch)
treea25c51fe15544468460b93825f8b12d926c05de9 /ishtar_common
parent34868fbe8f2f733d4d8513c8f5f2b0656f62abff (diff)
downloadIshtar-0e34062d370da99b1c1711a0045bd639d1add20e.tar.bz2
Ishtar-0e34062d370da99b1c1711a0045bd639d1add20e.zip
Geom: fi x, y overload by form - geo tests
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/models.py7
-rw-r--r--ishtar_common/utils.py9
2 files changed, 12 insertions, 4 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index 28e469e31..9dd90de65 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -3085,10 +3085,11 @@ class Town(Imported, models.Model):
def generate_area(self, force=False):
if not force and (self.surface or not self.limit):
return
- self.surface = self.limit.transform(settings.SURFACE_SRID,
- clone=True).area
- if not self.surface:
+ surface = self.limit.transform(settings.SURFACE_SRID,
+ clone=True).area
+ if surface > 214748364 or not surface:
return False
+ self.surface = surface
self.save()
return True
diff --git a/ishtar_common/utils.py b/ishtar_common/utils.py
index a263f3640..c9b53c5ee 100644
--- a/ishtar_common/utils.py
+++ b/ishtar_common/utils.py
@@ -499,8 +499,15 @@ def post_save_geo(sender, **kwargs):
current_source = unicode(instance.__class__._meta.verbose_name)
if instance.point_source_item and \
instance.point_source_item != current_source: # refetch
+ csrs = instance.spatial_reference_system
+
+ if instance.x and instance.y:
+ new_point = GEOSGeometry(
+ 'POINT({} {})'.format(instance.x, instance.y), srid=csrs.srid)
+ proj_point = instance.point_2d.transform(csrs.srid, clone=True)
+ if new_point.distance(proj_point) < 0.0001:
+ instance.x, instance.y = None, None
instance.point, instance.point_2d = None, None
- instance.x, instance.y = None, None
instance.point_source = None
point = instance.point