Ejemplo n.º 1
0
    def test_convert_to_geometry_coordinates_multipolygon(self):
        p1 = 'Polygon ((-116.94238466549290933 52.12861711455555991, -82.00526805089285176 61.59075286434307372, -59.92695130138864101 31.0207758265680269, -107.72286778108455962 22.0438778075388484, -122.76523743459291893 37.08624746104720771, -116.94238466549290933 52.12861711455555991))'
        p2 = 'Polygon ((-63.08099655131782413 21.31602121140134898, -42.70101185946779765 9.42769680782217279, -65.99242293586783603 9.912934538580501, -63.08099655131782413 21.31602121140134898))'
        p1 = wkt.loads(p1)
        p2 = wkt.loads(p2)

        mp1 = MultiPolygon([p1, p2])
        mp2 = mp1.buffer(0.1)
        geoms = [mp1, mp2]
        gvar = GeometryVariable(name='gc', value=geoms, dimensions='gd')

        # Test the element node connectivity arrays.
        results = []
        for pack in [False, True]:
            gc = gvar.convert_to(pack=pack)
            self.assertEqual(gc.dimension_map.get_driver(),
                             DriverKey.NETCDF_UGRID)
            self.assertTrue(gc.has_multi)
            self.assertIn(OcgisConvention.Name.MULTI_BREAK_VALUE,
                          gc.cindex.attrs)
            # Test multi-break values are part of the element node connectivity arrays.
            actual = gc.cindex.get_value()
            for idx, ii in enumerate(actual.flat):
                self.assertGreater(
                    np.sum(ii == OcgisConvention.Value.MULTI_BREAK_VALUE), 0)
            results.append(actual)
            self.assertIsNotNone(gc.x.get_value())
            self.assertIsNotNone(gc.y.get_value())

            maxes = []
            for ii in actual.flat:
                maxes.append(ii.max())
            actual_max = max(maxes)
            for c in [gc.x, gc.y]:
                self.assertEqual(c.size - 1, actual_max)

            geoms = list(gc.iter_geometries())
            for ctr, g in enumerate(geoms):
                self.assertIsInstance(g[1], BaseMultipartGeometry)
            self.assertEqual(ctr, 1)

            self.assertPolygonSimilar(geoms[0][1], mp1)
            self.assertPolygonSimilar(geoms[1][1], mp2)

        for idx in range(len(results[0])):
            self.assertNumpyAll(results[0][idx], results[1][idx])
Ejemplo n.º 2
0
    def test_convert_to_geometry_coordinates_multipolygon(self):
        p1 = 'Polygon ((-116.94238466549290933 52.12861711455555991, -82.00526805089285176 61.59075286434307372, -59.92695130138864101 31.0207758265680269, -107.72286778108455962 22.0438778075388484, -122.76523743459291893 37.08624746104720771, -116.94238466549290933 52.12861711455555991))'
        p2 = 'Polygon ((-63.08099655131782413 21.31602121140134898, -42.70101185946779765 9.42769680782217279, -65.99242293586783603 9.912934538580501, -63.08099655131782413 21.31602121140134898))'
        p1 = wkt.loads(p1)
        p2 = wkt.loads(p2)

        mp1 = MultiPolygon([p1, p2])
        mp2 = mp1.buffer(0.1)
        geoms = [mp1, mp2]
        gvar = GeometryVariable(name='gc', value=geoms, dimensions='gd')

        # Test the element node connectivity arrays.
        results = []
        for pack in [False, True]:
            gc = gvar.convert_to(pack=pack)
            self.assertEqual(gc.dimension_map.get_driver(), DriverKey.NETCDF_UGRID)
            self.assertTrue(gc.has_multi)
            self.assertIn(OcgisConvention.Name.MULTI_BREAK_VALUE, gc.cindex.attrs)
            # Test multi-break values are part of the element node connectivity arrays.
            actual = gc.cindex.get_value()
            for idx, ii in enumerate(actual.flat):
                self.assertGreater(np.sum(ii == OcgisConvention.Value.MULTI_BREAK_VALUE), 0)
            results.append(actual)
            self.assertIsNotNone(gc.x.get_value())
            self.assertIsNotNone(gc.y.get_value())

            maxes = []
            for ii in actual.flat:
                maxes.append(ii.max())
            actual_max = max(maxes)
            for c in [gc.x, gc.y]:
                self.assertEqual(c.size - 1, actual_max)

            geoms = list(gc.iter_geometries())
            for ctr, g in enumerate(geoms):
                self.assertIsInstance(g[1], BaseMultipartGeometry)
            self.assertEqual(ctr, 1)

            self.assertPolygonSimilar(geoms[0][1], mp1)
            self.assertPolygonSimilar(geoms[1][1], mp2)

        for idx in range(len(results[0])):
            self.assertNumpyAll(results[0][idx], results[1][idx])
Ejemplo n.º 3
0
    def test_convert_to_geometry_coordinates_points(self):
        pt1 = Point(1, 2, 3)
        pt2 = Point(3, 4, 4)
        pt3 = Point(5, 6, 5)
        pt4 = Point(7, 8, 6)
        crs = WGS84()
        value = [pt1, pt2, pt3, pt4]
        mask = [True, False, True, False]

        gvar = GeometryVariable(value=value, dimensions='ngeom', crs=crs, mask=mask)

        gvar_mask = gvar.get_mask().tolist()
        self.assertEqual(mask, gvar_mask)
        actual = gvar.convert_to()
        self.assertEqual(actual.get_mask().tolist(), gvar_mask)

        for actual_geom, desired_geom in zip(actual.get_geometry_iterable(use_mask=False), value):
            self.assertEqual(actual_geom[1], desired_geom)

        self.assertEqual(actual.crs, crs)
Ejemplo n.º 4
0
    def test_convert_to_geometry_coordinates_points(self):
        pt1 = Point(1, 2, 3)
        pt2 = Point(3, 4, 4)
        pt3 = Point(5, 6, 5)
        pt4 = Point(7, 8, 6)
        crs = WGS84()
        value = [pt1, pt2, pt3, pt4]
        mask = [True, False, True, False]

        gvar = GeometryVariable(value=value,
                                dimensions='ngeom',
                                crs=crs,
                                mask=mask)

        gvar_mask = gvar.get_mask().tolist()
        self.assertEqual(mask, gvar_mask)
        actual = gvar.convert_to()
        self.assertEqual(actual.get_mask().tolist(), gvar_mask)

        for actual_geom, desired_geom in zip(
                actual.get_geometry_iterable(use_mask=False), value):
            self.assertEqual(actual_geom[1], desired_geom)

        self.assertEqual(actual.crs, crs)