Ejemplo n.º 1
0
    def test_refactor_field(self):
        print('\nINFO: Validating refactor field for boundary layer ...')

        dict_layers_to_check = {
            self.db_gpkg_test.names.OP_BOUNDARY_T:
            self.db_gpkg_empty.names.OP_BOUNDARY_T,
            self.db_gpkg_test.names.OP_PLOT_T:
            self.db_gpkg_empty.names.OP_PLOT_T,
            self.db_gpkg_test.names.OP_PARCEL_T:
            self.db_gpkg_empty.names.OP_PARCEL_T,
            self.db_gpkg_test.names.OP_BOUNDARY_POINT_T:
            self.db_gpkg_empty.names.OP_BOUNDARY_POINT_T,
            self.db_gpkg_test.names.OP_CONTROL_POINT_T:
            self.db_gpkg_empty.names.OP_CONTROL_POINT_T,
            self.db_gpkg_test.names.OP_SURVEY_POINT_T:
            self.db_gpkg_empty.names.OP_SURVEY_POINT_T,
            self.db_gpkg_test.names.OP_PARTY_T:
            self.db_gpkg_empty.names.OP_PARTY_T,
            self.db_gpkg_test.names.OP_ADMINISTRATIVE_SOURCE_T:
            self.db_gpkg_empty.names.OP_ADMINISTRATIVE_SOURCE_T,
            self.db_gpkg_test.names.OP_BUILDING_T:
            self.db_gpkg_empty.names.OP_BUILDING_T,
            self.db_gpkg_test.names.OP_BUILDING_UNIT_T:
            self.db_gpkg_empty.names.OP_BUILDING_UNIT_T
        }

        feature_count_test = {
            self.db_gpkg_test.names.OP_BOUNDARY_T: 154,
            self.db_gpkg_test.names.OP_PLOT_T: 52,
            self.db_gpkg_test.names.OP_PARCEL_T: 51,
            self.db_gpkg_test.names.OP_BOUNDARY_POINT_T: 390,
            self.db_gpkg_test.names.OP_CONTROL_POINT_T: 0,
            self.db_gpkg_test.names.OP_SURVEY_POINT_T: 53,
            self.db_gpkg_test.names.OP_PARTY_T: 36,
            self.db_gpkg_test.names.OP_ADMINISTRATIVE_SOURCE_T: 50,
            self.db_gpkg_test.names.OP_BUILDING_T: 17,
            self.db_gpkg_test.names.OP_BUILDING_UNIT_T: 29
        }

        for layer_name_test, layer_name_empty in dict_layers_to_check.items():
            layer = self.qgis_utils.get_layer(self.db_gpkg_test,
                                              layer_name_test,
                                              load=True)
            test_layer = self.qgis_utils.get_layer(self.db_gpkg_empty,
                                                   layer_name_empty,
                                                   load=True)
            self.assertEqual(layer.featureCount(),
                             feature_count_test[layer_name_test],
                             'Error in {}'.format(layer_name_test))
            self.assertEqual(test_layer.featureCount(), 0,
                             'Error in {}'.format(layer_name_test))

            print(
                "Import data from test db to empty db for {} using refactor fields"
                .format(layer_name_test))
            run_etl_model(self.db_gpkg_empty.names, layer, test_layer,
                          layer_name_empty)
            self.assertEqual(test_layer.featureCount(),
                             feature_count_test[layer_name_test],
                             'Error in {}'.format(layer_name_test))
Ejemplo n.º 2
0
 def upload_points_from_csv_crs_wgs84(self, csv_layer, schema):
     print("Copying CSV data in WGS84...")
     self.boundary_point_layer_resolve_domains_for_test(csv_layer)
     test_layer = self.qgis_utils.get_layer(self.db_pg,
                                            self.names.OP_BOUNDARY_POINT_T,
                                            load=True)
     run_etl_model(self.names, csv_layer, test_layer,
                   self.names.OP_BOUNDARY_POINT_T)
     self.validate_number_of_boundary_points_in_db(schema, 3)
Ejemplo n.º 3
0
 def upload_points_from_csv(self, csv_layer, schema):
     print("Copying CSV data with no elevation...")
     self.boundary_point_layer_resolve_domains_for_test(csv_layer)
     test_layer = self.qgis_utils.get_layer(self.db_pg,
                                            self.names.OP_BOUNDARY_POINT_T,
                                            load=True)
     run_etl_model(self.names, csv_layer, test_layer,
                   self.names.OP_BOUNDARY_POINT_T)
     self.assertEqual(test_layer.featureCount(), 51)
     self.validate_number_of_boundary_points_in_db(schema, 51)
