summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQuentinAndre <quentin.andre@imt-atlantique.net>2021-07-06 18:58:53 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2021-09-01 12:36:45 +0200
commit79cff7a266fc1dd4abf4ca749a60fda30dee49d1 (patch)
tree0dfb3a8244cc4b24a72c94cb03c8061a5bd01e32
parent168f9a17ffefb4e95d34b394d39537d70210ae84 (diff)
downloadIshtar-79cff7a266fc1dd4abf4ca749a60fda30dee49d1.tar.bz2
Ishtar-79cff7a266fc1dd4abf4ca749a60fda30dee49d1.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 07e93be96..4e237673a 100644
--- a/archaeological_finds/tests.py
+++ b/archaeological_finds/tests.py
@@ -2517,6 +2517,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 bb1fd4e19..1462d538e 100644
--- a/ishtar_common/models_common.py
+++ b/ishtar_common/models_common.py
@@ -2849,20 +2849,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