summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQuentin André <quentin.andre@imt-atlantique.net>2021-07-06 18:58:53 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2022-07-08 09:58:48 +0200
commit7d8e7d7726bf87600da7e51bcce5e82a166231d5 (patch)
treef9830f17a8cfa5aa46ad43b2685d722283177065
parentc39d2d8a7e904467c1ed9f719da3c17894ceed83 (diff)
downloadIshtar-7d8e7d7726bf87600da7e51bcce5e82a166231d5.tar.bz2
Ishtar-7d8e7d7726bf87600da7e51bcce5e82a166231d5.zip
test + geo_get_items
-rw-r--r--archaeological_finds/tests.py14
-rw-r--r--ishtar_common/models_common.py29
2 files changed, 30 insertions, 13 deletions
diff --git a/archaeological_finds/tests.py b/archaeological_finds/tests.py
index 8cac07812..51da0d879 100644
--- a/archaeological_finds/tests.py
+++ b/archaeological_finds/tests.py
@@ -2535,6 +2535,20 @@ class GeomaticTest(FindInit, TestCase):
base_find = models.BaseFind.objects.get(pk=base_find.pk)
+ # with point
+ geom = GEOSGeometry("POINT({} {} {})".format(2, 43, 1), srid=4326)
+ base_find.point = geom
+ base_find.multi_polygon = None
+ base_find.save()
+ base_find = models.BaseFind.objects.get(pk=base_find.pk)
+ dic = {"centroid": (2.0, 43.0)}
+ res = base_find.get_geo_items(get_polygons=True)
+ self.assertEqual(dic, res)
+ res = base_find.get_geo_items(get_polygons=False)
+ self.assertEqual(dic, res)
+
+ # with multi-polygon
+ base_find = models.BaseFind.objects.get(pk=base_find.pk)
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)))"
diff --git a/ishtar_common/models_common.py b/ishtar_common/models_common.py
index f21a74a12..ebf9fbc41 100644
--- a/ishtar_common/models_common.py
+++ b/ishtar_common/models_common.py
@@ -2858,20 +2858,23 @@ class GeoItem(models.Model):
def get_geo_items(self, get_polygons=False, rounded=True):
dict = {}
- if get_polygons and self.multi_polygon:
+ if self.multi_polygon:
i = 0
- for polygon in self.multi_polygon:
- i += 1
- for linearRing in range(len(polygon)):
- if linearRing == 0:
- key = "external"
- else:
- key = "internal"
- key += "Polygon" + str(i)
- dict[key] = []
- for coords in polygon[linearRing]:
- point_2d = GEOSGeometry("POINT({} {})".format(coords[0], coords[1]), srid=self.multi_polygon.srid)
- dict[key].append(self.convert_coordinates(point_2d, rounded))
+ if get_polygons:
+ for polygon in self.multi_polygon:
+ i += 1
+ for linearRing in range(len(polygon)):
+ if linearRing == 0:
+ key = "external"
+ else :
+ key = "internal"
+ key += "Polygon" + str(i)
+ dict[key] = []
+ for coords in polygon[linearRing]:
+ point_2d = GEOSGeometry("POINT({} {})".format(coords[0], coords[1]), srid=self.multi_polygon.srid)
+ dict[key].append(self.convert_coordinates(point_2d, rounded))
+ else:
+ dict["centroid"] = self.convert_coordinates(self.multi_polygon.centroid, rounded)
else:
dict["centroid"] = self.display_coordinates
return dict