Ejemplo n.º 4
0
    def upload_points_from_csv_overlapping(self, csv_layer, schema):
        print('Uploading points from csv overlapping...')
        overlapping = self.geometry.get_overlapping_points(csv_layer)

        if not overlapping:
            self.boundary_point_layer_resolve_domains_for_test(csv_layer)
            test_layer = self.qgis_utils.get_layer(
                self.db_pg, self.names.OP_BOUNDARY_POINT_T, load=True)
            run_etl_model(self.names, csv_layer, test_layer,
                          self.names.OP_BOUNDARY_POINT_T)

        self.validate_number_of_boundary_points_in_db(schema, 0)
Ejemplo n.º 5
0
    def test_valid_import_geom_2d_to_db_postgres(self):
        print('\nINFO: Validating ETL-Model from [ Point, PointZ, PointM, PointZM ] to Point (Postgres) geometries...')
        print('\nUSING POSTGRESQL SCHEMA')

        test_layer = self.qgis_utils.get_layer(self.db_connection, BOUNDARY_POINT_TABLE, load=True)

        # Point To Point
        print("Validating Point to Point")
        point_layer = self.qgis_utils.get_layer(self.db_distinct_geoms, 'points', load=True)
        self.assertTrue(point_layer.isValid())
        run_etl_model(point_layer, out_layer=test_layer)
        print("Info: Validating geometry Point...")
        self.assertEqual(QgsWkbTypes.PointGeometry, test_layer.type())
        self.assertEqual(QgsWkbTypes.Point, test_layer.wkbType())
        self.assertEqual(test_layer.featureCount(), 51)

        self.delete_features(test_layer)
        self.assertEqual(test_layer.featureCount(), 0)

        # PointZ To Point
        print("Validating PointZ to Point")
        point_layer = self.qgis_utils.get_layer(self.db_distinct_geoms, 'points_z', load=True)
        self.assertTrue(point_layer.isValid())
        self.assertIn(point_layer.wkbType(), [QgsWkbTypes.PointZ, QgsWkbTypes.Point25D])
        run_etl_model(point_layer, out_layer=test_layer)
        print("Info: Validating geometry PointZ...", test_layer.wkbType())
        self.assertEqual(QgsWkbTypes.PointGeometry, test_layer.type())
        self.assertEqual(QgsWkbTypes.Point, test_layer.wkbType())
        self.assertEqual(test_layer.featureCount(), 51)

        self.delete_features(test_layer)
        self.assertEqual(test_layer.featureCount(), 0)

        # PointM To Point
        print("Validating PointM To Point")
        point_layer = self.qgis_utils.get_layer(self.db_distinct_geoms, 'points_m', load=True)
        self.assertTrue(point_layer.isValid())
        run_etl_model(point_layer, out_layer=test_layer)
        print("Info: Validating geometry PointZ...", test_layer.wkbType())
        self.assertEqual(QgsWkbTypes.PointGeometry, test_layer.type())
        self.assertEqual(QgsWkbTypes.PointM, point_layer.wkbType())
        self.assertEqual(QgsWkbTypes.Point, test_layer.wkbType())
        self.assertEqual(test_layer.featureCount(), 51)

        self.delete_features(test_layer)
        self.assertEqual(test_layer.featureCount(), 0)

        # PointZM To Point
        print("Validating PointZM To Point")
        point_layer = self.qgis_utils.get_layer(self.db_distinct_geoms, 'points_zm', load=True)
        self.assertTrue(point_layer.isValid())
        run_etl_model(point_layer, out_layer=test_layer)
        print("Info: Validating geometry PointZ...", test_layer.wkbType())
        self.assertEqual(QgsWkbTypes.PointGeometry, test_layer.type())
        self.assertEqual(QgsWkbTypes.PointZM, point_layer.wkbType())
        self.assertEqual(QgsWkbTypes.Point, test_layer.wkbType())
        self.assertEqual(test_layer.featureCount(), 51)

        self.delete_features(test_layer)
        self.assertEqual(test_layer.featureCount(), 0)
