# Estados que queremos pegar os municípios
nomes = ['Minas Gerais', 'Paraíba', 'Espírito Santo', 'Goiás', 'Sergipe']
nomes = [f"'{nome}'" for nome in nomes]
# Pegando apenas as feições que precisamos
estados = QgsProject.instance().mapLayersByName('lim_unidade_federacao_a')[0]
subset_string = f"nome in ({','.join(nomes)})"
estados.setSubsetString(subset_string)
# Gerando uma camada com para cada estado com seus municípios
for feature in estados.getFeatures():
SQL = f"SELECT * FROM lim_municipio_a WHERE geocodigo like '{feature['geocodigo']}%'"
vlayer = QgsVectorLayer(f"?query={SQL}", f"Municipios_{feature['nome']}", 'virtual')
QgsProject.instance().addMapLayer(vlayer)
É possível gerar camadas virtuais usando #SQL e #PyQGIS, e pode ser uma mão na roda!
Nesse exemplo, temos duas camadas, uma de municípios e uma de estados.
Filtramos os estados que queremos e usamos o nome para gerar o nome da nova camada, e o campo geocódigo para filtrar os municípios.
Os dois primeiros dígitos do geocódigo do municipio correspondem ao geocódigo do estado.
Uma vantagem de se trabalhar com camada virtual é que cada alteração feita na camada de base (municipios) reflete na virtual.
Ex.: Se um município mudar de estado.