summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2019-04-09 14:06:55 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2019-04-24 19:42:35 +0200
commitf926f9cd39f1b3c8effaab70a8b65ba2a665feb9 (patch)
treedb20abceb00537bce3595c93fcbaff9843259a00
parent9314326c84f06b205ac663cb7b3aa92f6f89d135 (diff)
downloadIshtar-f926f9cd39f1b3c8effaab70a8b65ba2a665feb9.tar.bz2
Ishtar-f926f9cd39f1b3c8effaab70a8b65ba2a665feb9.zip
Geom: more tests
-rw-r--r--archaeological_finds/tests.py45
-rw-r--r--ishtar_common/utils.py3
2 files changed, 46 insertions, 2 deletions
diff --git a/archaeological_finds/tests.py b/archaeological_finds/tests.py
index 4713f2bcd..3c9995632 100644
--- a/archaeological_finds/tests.py
+++ b/archaeological_finds/tests.py
@@ -1655,7 +1655,7 @@ class GeomaticTest(FindInit, TestCase):
'((6 3,9 2,9 4,6 3)))'
cr = ContextRecord.objects.get(pk=base_find.context_record.pk)
t = cr.town
- t.center ='SRID=4326;' + center
+ t.center = 'SRID=4326;' + center
t.limit = 'SRID=4326;' + limit
t.save()
cr = ContextRecord.objects.get(pk=base_find.context_record.pk)
@@ -1684,6 +1684,31 @@ class GeomaticTest(FindInit, TestCase):
self.assertEqual(base_find.point_source_item,
unicode(ContextRecord._meta.verbose_name))
+ # geom from context record
+ center = 'POINT(8 6)'
+ cr = ContextRecord.objects.get(pk=base_find.context_record.pk)
+ cr.point_2d = 'SRID=4326;' + center
+ cr.point_source = 'P'
+ cr.point_source_item = unicode(ContextRecord._meta.verbose_name)
+ cr.save()
+ cr = ContextRecord.objects.get(pk=base_find.context_record.pk)
+ cr.x = cr.point_2d.x
+ cr.y = cr.point_2d.y
+ cr.save()
+ cr = ContextRecord.objects.get(pk=base_find.context_record.pk)
+ base_find = models.BaseFind.objects.get(pk=base_find.pk)
+ base_find.save()
+ base_find = models.BaseFind.objects.get(pk=base_find.pk)
+ bfp = GEOSGeometry(base_find.point_2d.ewkt)
+ bfp.transform(4326)
+ tp = GEOSGeometry(cr.point_2d.ewkt)
+ tp.transform(4326)
+ self.assertTrue(bfp.distance(tp) < 0.0001)
+ self.assertEqual(base_find.multi_polygon, cr.multi_polygon)
+ self.assertEqual(base_find.point_source, 'P') # precise
+ self.assertEqual(base_find.point_source_item,
+ unicode(ContextRecord._meta.verbose_name))
+
# overload of coordinates by form
base_find = models.BaseFind.objects.get(pk=base_find.pk)
base_find.x = 5
@@ -1741,6 +1766,24 @@ class GeomaticTest(FindInit, TestCase):
self.assertIsNotNone(base_find.point_2d)
self.assertEqual(base_find.point_source, 'M') # from multi polygon
+ # geom from context record
+ limit = 'MULTIPOLYGON(((1 1,5 1,5 5,1 5,1 1),(2 2,2 3,3 3,3 2,2 2)),' \
+ '((6 3,9 2,9 4,6 3)))'
+ cr = ContextRecord.objects.get(pk=base_find.context_record.pk)
+ cr.multi_polygon = 'SRID=4326;' + limit
+ cr.multi_polygon_source = 'P'
+ cr.multi_polygon_source_item = unicode(ContextRecord._meta.verbose_name)
+ cr.save()
+ cr = ContextRecord.objects.get(pk=base_find.context_record.pk)
+ base_find = models.BaseFind.objects.get(pk=base_find.pk)
+ base_find.multi_polygon_source_item = "hop"
+ base_find.save()
+ base_find = models.BaseFind.objects.get(pk=base_find.pk)
+ self.assertEqual(base_find.multi_polygon, cr.multi_polygon)
+ self.assertEqual(base_find.multi_polygon_source, 'P') # precise
+ self.assertEqual(base_find.multi_polygon_source_item,
+ unicode(ContextRecord._meta.verbose_name))
+
base_find = models.BaseFind.objects.get(pk=base_find.pk)
base_find.point_source = None
base_find.spatial_reference_system = srs
diff --git a/ishtar_common/utils.py b/ishtar_common/utils.py
index 3054d4a19..401f88f82 100644
--- a/ishtar_common/utils.py
+++ b/ishtar_common/utils.py
@@ -588,7 +588,8 @@ def post_save_geo(sender, **kwargs):
elif instance.x and instance.y and \
instance.spatial_reference_system and \
instance.spatial_reference_system.auth_name == 'EPSG' and \
- instance.spatial_reference_system.srid != 0: # form input
+ instance.spatial_reference_system.srid != 0:
+ # form input or already precise
try:
point_2d = convert_coordinates_to_point(
instance.x, instance.y,