Ejemplo n.º 6
0
    def test_valid_import_geom_3d_to_db_postgres(self):
        print('\nINFO: Validating ETL-Model from [ Point, PointZ, PointM, PointZM ] to PointZ (Postgres) geometries...')

        res, code, msg = self.db_pg.test_connection()
        self.assertTrue(res, msg)

        res, code, msg = self.db_distinct_geoms.test_connection()
        self.assertTrue(res, msg)
        self.assertIsNotNone(self.db_pg.names.LC_BOUNDARY_POINT_T, 'Names is None')

        test_layer = self.app.core.get_layer(self.db_pg, self.db_pg.names.LC_BOUNDARY_POINT_T, load=True)

        print("Validating Point to PointZ")
        point_layer = self.app.core.get_layer(self.db_distinct_geoms, 'points', load=True)
        self.assertTrue(point_layer.isValid())
        self.assertEqual(point_layer.wkbType(), QgsWkbTypes.Point)
        run_etl_model(self.db_pg.names, point_layer, test_layer, self.db_pg.names.LC_BOUNDARY_POINT_T)
        print("Info: Validating geometry Point...")
        self.assertEqual(test_layer.wkbType(), QgsWkbTypes.PointZ)
        self.assertEqual(test_layer.featureCount(), 51)

        delete_features(test_layer)
        self.assertEqual(test_layer.featureCount(), 0)

        print("Validating PointZ to PointZ")
        point_layer = self.app.core.get_layer(self.db_distinct_geoms, 'points_z', load=True)
        self.assertTrue(point_layer.isValid())
        self.assertIn(point_layer.wkbType(), [QgsWkbTypes.PointZ, QgsWkbTypes.Point25D])
        run_etl_model(self.db_pg.names, point_layer, test_layer, self.db_pg.names.LC_BOUNDARY_POINT_T)
        print("Info: Validating geometry PointZ...", test_layer.wkbType())
        self.assertEqual(test_layer.wkbType(), QgsWkbTypes.PointZ)
        self.assertEqual(test_layer.featureCount(), 51)

        delete_features(test_layer)
        self.assertEqual(test_layer.featureCount(), 0)

        print("Validating PointM To PointZ")
        point_layer = self.app.core.get_layer(self.db_distinct_geoms, 'points_m', load=True)
        self.assertTrue(point_layer.isValid())
        self.assertEqual(point_layer.wkbType(), QgsWkbTypes.PointM)
        run_etl_model(self.db_pg.names, point_layer, test_layer, self.db_pg.names.LC_BOUNDARY_POINT_T)
        print("Info: Validating geometry PointZ...", test_layer.wkbType())
        self.assertEqual(test_layer.wkbType(), QgsWkbTypes.PointZ)
        self.assertEqual(test_layer.featureCount(), 51)

        delete_features(test_layer)
        self.assertEqual(test_layer.featureCount(), 0)

        print("Validating PointZM To PointZ")
        point_layer = self.app.core.get_layer(self.db_distinct_geoms, 'points_zm', load=True)
        self.assertTrue(point_layer.isValid())
        self.assertEqual(point_layer.wkbType(), QgsWkbTypes.PointZM)
        run_etl_model(self.db_pg.names, point_layer, test_layer, self.db_pg.names.LC_BOUNDARY_POINT_T)
        print("Info: Validating geometry PointZ...", test_layer.wkbType())
        self.assertEqual(test_layer.wkbType(), QgsWkbTypes.PointZ)
        self.assertEqual(test_layer.featureCount(), 51)

        delete_features(test_layer)
        self.assertEqual(test_layer.featureCount(), 0)
    def test_valid_import_geom_3d_to_db_gpkg(self):
        print('\nINFO: Validating ETL-Model from [ Point, PointZ, PointM, PointZM ] to PointZ geometries...')

        test_layer_3d = self.qgis_utils.get_layer(self.db_connection_3d, BOUNDARY_POINT_TABLE, load=True)

        # Point To PointZ
        print("Validating Point to PointZ")
        uri = self.gpkg_path + '|layername={layername}'.format(layername='points')
        point_layer = QgsVectorLayer(uri, 'points', 'ogr')
        print("Is Valid layer :", point_layer.isValid())
        run_etl_model(point_layer, out_layer=test_layer_3d)
        print("Info: Validating geometry Point...")
        self.assertEqual(QgsWkbTypes.PointGeometry, test_layer_3d.type())
        self.assertEqual(QgsWkbTypes.Point, point_layer.wkbType())
        self.assertEqual(QgsWkbTypes.PointZ, test_layer_3d.wkbType())
        self.assertEqual(test_layer_3d.featureCount(), 51)
        test_layer_3d.startEditing()
        clean_table('test_ladm_col_3d', BOUNDARY_POINT_TABLE)
        test_layer_3d.dataProvider().truncate()

        # PointZ To PointZ
        print("Validating PointZ to PointZ")
        uri = self.gpkg_path + '|layername={layername}'.format(layername='points_Z')
        point_layer = QgsVectorLayer(uri, 'points', 'ogr')
        run_etl_model(point_layer, out_layer=test_layer_3d)
        print("Info: Validating geometry PointZ...", test_layer_3d.wkbType())
        self.assertEqual(QgsWkbTypes.PointGeometry, test_layer_3d.type())
        self.assertIn(point_layer.wkbType(), [QgsWkbTypes.PointZ, QgsWkbTypes.Point25D])
        self.assertEqual(QgsWkbTypes.PointZ, test_layer_3d.wkbType())
        self.assertEqual(test_layer_3d.featureCount(), 51)
        clean_table('test_ladm_col_3d', BOUNDARY_POINT_TABLE)
        test_layer_3d.dataProvider().truncate()

        # PointM To PointZ
        print("Validating PointM To PointZ")
        uri = self.gpkg_path + '|layername={layername}'.format(layername='points_M')
        point_layer = QgsVectorLayer(uri, 'points', 'ogr')
        run_etl_model(point_layer, out_layer=test_layer_3d)
        print("Info: Validating geometry PointZ...", test_layer_3d.wkbType())
        self.assertEqual(QgsWkbTypes.PointGeometry, test_layer_3d.type())
        self.assertEqual(QgsWkbTypes.PointM, point_layer.wkbType())
        self.assertEqual(QgsWkbTypes.PointZ, test_layer_3d.wkbType())
        self.assertEqual(test_layer_3d.featureCount(), 51)
        clean_table('test_ladm_col_3d', BOUNDARY_POINT_TABLE)
        test_layer_3d.dataProvider().truncate()

        # PointZM To PointZ
        print("Validating PointZM To PointZ")
        uri = self.gpkg_path + '|layername={layername}'.format(layername='points_ZM')
        point_layer = QgsVectorLayer(uri, 'points', 'ogr')
        run_etl_model(point_layer, out_layer=test_layer_3d)
        print("Info: Validating geometry PointZ...", test_layer_3d.wkbType())
        self.assertEqual(QgsWkbTypes.PointGeometry, test_layer_3d.type())
        self.assertEqual(QgsWkbTypes.PointZM, point_layer.wkbType())
        self.assertEqual(QgsWkbTypes.PointZ, test_layer_3d.wkbType())
        self.assertEqual(test_layer_3d.featureCount(), 51)
        clean_table('test_ladm_col_3d', BOUNDARY_POINT_TABLE)
        test_layer_3d.dataProvider().truncate()
    def test_valid_import_geom_3d_to_db_postgres(self):
        print(
            '\nINFO: Validating ETL-Model from [ Point, PointZ, PointM, PointZM ] to PointZ (Postgres) geometries...'
        )

        test_layer_3d = self.qgis_utils.get_layer(self.db_connection_3d,
                                                  BOUNDARY_POINT_TABLE,
                                                  load=True)
        test_layer_3d.startEditing()

        # Point To PointZ
        print("Validating Point to PointZ")
        point_layer = self.qgis_utils.get_layer(self.test_connection,
                                                'points',
                                                load=True)
        run_etl_model(point_layer, out_layer=test_layer_3d)
        print("Info: Validating geometry Point...")
        self.assertEqual(QgsWkbTypes.PointGeometry, test_layer_3d.type())
        self.assertEqual(QgsWkbTypes.Point, point_layer.wkbType())
        self.assertEqual(QgsWkbTypes.PointZ, test_layer_3d.wkbType())
        self.assertEqual(test_layer_3d.featureCount(), 51)

        # PointZ To PointZ
        print("Validating PointZ to PointZ")
        point_layer = self.qgis_utils.get_layer(self.test_connection,
                                                'points_z',
                                                load=True)
        run_etl_model(point_layer, out_layer=test_layer_3d)
        print("Info: Validating geometry PointZ...", test_layer_3d.wkbType())
        self.assertEqual(QgsWkbTypes.PointGeometry, test_layer_3d.type())
        self.assertIn(point_layer.wkbType(),
                      [QgsWkbTypes.PointZ, QgsWkbTypes.Point25D])
        self.assertEqual(QgsWkbTypes.PointZ, test_layer_3d.wkbType())
        self.assertEqual(test_layer_3d.featureCount(), 51)

        # PointM To PointZ
        print("Validating PointM To PointZ")
        point_layer = self.qgis_utils.get_layer(self.test_connection,
                                                'points_m',
                                                load=True)
        run_etl_model(point_layer, out_layer=test_layer_3d)
        print("Info: Validating geometry PointZ...", test_layer_3d.wkbType())
        self.assertEqual(QgsWkbTypes.PointGeometry, test_layer_3d.type())
        self.assertEqual(QgsWkbTypes.PointM, point_layer.wkbType())
        self.assertEqual(QgsWkbTypes.PointZ, test_layer_3d.wkbType())
        self.assertEqual(test_layer_3d.featureCount(), 51)

        # PointZM To PointZ
        print("Validating PointZM To PointZ")
        point_layer = self.qgis_utils.get_layer(self.test_connection,
                                                'points_zm',
                                                load=True)
        run_etl_model(point_layer, out_layer=test_layer_3d)
        print("Info: Validating geometry PointZ...", test_layer_3d.wkbType())
        self.assertEqual(QgsWkbTypes.PointGeometry, test_layer_3d.type())
        self.assertEqual(QgsWkbTypes.PointZM, point_layer.wkbType())
        self.assertEqual(QgsWkbTypes.PointZ, test_layer_3d.wkbType())
        self.assertEqual(test_layer_3d.featureCount(), 51)
