![]() |
|
||||
![]() Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
Você está aqui: QGIS ::: PyQGIS API ::: Shapefiles, Camadas Vetoriais, Dados Vetoriais |
||||
Como retornar a quantidade de feições de uma camada vetorial no QGIS usando a função featureCount() do objeto QgsVectorLayer da PyQGIS APIQuantidade de visualizações: 382 vezes |
||||
A função featureCount() do objeto QgsVectorLayer da PyQGIS API pode ser usada quando queremos saber a quantidade de feições que uma camada vetorial do QGIS possui. As feições no QGIS representam cada unidade de uma camada. Veja o código PyQGIS completo para o exemplo:
Ao rodar esse código PyQGIS no QGIS nós teremos o seguinte resultado: Quantidade de feições: 246 As feições no QGIS representam cada unidade de uma camada. A feição pode ser linha, ponto ou polígono, dependendo do tipo da informação a ser representado. Por exemplo, se criarmos um mapa com os estados brasileiros e o Distrito Federal, ao todo somarão 27. Portanto, o mapa deverá ter 27 polígonos. |
||||
![]() |
||||
QGIS ::: PyQGIS API ::: Aplicações com código fonte completo |
||||
Como listar os 5 municípios goianos com maior área em uma camada do QGIS usando PyQGIS - Código Python completoQuantidade de visualizações: 317 vezes |
||||
Este código completo mostra uma aplicação QGIS na qual usei PyQGIS para resolver um desafio muito interessante, e complexo. Acredito que servirá de base para muitos códigos interessantes envolvendo QGIS, Python e PyQGIS. Comecei fazendo o download do shapefile do Estado de Goiás, contendo seus 246 municípios no site do IBGE. Em seguida carreguei o shapefile no QGIS usando um objeto QgsVectorLayer. Note que criei uma classe Municipio para guardar cada um dos municípios encontrados no shapefile. E, para agrupar os objetos da classe Municipio eu criei uma lista chamada municipios. Para acessar cada um dos municipios, ou seja, cada uma das 246 feições da camada, eu usei a função getFeatures() da classe QgsVectorLayer. Então, ao percorrer cada uma dessas feições, eu obtive seus atributos, por meio da função attributes(), e os usei para criar os objetos da classe Municipio. Uma vez obtida a lista de municípios, o passo seguinte foi classificar a lista por ordem crescente de área (a área dos municípios). Um laço for me permitiu listar apenas os 5 municípios com maiores áreas e, além de registrar o somatório de seus áreas, obter os seus códigos para selecioná-los na camada, usando a função selectByExpression(). O desafio final foi mostrar as labels, ou seja, os rótulos de cada um dos municípios no mapa do QGIS, porém, eu queria mostrar os rótulos apenas dos 5 municípios com as maiores áreas. Para resolver o desafio, lancei mão da função setFilterExpression(). Veja o código completo para o exemplo:
Ao executar este código QGIS, Python e PyQGIS nós teremos o seguinte resultado: Os 5 maiores municípios do Estado de Goiás são: 1) Niquelândia - Área: 9846.293 km2 2) Mineiros - Área: 9042.844 km2 3) Caiapônia - Área: 8627.961 km2 4) Rio Verde - Área: 8374.255 km2 5) Nova Crixás - Área: 7308.681 km2 Área ocupada pelos 5 maiores municípios: 43200.03399999999 km2 Para fins de compatibilidade este código foi escrito e testado no QGIS 3.34.5-Prizren. | ||||
QGIS ::: PyQGIS API ::: Projeto QGIS - Classe QgsProject |
||||
Como definir o título do projeto do QGIS usando PyQGIS e a função setTitle() da classe QgsProjectQuantidade de visualizações: 156 vezes |
||||
Nesta dica mostrarei como podemos definir o título do projeto do QGIS usando PyQGIS. Para isso nós vamos usar a função setTitle() da classe QgsProject da PyQGIS API. Note que o título do projeto do QGIS pode ser definido manualmente indo no menu Projeto -> Propriedades. Na janela Propriedades nós acessamos a guia Geral e definimos no campo Título do Projeto o valor que desejamos. Veja o código PyQGIS completo que mostra como definir o título do projeto atual do QGIS:
Ao executar este código PyQGIS nós teremos um resultado parecido com: O título do projeto foi definido com sucesso | ||||
QGIS ::: PyQGIS API ::: Shapefiles, Camadas Vetoriais, Dados Vetoriais |
||||
Como exibir todos os atributos das feições de uma camada vetorial no QGIS usando getFeatures() e attributes() da PyQGIS APIQuantidade de visualizações: 395 vezes |
||||
Nesta dica mostrarei como podemos acessar todos os atributos das feições (features) de uma camada vetorial no QGIS usando getFeatures() e attributes() do objeto QgsVectorLayer da PyQGIS API. Depois de carregar o shapefile contendo todos os municípios do Estado de Goiás, usei a getFeatures() para retornar um iterador QgsFeatureIterator que nos permite acessar as features individuais da camada. Então, de posse das feições individuais, nós usamos a função attributes() para retornar o QgsFeature correspondente e exibir seu conteúdo. Veja o código PyQGIS completo para o exemplo:
Ao rodar esse código PyQGIS no QGIS nós teremos o seguinte resultado: ['5200050', 'Abadia de Goiás', 'GO', 143.357] ['5200100', 'Abadiânia', 'GO', 1044.555] ['5200134', 'Acreúna', 'GO', 1566.742] ['5200159', 'Adelândia', 'GO', 115.385] ['5200175', 'Água Fria de Goiás', 'GO', 2023.636] ['5200209', 'Água Limpa', 'GO', 458.836] ['5200258', 'Águas Lindas de Goiás', 'GO', 191.817] ['5200308', 'Alexânia', 'GO', 846.876] ['5200506', 'Aloândia', 'GO', 102.094] ['5200555', 'Alto Horizonte', 'GO', 500.342] ['5200605', 'Alto Paraíso de Goiás', 'GO', 2594.998] ['5200803', 'Alvorada do Norte', 'GO', 1268.347] ['5200829', 'Amaralina', 'GO', 1343.742] ['5200852', 'Americano do Brasil', 'GO', 133.834] ['5200902', 'Amorinópolis', 'GO', 406.93] ['5201108', 'Anápolis', 'GO', 935.672] ['5201207', 'Anhanguera', 'GO', 55.569] ['5201306', 'Anicuns', 'GO', 976.038] ['5201405', 'Aparecida de Goiânia', 'GO', 279.954] ['5201454', 'Aparecida do Rio Doce', 'GO', 603.254] ['5201504', 'Aporé', 'GO', 2899.237] ['5201603', 'Araçu', 'GO', 149.776] ['5201702', 'Aragarças', 'GO', 661.677] ['5201801', 'Aragoiânia', 'GO', 218.125] ['5202155', 'Araguapaz', 'GO', 2188.1] ['5202353', 'Arenópolis', 'GO', 1075.535] ['5202502', 'Aruanã', 'GO', 3054.773] ['5202601', 'Aurilândia', 'GO', 565.514] ['5202809', 'Avelinópolis', 'GO', 170.228] ['5203104', 'Baliza', 'GO', 1780.173] ['5203203', 'Barro Alto', 'GO', 1080.268] ['5203302', 'Bela Vista de Goiás', 'GO', 1274.034] ['5203401', 'Bom Jardim de Goiás', 'GO', 1901.137] ['5203500', 'Bom Jesus de Goiás', 'GO', 1405.605] ['5203559', 'Bonfinópolis', 'GO', 121.915] ['5203575', 'Bonópolis', 'GO', 1635.319] ['5203609', 'Brazabrantes', 'GO', 125.326] ['5203807', 'Britânia', 'GO', 1458.459] ['5203906', 'Buriti Alegre', 'GO', 901.932] ['5203939', 'Buriti de Goiás', 'GO', 202.576] ['5203962', 'Buritinópolis', 'GO', 246.075] ['5204003', 'Cabeceiras', 'GO', 1126.434] ['5204102', 'Cachoeira Alta', 'GO', 1657.226] ['5204201', 'Cachoeira de Goiás', 'GO', 424.49] ['5204250', 'Cachoeira Dourada', 'GO', 528.281] ['5204300', 'Caçu', 'GO', 2254.34] ['5204409', 'Caiapônia', 'GO', 8627.961] ['5204508', 'Caldas Novas', 'GO', 1608.523] ['5204557', 'Caldazinha', 'GO', 251.72] ['5204607', 'Campestre de Goiás', 'GO', 272.734] ['5204656', 'Campinaçu', 'GO', 1978.386] ['5204706', 'Campinorte', 'GO', 1064.541] ['5204805', 'Campo Alegre de Goiás', 'GO', 2450.111] ['5204854', 'Campo Limpo de Goiás', 'GO', 156.113] ['5204904', 'Campos Belos', 'GO', 735.126] ['5204953', 'Campos Verdes', 'GO', 443.125] ['5205000', 'Carmo do Rio Verde', 'GO', 419.821] ['5205059', 'Castelândia', 'GO', 299.228] ['5205109', 'Catalão', 'GO', 3826.37] ['5205208', 'Caturaí', 'GO', 205.065] ['5205307', 'Cavalcante', 'GO', 6948.78] ['5205406', 'Ceres', 'GO', 213.07] ['5205455', 'Cezarina', 'GO', 417.08] ['5205471', 'Chapadão do Céu', 'GO', 2184.076] ['5205497', 'Cidade Ocidental', 'GO', 389.984] ['5205513', 'Cocalzinho de Goiás', 'GO', 1785.339] ['5205521', 'Colinas do Sul', 'GO', 1707.519] ['5205703', 'Córrego do Ouro', 'GO', 458.077] ['5205802', 'Corumbá de Goiás', 'GO', 1064.833] ['5205901', 'Corumbaíba', 'GO', 1864.277] ['5206206', 'Cristalina', 'GO', 6153.921] ['5206305', 'Cristianópolis', 'GO', 221.624] ['5206404', 'Crixás', 'GO', 4673.039] ['5206503', 'Cromínia', 'GO', 364.918] ['5206602', 'Cumari', 'GO', 568.365] ['5206701', 'Damianópolis', 'GO', 417.625] ['5206800', 'Damolândia', 'GO', 86.057] ['5206909', 'Davinópolis', 'GO', 482.857] ['5207105', 'Diorama', 'GO', 685.382] ['5207253', 'Doverlândia', 'GO', 3227.558] ['5207352', 'Edealina', 'GO', 598.218] ['5207402', 'Edéia', 'GO', 1469.099] ['5207501', 'Estrela do Norte', 'GO', 301.139] ['5207535', 'Faina', 'GO', 1949.685] ['5207600', 'Fazenda Nova', 'GO', 1279.107] ['5207808', 'Firminópolis', 'GO', 422.34] ['5207907', 'Flores de Goiás', 'GO', 3695.106] ['5208004', 'Formosa', 'GO', 5804.292] ['5208103', 'Formoso', 'GO', 843.42] ['5208152', 'Gameleira de Goiás', 'GO', 588.328] ['5208301', 'Divinópolis de Goiás', 'GO', 828.874] ['5208400', 'Goianápolis', 'GO', 166.642] ['5208509', 'Goiandira', 'GO', 569.917] ['5208608', 'Goianésia', 'GO', 1547.319] ['5208707', 'Goiânia', 'GO', 729.296] ['5208806', 'Goianira', 'GO', 213.772] ['5208905', 'Goiás', 'GO', 3108.423] ['5209101', 'Goiatuba', 'GO', 2479.591] ['5209150', 'Gouvelândia', 'GO', 827.373] ['5209200', 'Guapó', 'GO', 514.178] ['5209291', 'Guaraíta', 'GO', 205.533] ['5209408', 'Guarani de Goiás', 'GO', 1221.054] ['5209457', 'Guarinos', 'GO', 593.188] ['5209606', 'Heitoraí', 'GO', 228.615] ['5209705', 'Hidrolândia', 'GO', 952.122] ['5209804', 'Hidrolina', 'GO', 583.756] ['5209903', 'Iaciara', 'GO', 1547.183] ['5209937', 'Inaciolândia', 'GO', 689.201] ['5209952', 'Indiara', 'GO', 955.419] ['5210000', 'Inhumas', 'GO', 614.887] ['5210109', 'Ipameri', 'GO', 4382.863] ['5210158', 'Ipiranga de Goiás', 'GO', 244.209] ['5210208', 'Iporá', 'GO', 1027.249] ['5210307', 'Israelândia', 'GO', 579.19] ['5210406', 'Itaberaí', 'GO', 1461.916] ['5210562', 'Itaguari', 'GO', 142.652] ['5210604', 'Itaguaru', 'GO', 241.029] ['5210802', 'Itajá', 'GO', 2082.736] ['5210901', 'Itapaci', 'GO', 952.998] ['5211008', 'Itapirapuã', 'GO', 2047.874] ['5211206', 'Itapuranga', 'GO', 1281.404] ['5211305', 'Itarumã', 'GO', 3437.367] ['5211404', 'Itauçu', 'GO', 383.066] ['5211503', 'Itumbiara', 'GO', 2447.014] ['5211602', 'Ivolândia', 'GO', 1260.841] ['5211701', 'Jandaia', 'GO', 863.087] ['5211800', 'Jaraguá', 'GO', 1848.947] ['5211909', 'Jataí', 'GO', 7178.792] ['5212006', 'Jaupaci', 'GO', 528.783] ['5212055', 'Jesúpolis', 'GO', 115.211] ['5212105', 'Joviânia', 'GO', 446.258] ['5212204', 'Jussara', 'GO', 4092.34] ['5212253', 'Lagoa Santa', 'GO', 463.289] ['5212303', 'Leopoldo de Bulhões', 'GO', 476.137] ['5212501', 'Luziânia', 'GO', 3962.107] ['5212600', 'Mairipotaba', 'GO', 468.029] ['5212709', 'Mambaí', 'GO', 858.27] ['5212808', 'Mara Rosa', 'GO', 1695.463] ['5212907', 'Marzagão', 'GO', 225.518] ['5212956', 'Matrinchã', 'GO', 1150.503] ['5213004', 'Maurilândia', 'GO', 389.959] ['5213053', 'Mimoso de Goiás', 'GO', 1380.701] ['5213087', 'Minaçu', 'GO', 2854.137] ['5213103', 'Mineiros', 'GO', 9042.844] ['5213400', 'Moiporá', 'GO', 452.314] ['5213509', 'Monte Alegre de Goiás', 'GO', 3119.86] ['5213707', 'Montes Claros de Goiás', 'GO', 2900.397] ['5213756', 'Montividiu', 'GO', 1869.581] ['5213772', 'Montividiu do Norte', 'GO', 1337.232] ['5213806', 'Morrinhos', 'GO', 2846.299] ['5213855', 'Morro Agudo de Goiás', 'GO', 282.333] ['5213905', 'Mossâmedes', 'GO', 684.882] ['5214002', 'Mozarlândia', 'GO', 1738.516] ['5214051', 'Mundo Novo', 'GO', 2141.534] ['5214101', 'Mutunópolis', 'GO', 955.069] ['5214408', 'Nazário', 'GO', 281.147] ['5214507', 'Nerópolis', 'GO', 204.713] ['5214606', 'Niquelândia', 'GO', 9846.293] ['5214705', 'Nova América', 'GO', 209.432] ['5214804', 'Nova Aurora', 'GO', 307.335] ['5214838', 'Nova Crixás', 'GO', 7308.681] ['5214861', 'Nova Glória', 'GO', 411.753] ['5214879', 'Nova Iguaçu de Goiás', 'GO', 625.625] ['5214903', 'Nova Roma', 'GO', 2136.725] ['5215009', 'Nova Veneza', 'GO', 122.354] ['5215207', 'Novo Brasil', 'GO', 649.349] ['5215231', 'Novo Gama', 'GO', 192.285] ['5215256', 'Novo Planalto', 'GO', 1254.491] ['5215306', 'Orizona', 'GO', 1971.265] ['5215405', 'Ouro Verde de Goiás', 'GO', 208.804] ['5215504', 'Ouvidor', 'GO', 411.318] ['5215603', 'Padre Bernardo', 'GO', 3142.615] ['5215652', 'Palestina de Goiás', 'GO', 1318.047] ['5215702', 'Palmeiras de Goiás', 'GO', 1537.196] ['5215801', 'Palmelo', 'GO', 59.809] ['5215900', 'Palminópolis', 'GO', 393.326] ['5216007', 'Panamá', 'GO', 432.204] ['5216304', 'Paranaiguara', 'GO', 1153.415] ['5216403', 'Paraúna', 'GO', 3786.578] ['5216452', 'Perolândia', 'GO', 1033.657] ['5216809', 'Petrolina de Goiás', 'GO', 530.49] ['5216908', 'Pilar de Goiás', 'GO', 906.048] ['5217104', 'Piracanjuba', 'GO', 2374.232] ['5217203', 'Piranhas', 'GO', 2045.088] ['5217302', 'Pirenópolis', 'GO', 2200.369] ['5217401', 'Pires do Rio', 'GO', 1077.641] ['5217609', 'Planaltina', 'GO', 2558.924] ['5217708', 'Pontalina', 'GO', 1434.289] ['5218003', 'Porangatu', 'GO', 4825.287] ['5218052', 'Porteirão', 'GO', 606.262] ['5218102', 'Portelândia', 'GO', 553.411] ['5218300', 'Posse', 'GO', 2076.99] ['5218391', 'Professor Jamil', 'GO', 356.292] ['5218508', 'Quirinópolis', 'GO', 3786.026] ['5218607', 'Rialma', 'GO', 268.291] ['5218706', 'Rianápolis', 'GO', 157.379] ['5218789', 'Rio Quente', 'GO', 244.655] ['5218805', 'Rio Verde', 'GO', 8374.255] ['5218904', 'Rubiataba', 'GO', 750.659] ['5219001', 'Sanclerlândia', 'GO', 509.402] ['5219100', 'Santa Bárbara de Goiás', 'GO', 140.957] ['5219209', 'Santa Cruz de Goiás', 'GO', 1109.007] ['5219258', 'Santa Fé de Goiás', 'GO', 1164.186] ['5219308', 'Santa Helena de Goiás', 'GO', 1142.337] ['5219357', 'Santa Isabel', 'GO', 812.756] ['5219407', 'Santa Rita do Araguaia', 'GO', 1357.197] ['5219456', 'Santa Rita do Novo Destino', 'GO', 970.448] ['5219506', 'Santa Rosa de Goiás', 'GO', 166.44] ['5219605', 'Santa Tereza de Goiás', 'GO', 789.544] ['5219704', 'Santa Terezinha de Goiás', 'GO', 1206.6] ['5219712', 'Santo Antônio da Barra', 'GO', 450.336] ['5219738', 'Santo Antônio de Goiás', 'GO', 135.022] ['5219753', 'Santo Antônio do Descoberto', 'GO', 943.948] ['5219803', 'São Domingos', 'GO', 3335.999] ['5219902', 'São Francisco de Goiás', 'GO', 416.535] ['5220009', "São João d'Aliança", 'GO', 3334.455] ['5220058', 'São João da Paraúna', 'GO', 286.979] ['5220108', 'São Luís de Montes Belos', 'GO', 829.62] ['5220157', 'São Luiz do Norte', 'GO', 583.832] ['5220207', 'São Miguel do Araguaia', 'GO', 6150.179] ['5220264', 'São Miguel do Passa Quatro', 'GO', 537.347] ['5220280', 'São Patrício', 'GO', 172.763] ['5220405', 'São Simão', 'GO', 415.015] ['5220454', 'Senador Canedo', 'GO', 247.005] ['5220504', 'Serranópolis', 'GO', 5521.774] ['5220603', 'Silvânia', 'GO', 2349.924] ['5220686', 'Simolândia', 'GO', 346.811] ['5220702', "Sítio d'Abadia", 'GO', 1611.851] ['5221007', 'Taquaral de Goiás', 'GO', 205.665] ['5221080', 'Teresina de Goiás', 'GO', 784.793] ['5221197', 'Terezópolis de Goiás', 'GO', 107.407] ['5221304', 'Três Ranchos', 'GO', 284.034] ['5221403', 'Trindade', 'GO', 712.69] ['5221452', 'Trombas', 'GO', 802.905] ['5221502', 'Turvânia', 'GO', 482.317] ['5221551', 'Turvelândia', 'GO', 935.659] ['5221577', 'Uirapuru', 'GO', 1154.305] ['5221601', 'Uruaçu', 'GO', 2142.484] ['5221700', 'Uruana', 'GO', 522.904] ['5221809', 'Urutaí', 'GO', 623.821] ['5221858', 'Valparaíso de Goiás', 'GO', 61.488] ['5221908', 'Varjão', 'GO', 517.402] ['5222005', 'Vianópolis', 'GO', 954.115] ['5222054', 'Vicentinópolis', 'GO', 733.794] ['5222203', 'Vila Boa', 'GO', 1052.593] ['5222302', 'Vila Propício', 'GO', 2181.593] Note que mostrei todos os atributos das 246 feições (features) do meu shapefile. E cada feição representa um dos municípios do Estado de Goiás. Veja que os atributos são o código do município, seu nome, a sigla do estado e sua área (em metros quadrados). Deixei a listagem completa para facilitar alguém que queira fazer trabalhos relacionados a isso. | ||||
Veja mais Dicas e truques de QGIS |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |