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))
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)
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)
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)
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)
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)
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))
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)