Ejemplo n.º 9
0
    def test_valid_import_geom_3d_to_db_gpkg(self):
        print(
            '\nINFO: Validating ETL-Model from [ Point, PointZ, PointM, PointZM ] to Point geometries...'
        )
        result = self.db_pg.test_connection()
        result_distinct = self.db_distinct_geoms.test_connection()
        self.assertTrue(result[0],
                        'The test connection is not working for empty db')
        self.assertTrue(result_distinct[0],
                        'The test connection is not working for distinct db')
        self.assertIsNotNone(self.db_pg.names.OP_BOUNDARY_POINT_T,
                             'Names is None')

        test_layer = self.qgis_utils.get_layer(
            self.db_pg, self.db_pg.names.OP_BOUNDARY_POINT_T, load=True)

        print("Validating Point to Point")
        uri = self.gpkg_path + '|layername={layername}'.format(
            layername='points')
        point_layer = QgsVectorLayer(uri, 'points', 'ogr')
        self.assertTrue(point_layer.isValid())
        self.assertEqual(point_layer.wkbType(), QgsWkbTypes.Point)
        run_etl_model(self.db_pg.names, point_layer, test_layer,
                      self.db_pg.names.OP_BOUNDARY_POINT_T)
        print("Info: Validating geometry Point...")
        self.assertEqual(test_layer.wkbType(), QgsWkbTypes.PointZ)
        self.assertEqual(test_layer.featureCount(), 51)

        delete_features(test_layer)
        self.assertEqual(test_layer.featureCount(), 0)

        print("Validating PointZ to Point")
        uri = self.gpkg_path + '|layername={layername}'.format(
            layername='points_Z')
        point_layer = QgsVectorLayer(uri, 'points_Z', 'ogr')
        self.assertTrue(point_layer.isValid())
        self.assertIn(point_layer.wkbType(),
                      [QgsWkbTypes.PointZ, QgsWkbTypes.Point25D])
        output = run_etl_model(self.db_pg.names, point_layer, test_layer,
                               self.db_pg.names.OP_BOUNDARY_POINT_T)
        print("Info: Validating geometry PointZ...", test_layer.wkbType())
        self.assertEqual(test_layer.wkbType(), QgsWkbTypes.PointZ)
        self.assertEqual(test_layer.featureCount(), 51)

        delete_features(test_layer)
        self.assertEqual(test_layer.featureCount(), 0)

        print("Validating PointM To Point")
        uri = self.gpkg_path + '|layername={layername}'.format(
            layername='points_M')
        point_layer = QgsVectorLayer(uri, 'points', 'ogr')
        self.assertTrue(point_layer.isValid())
        self.assertEqual(point_layer.wkbType(), QgsWkbTypes.PointM)
        run_etl_model(self.db_pg.names, point_layer, test_layer,
                      self.db_pg.names.OP_BOUNDARY_POINT_T)
        print("Info: Validating geometry PointM...", test_layer.wkbType())
        self.assertEqual(test_layer.wkbType(), QgsWkbTypes.PointZ)
        self.assertEqual(test_layer.featureCount(), 51)

        delete_features(test_layer)
        self.assertEqual(test_layer.featureCount(), 0)

        # PointZM To Point
        print("Validating PointZM To Point")
        uri = self.gpkg_path + '|layername={layername}'.format(
            layername='points_ZM')
        point_layer = QgsVectorLayer(uri, 'points', 'ogr')
        self.assertTrue(point_layer.isValid())
        self.assertEqual(point_layer.wkbType(), QgsWkbTypes.PointZM)
        run_etl_model(self.db_pg.names, point_layer, test_layer,
                      self.db_pg.names.OP_BOUNDARY_POINT_T)
        print("Info: Validating geometry PointZM...", test_layer.wkbType())
        self.assertEqual(test_layer.wkbType(), QgsWkbTypes.PointZ)
        self.assertEqual(test_layer.featureCount(), 51)

        delete_features(test_layer)
        self.assertEqual(test_layer.featureCount(), 0)
    def test_refactor_field(self):
        print('\nINFO: Validating refactor fields...')

        dict_layers_to_check = {
            self.db_gpkg_test.names.LC_BOUNDARY_T:
            self.db_gpkg_empty.names.LC_BOUNDARY_T,
            self.db_gpkg_test.names.LC_PLOT_T:
            self.db_gpkg_empty.names.LC_PLOT_T,
            self.db_gpkg_test.names.LC_PARCEL_T:
            self.db_gpkg_empty.names.LC_PARCEL_T,
            self.db_gpkg_test.names.LC_BOUNDARY_POINT_T:
            self.db_gpkg_empty.names.LC_BOUNDARY_POINT_T,
            self.db_gpkg_test.names.LC_CONTROL_POINT_T:
            self.db_gpkg_empty.names.LC_CONTROL_POINT_T,
            self.db_gpkg_test.names.LC_SURVEY_POINT_T:
            self.db_gpkg_empty.names.LC_SURVEY_POINT_T,
            self.db_gpkg_test.names.LC_PARTY_T:
            self.db_gpkg_empty.names.LC_PARTY_T,
            self.db_gpkg_test.names.LC_ADMINISTRATIVE_SOURCE_T:
            self.db_gpkg_empty.names.LC_ADMINISTRATIVE_SOURCE_T,
            self.db_gpkg_test.names.LC_BUILDING_T:
            self.db_gpkg_empty.names.LC_BUILDING_T,
            self.db_gpkg_test.names.LC_BUILDING_UNIT_T:
            self.db_gpkg_empty.names.LC_BUILDING_UNIT_T
        }

        feature_count_test = {
            self.db_gpkg_test.names.LC_BOUNDARY_T: 154,
            self.db_gpkg_test.names.LC_PLOT_T: 52,
            self.db_gpkg_test.names.LC_PARCEL_T: 51,
            self.db_gpkg_test.names.LC_BOUNDARY_POINT_T: 390,
            self.db_gpkg_test.names.LC_CONTROL_POINT_T: 0,
            self.db_gpkg_test.names.LC_SURVEY_POINT_T: 53,
            self.db_gpkg_test.names.LC_PARTY_T: 36,
            self.db_gpkg_test.names.LC_ADMINISTRATIVE_SOURCE_T: 50,
            self.db_gpkg_test.names.LC_BUILDING_T: 17,
            self.db_gpkg_test.names.LC_BUILDING_UNIT_T: 29
        }

        QSettings().setValue(
            'Asistente-LADM-COL/automatic_values/automatic_values_in_batch_mode',
            False)

        for layer_name_test, layer_name_empty in dict_layers_to_check.items():
            layer = self.app.core.get_layer(self.db_gpkg_test,
                                            layer_name_test,
                                            load=True)
            test_layer = self.app.core.get_layer(self.db_gpkg_empty,
                                                 layer_name_empty,
                                                 load=True)
            self.assertEqual(layer.featureCount(),
                             feature_count_test[layer_name_test],
                             'Error in {}'.format(layer_name_test))
            self.assertEqual(test_layer.featureCount(), 0,
                             'Error in {}'.format(layer_name_test))

            print(
                "Import data from test db to empty db for {} using refactor fields"
                .format(layer_name_test))
            run_etl_model(self.db_gpkg_empty.names, layer, test_layer,
                          layer_name_empty)
            self.assertEqual(test_layer.featureCount(),
                             feature_count_test[layer_name_test],
                             'Error in {}'.format(layer_name_test))
