diff options
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 |
commit | 0e34062d370da99b1c1711a0045bd639d1add20e (patch) | |
tree | a25c51fe15544468460b93825f8b12d926c05de9 /ishtar_common | |
parent | 34868fbe8f2f733d4d8513c8f5f2b0656f62abff (diff) | |
download | Ishtar-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.py | 7 | ||||
-rw-r--r-- | ishtar_common/utils.py | 9 |
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 |