Commit 4759d6a8 authored by Adam Paquette's avatar Adam Paquette
Browse files

Added more tests for the network and node methods.

parent b686e7b0
Loading
Loading
Loading
Loading
+2 −5
Original line number Diff line number Diff line
@@ -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.
@@ -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
@@ -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]),
+7 −1
Original line number Diff line number Diff line
@@ -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)
+15 −1
Original line number Diff line number Diff line
@@ -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:
+1 −2
Original line number Diff line number Diff line
@@ -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
+16 −0
Original line number Diff line number Diff line
@@ -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
@@ -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