Ejemplo n.º 11
0
    def test_valid_import_geom_2d_to_db_gpkg(self):
        print('\nINFO: Validating ETL-Model from [ Point, PointZ, PointM, PointZM ] to Point geometries...')

        # Layer in LADM for test
        test_layer = self.qgis_utils.get_layer(self.db_connection, BOUNDARY_POINT_TABLE, load=True)

        # Point To Point
        print("Validating Point to Point")
        uri = self.gpkg_path + '|layername={layername}'.format(layername='points')
        point_layer = QgsVectorLayer(uri, 'points', 'ogr')
        self.assertTrue(point_layer.isValid())
        run_etl_model(point_layer, out_layer=test_layer)
        print("Info: Validating geometry Point...")
        self.assertEqual(QgsWkbTypes.PointGeometry, test_layer.type())
        self.assertEqual(QgsWkbTypes.Point, point_layer.wkbType())
        self.assertEqual(QgsWkbTypes.Point, test_layer.wkbType())
        self.assertEqual(test_layer.featureCount(), 51)

        self.delete_features(test_layer)
        self.assertEqual(test_layer.featureCount(), 0)

        # PointZ To Point
        print("Validating PointZ to Point")
        uri = self.gpkg_path + '|layername={layername}'.format(layername='points_Z')
        point_layer = QgsVectorLayer(uri, 'points_Z', 'ogr')
        self.assertTrue(point_layer.isValid())
        self.assertIn(point_layer.wkbType(), [QgsWkbTypes.PointZ, QgsWkbTypes.Point25D])
        output = run_etl_model(point_layer, out_layer=test_layer)
        print("Info: Validating geometry PointZ...", test_layer.wkbType())
        self.assertEqual(QgsWkbTypes.PointGeometry, test_layer.type())
        self.assertEqual(QgsWkbTypes.Point, test_layer.wkbType())
        self.assertEqual(test_layer.featureCount(), 51)

        self.delete_features(test_layer)
        self.assertEqual(test_layer.featureCount(), 0)

        # PointM To Point
        print("Validating PointM To Point")
        uri = self.gpkg_path + '|layername={layername}'.format(layername='points_M')
        point_layer = QgsVectorLayer(uri, 'points', 'ogr')
        self.assertTrue(point_layer.isValid())
        run_etl_model(point_layer, out_layer=test_layer)
        print("Info: Validating geometry PointZ...", test_layer.wkbType())
        self.assertEqual(QgsWkbTypes.PointGeometry, test_layer.type())
        self.assertEqual(QgsWkbTypes.PointM, point_layer.wkbType())
        self.assertEqual(QgsWkbTypes.Point, test_layer.wkbType())
        self.assertEqual(test_layer.featureCount(), 51)

        self.delete_features(test_layer)
        self.assertEqual(test_layer.featureCount(), 0)

        # PointZM To Point
        print("Validating PointZM To Point")
        uri = self.gpkg_path + '|layername={layername}'.format(layername='points_ZM')
        point_layer = QgsVectorLayer(uri, 'points', 'ogr')
        self.assertTrue(point_layer.isValid())
        run_etl_model(point_layer, out_layer=test_layer)
        print("Info: Validating geometry PointZ...", test_layer.wkbType())
        self.assertEqual(QgsWkbTypes.PointGeometry, test_layer.type())
        self.assertEqual(QgsWkbTypes.PointZM, point_layer.wkbType())
        self.assertEqual(QgsWkbTypes.Point, test_layer.wkbType())
        self.assertEqual(test_layer.featureCount(), 51)

        self.delete_features(test_layer)
        self.assertEqual(test_layer.featureCount(), 0)