# 1. Otevření vrstvy layer_name = 'NazevVasiVrstvy' layers = QgsProject.instance().mapLayersByName(layer_name) if layers: layer = layers[0] else: raise Exception(f"Vrstva s názvem {layer_name} nebyla nalezena.") # 2. Inicializace výběru layer.removeSelection() # 3. Výběr prvků # a) Výběr výrazem expression = "\"atributovy_nazev\" = 'hodnota'" layer.selectByExpression(expression, QgsVectorLayer.AddToSelection) # b) Výběr geometrií selection_layer_name = 'NazevVyberoveVrstvy' selection_layers = QgsProject.instance().mapLayersByName(selection_layer_name) if selection_layers: selection_layer = selection_layers[0] selection_features = selection_layer.getFeatures() selection_geometries = [feat.geometry() for feat in selection_features] layer.selectByLocation( selection_geometries, QgsVectorLayer.Intersects, [], QgsVectorLayer.AddToSelection ) else: print(f"Výběrová vrstva s názvem {selection_layer_name} nebyla nalezena.") # c) Použití existujícího výběru selected_features = layer.selectedFeatures() if not selected_features: print("Ve vrstvě nejsou žádné vybrané prvky.") else: print(f"Počet vybraných prvků: {len(selected_features)}") # 4. Vytvoření nové virtuální vrstvy geometry_type = layer.wkbType() crs = layer.sourceCrs().toWkt() virtual_layer = QgsVectorLayer(f"{geometry_type}?crs={crs}", "NovaVirtualniVrstva", "memory") virtual_layer_data_provider = virtual_layer.dataProvider() virtual_layer_data_provider.addAttributes(layer.fields()) virtual_layer.updateFields() # 5. Překopírování vybraných prvků virtual_layer_data_provider.addFeatures(selected_features) virtual_layer.updateExtents() # 6. Přidání nové vrstvy do projektu QgsProject.instance().addMapLayer(virtual_layer)