Loading autocnet/cg/cg.py +2 −5 Original line number Diff line number Diff line Loading @@ -62,7 +62,7 @@ def convex_hull(points): return hull def geom_mask(keypoints, geom): def geom_mask(keypoints, geom): # ADDED """ Masks any points that are outside of the bounds of the given geometry. Loading Loading @@ -141,7 +141,7 @@ def get_area(poly1, poly2): return intersection_area def compute_voronoi(keypoints, intersection=None, geometry=False, s=30): def compute_voronoi(keypoints, intersection=None, geometry=False, s=30): # ADDED """ Creates a voronoi diagram for all edges in a graph, and assigns a given weight to each edge. This is based around voronoi polygons generated Loading Loading @@ -188,10 +188,7 @@ def compute_voronoi(keypoints, intersection=None, geometry=False, s=30): if len(polygon_points) != 0: polygon = Polygon(polygon_points) if intersection is not None: intersection_poly = polygon.intersection(intersection) else: intersection_poly = polygon.intersection(min_bounding_box) voronoi_df.loc[(voronoi_df["x"] == region_point[0][0][0]) & (voronoi_df["y"] == region_point[0][0][1]), Loading autocnet/cg/tests/test_cg.py +7 −1 Original line number Diff line number Diff line Loading @@ -60,10 +60,16 @@ class TestArea(unittest.TestCase): self.assertAlmostEquals(voronoi_gdf.weight[3], 7.5) self.assertAlmostEquals(voronoi_gdf.weight[4], 13.5) voronoi_gdf = cg.compute_voronoi(keypoints, geometry=True) self.assertAlmostEquals(voronoi_gdf.geometry[0].area, 12.0) self.assertAlmostEquals(voronoi_gdf.geometry[1].area, 13.5) self.assertAlmostEquals(voronoi_gdf.geometry[2].area, 7.5) self.assertAlmostEquals(voronoi_gdf.geometry[3].area, 7.5) self.assertAlmostEquals(voronoi_gdf.geometry[4].area, 13.5) voronoi_inter_gdf = cg.compute_voronoi(keypoints, intersection) self.assertAlmostEquals(voronoi_inter_gdf.weight[0], 22.5) self.assertAlmostEquals(voronoi_inter_gdf.weight[1], 26.25) self.assertAlmostEquals(voronoi_inter_gdf.weight[2], 37.5) self.assertAlmostEquals(voronoi_inter_gdf.weight[3], 37.5) self.assertAlmostEquals(voronoi_inter_gdf.weight[4], 26.25) autocnet/graph/node.py +15 −1 Original line number Diff line number Diff line Loading @@ -513,7 +513,21 @@ class Node(dict, MutableMapping): matches = self._keypoints[mask] return matches, mask def reproject_geom(self, coords): # pragma: no cover def reproject_geom(self, coords): """ Reprojects a set of latlon coordinates into pixel space using the nodes geodata. These are then returned as a shapely polygon Parameters ---------- coords : ndarray (n, 2) array of latlon coordinates Returns ---------- : object A shapely polygon object made using the reprojected coordinates """ reproj = [] for x, y in coords: Loading autocnet/graph/tests/test_network.py +1 −2 Original line number Diff line number Diff line Loading @@ -235,8 +235,7 @@ def test_intersection(): e.source = cang.node[s] e.destination = cang.node[d] subgraph = cang.create_node_subgraph([0, 1, 2, 3, 4, 5, 6, 7]) intersect_gdf = subgraph.compute_intersection(3) intersect_gdf = cang.compute_intersection(3) # Test the correct areas were found assert intersect_gdf.geometry[0].area == 7.5 Loading autocnet/graph/tests/test_node.py +16 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ import warnings import numpy as np import pandas as pd import shapely.geometry from autocnet.examples import get_path from plio.io.io_gdal import GeoDataset Loading Loading @@ -74,3 +75,18 @@ class TestNode(unittest.TestCase): coverage_percn = self.node.coverage() self.assertAlmostEqual(coverage_percn, 38.06139557) def test_reproj_geom(self): img = get_path('AS15-M-0412_sub4.cub') cub_node = node.Node(image_name='AS15-M-0412_sub4.cub', image_path=img) envelope = cub_node.geodata.footprint.GetEnvelope() coord_list = [(envelope[0], envelope[1]), (envelope[2], envelope[1]), (envelope[2], envelope[3]), (envelope[0], envelope[3])] reproj_geom = cub_node.reproject_geom(coord_list) self.assertEqual(reproj_geom.bounds[0], 5735) self.assertEqual(reproj_geom.bounds[1], 5559) self.assertEqual(reproj_geom.bounds[2], 23798) self.assertEqual(reproj_geom.bounds[3], 27315) Loading
autocnet/cg/cg.py +2 −5 Original line number Diff line number Diff line Loading @@ -62,7 +62,7 @@ def convex_hull(points): return hull def geom_mask(keypoints, geom): def geom_mask(keypoints, geom): # ADDED """ Masks any points that are outside of the bounds of the given geometry. Loading Loading @@ -141,7 +141,7 @@ def get_area(poly1, poly2): return intersection_area def compute_voronoi(keypoints, intersection=None, geometry=False, s=30): def compute_voronoi(keypoints, intersection=None, geometry=False, s=30): # ADDED """ Creates a voronoi diagram for all edges in a graph, and assigns a given weight to each edge. This is based around voronoi polygons generated Loading Loading @@ -188,10 +188,7 @@ def compute_voronoi(keypoints, intersection=None, geometry=False, s=30): if len(polygon_points) != 0: polygon = Polygon(polygon_points) if intersection is not None: intersection_poly = polygon.intersection(intersection) else: intersection_poly = polygon.intersection(min_bounding_box) voronoi_df.loc[(voronoi_df["x"] == region_point[0][0][0]) & (voronoi_df["y"] == region_point[0][0][1]), Loading
autocnet/cg/tests/test_cg.py +7 −1 Original line number Diff line number Diff line Loading @@ -60,10 +60,16 @@ class TestArea(unittest.TestCase): self.assertAlmostEquals(voronoi_gdf.weight[3], 7.5) self.assertAlmostEquals(voronoi_gdf.weight[4], 13.5) voronoi_gdf = cg.compute_voronoi(keypoints, geometry=True) self.assertAlmostEquals(voronoi_gdf.geometry[0].area, 12.0) self.assertAlmostEquals(voronoi_gdf.geometry[1].area, 13.5) self.assertAlmostEquals(voronoi_gdf.geometry[2].area, 7.5) self.assertAlmostEquals(voronoi_gdf.geometry[3].area, 7.5) self.assertAlmostEquals(voronoi_gdf.geometry[4].area, 13.5) voronoi_inter_gdf = cg.compute_voronoi(keypoints, intersection) self.assertAlmostEquals(voronoi_inter_gdf.weight[0], 22.5) self.assertAlmostEquals(voronoi_inter_gdf.weight[1], 26.25) self.assertAlmostEquals(voronoi_inter_gdf.weight[2], 37.5) self.assertAlmostEquals(voronoi_inter_gdf.weight[3], 37.5) self.assertAlmostEquals(voronoi_inter_gdf.weight[4], 26.25)
autocnet/graph/node.py +15 −1 Original line number Diff line number Diff line Loading @@ -513,7 +513,21 @@ class Node(dict, MutableMapping): matches = self._keypoints[mask] return matches, mask def reproject_geom(self, coords): # pragma: no cover def reproject_geom(self, coords): """ Reprojects a set of latlon coordinates into pixel space using the nodes geodata. These are then returned as a shapely polygon Parameters ---------- coords : ndarray (n, 2) array of latlon coordinates Returns ---------- : object A shapely polygon object made using the reprojected coordinates """ reproj = [] for x, y in coords: Loading
autocnet/graph/tests/test_network.py +1 −2 Original line number Diff line number Diff line Loading @@ -235,8 +235,7 @@ def test_intersection(): e.source = cang.node[s] e.destination = cang.node[d] subgraph = cang.create_node_subgraph([0, 1, 2, 3, 4, 5, 6, 7]) intersect_gdf = subgraph.compute_intersection(3) intersect_gdf = cang.compute_intersection(3) # Test the correct areas were found assert intersect_gdf.geometry[0].area == 7.5 Loading
autocnet/graph/tests/test_node.py +16 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ import warnings import numpy as np import pandas as pd import shapely.geometry from autocnet.examples import get_path from plio.io.io_gdal import GeoDataset Loading Loading @@ -74,3 +75,18 @@ class TestNode(unittest.TestCase): coverage_percn = self.node.coverage() self.assertAlmostEqual(coverage_percn, 38.06139557) def test_reproj_geom(self): img = get_path('AS15-M-0412_sub4.cub') cub_node = node.Node(image_name='AS15-M-0412_sub4.cub', image_path=img) envelope = cub_node.geodata.footprint.GetEnvelope() coord_list = [(envelope[0], envelope[1]), (envelope[2], envelope[1]), (envelope[2], envelope[3]), (envelope[0], envelope[3])] reproj_geom = cub_node.reproject_geom(coord_list) self.assertEqual(reproj_geom.bounds[0], 5735) self.assertEqual(reproj_geom.bounds[1], 5559) self.assertEqual(reproj_geom.bounds[2], 23798) self.assertEqual(reproj_geom.bounds[3], 27315)