Example #1
0
    def test_union_geometry(self):
        """Test union_geometry work"""

        # Create big polygons from the point layer,
        # then the union is one BIG polygon
        dx = dy = 10
        points = self._create_points()
        polygons = points_to_rectangles(points, dx, dy)
        geom = union_geometry(polygons)

        # The union is the rectangle
        # noinspection PyCallByClass,PyTypeChecker
        expected_area = QgsGeometry.fromPolygon([[
            QgsPoint(10, 30),
            QgsPoint(40, 30),
            QgsPoint(40, 0),
            QgsPoint(10, 0)]])

        self.assertTrue(geom.isGeosValid())
        self.assertFalse(geom.isMultipart())
        self.assertAlmostEquals(geom.area(), 3 * dx * 3 * dy)
        self.assertTrue((geom.isGeosEqual(expected_area)))

        polygons = points_to_rectangles(points, 0.5 * dx, 0.5 * dy)
        geom = union_geometry(polygons)
        # The union is 9 squares
        self.assertAlmostEquals(geom.area(), 1.5 * dx * 1.5 * dy)
        self.assertTrue(geom.isMultipart())
Example #2
0
    def test_union_geometry(self):
        """Test union_geometry work"""

        # Create big polygons from the point layer,
        # then the union is one BIG polygon
        dx = dy = 10
        points = self._create_points()
        polygons = points_to_rectangles(points, dx, dy)
        geom = union_geometry(polygons)

        # The union is the rectangle
        # noinspection PyCallByClass,PyTypeChecker
        expected_area = QgsGeometry.fromPolygon([[
            QgsPoint(10, 30),
            QgsPoint(40, 30),
            QgsPoint(40, 0),
            QgsPoint(10, 0)
        ]])

        self.assertTrue(geom.isGeosValid())
        self.assertFalse(geom.isMultipart())
        self.assertAlmostEquals(geom.area(), 3 * dx * 3 * dy)
        self.assertTrue((geom.isGeosEqual(expected_area)))

        polygons = points_to_rectangles(points, 0.5 * dx, 0.5 * dy)
        geom = union_geometry(polygons)
        # The union is 9 squares
        self.assertAlmostEquals(geom.area(), 1.5 * dx * 1.5 * dy)
        self.assertTrue(geom.isMultipart())
Example #3
0
    def test_points_to_rectangles(self):
        """Test points_to_rectangles work
        """
        points = self._create_points()
        x_index = points.dataProvider().fieldNameIndex('X')
        y_index = points.dataProvider().fieldNameIndex('Y')
        dx, dy = 1, 2
        polygons = points_to_rectangles(points, dx, dy)
        for feature in polygons.getFeatures():
            geom = feature.geometry()
            attr = feature.attributes()

            self.assertTrue(geom.isGeosValid())
            self.assertAlmostEquals(geom.area(), dx * dy)

            p = geom.centroid().asPoint()
            x, y = [attr[index] for index in [x_index, y_index]]
            self.assertLess(abs(p.x() - x), dx)
            self.assertLess(abs(p.y() - y), dy)
Example #4
0
    def test_points_to_rectangles(self):
        """Test points_to_rectangles work
        """
        points = self._create_points()
        x_index = points.dataProvider().fieldNameIndex('X')
        y_index = points.dataProvider().fieldNameIndex('Y')
        dx, dy = 1, 2
        polygons = points_to_rectangles(points, dx, dy)
        for feature in polygons.getFeatures():
            geom = feature.geometry()
            attr = feature.attributes()

            self.assertTrue(geom.isGeosValid())
            self.assertAlmostEquals(geom.area(), dx * dy)

            p = geom.centroid().asPoint()
            x, y = [attr[index] for index in [x_index, y_index]]
            self.assertLess(abs(p.x() - x), dx)
            self.assertLess(abs(p.y() - y), dy)