queries_uteis_em_spatialite
Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
Ambos lados da revisão anteriorRevisão anteriorPróxima revisão | Revisão anterior | ||
queries_uteis_em_spatialite [2018/06/09 20:17] – [Juntar três camadas que se interseccionam] rtsaboya | queries_uteis_em_spatialite [2019/08/30 18:13] (atual) – [Juntar várias camadas escolhendo quais campos] 150.162.179.77 | ||
---|---|---|---|
Linha 1: | Linha 1: | ||
+ | ====Juntar várias camadas escolhendo quais campos==== | ||
+ | |||
+ | Bom para consolidar em uma camada só várias informações provenientes de diversas camadas ou tabelas. | ||
+ | |||
+ | <code sql> | ||
+ | -- Apaga a tabela - só é necessário depois da primeira vez | ||
+ | DROP TABLE " | ||
+ | |||
+ | -- Cria uma nova tabela | ||
+ | CREATE TABLE " | ||
+ | SELECT | ||
+ | a.*, | ||
+ | c." | ||
+ | e." | ||
+ | e." | ||
+ | e." | ||
+ | e." | ||
+ | e." | ||
+ | f." | ||
+ | f." | ||
+ | f." | ||
+ | |||
+ | -- Define quais tabelas serão usadas e cria apelidos para elas (a, b, c, ...) | ||
+ | FROM | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | |||
+ | -- estabelece a condicao para o join | ||
+ | WHERE a.codsetor = b.codsetor and a.codsetor = c.codsetor and a.codsetor = d.codsetor and a.codsetor = e.codsetor and a.codsetor = f.idSetor; | ||
+ | |||
+ | -- A nova camada criada não reconhecerá a geometria. Esse comando resolve o problema | ||
+ | SELECT RecoverGeometryColumn(" | ||
+ | </ | ||
====Juntar duas camadas que se interseccionam==== | ====Juntar duas camadas que se interseccionam==== | ||
Essa query permite passar os atributos (colunas) de uma camada para outra com base na intersecção entre os elementos, isto é, os atributos de um elemento serão passadas para os elementos da outra camada (tabela) que eles interceptam. | Essa query permite passar os atributos (colunas) de uma camada para outra com base na intersecção entre os elementos, isto é, os atributos de um elemento serão passadas para os elementos da outra camada (tabela) que eles interceptam. | ||
Linha 75: | Linha 112: | ||
* O GROUP BY, ao final, diz ao computador para agrupar os resultados para cada um dos elementos da tabela 1. Isso é necessário porque esses elementos podem cruzar com mais de um elemento da tabela2, por exemplo, e estamos pedindo | * O GROUP BY, ao final, diz ao computador para agrupar os resultados para cada um dos elementos da tabela 1. Isso é necessário porque esses elementos podem cruzar com mais de um elemento da tabela2, por exemplo, e estamos pedindo | ||
- | ====Atribuir código do setor a pontos | + | ====Agregar informações de pontos |
+ | Uma primeira operação detecta dentro de qual polígono o ponto está e preenche uma coluna na camada de pontos com o código do setor: | ||
<code sql> | <code sql> | ||
Linha 95: | Linha 133: | ||
where [coluna]=" | where [coluna]=" | ||
</ | </ | ||
+ | |||
+ | Em seguida, usamos a camada de pontos para agregar por setores, usando o código inserido no passo anterior: | ||
+ | |||
+ | <code sql> | ||
+ | |||
+ | -- Com as informações dos setores nas linhas, faz a agregação por setores | ||
+ | create table [nova_tabela] as | ||
+ | |||
+ | Select | ||
+ | codsetor, -- id do polígono | ||
+ | -- Soma | ||
+ | sum([coluna a ser somada]) as [nome_da_nova_coluna], | ||
+ | |||
+ | -- Soma com uma condição em outra coluna | ||
+ | sum(case when [outra_coluna]=' | ||
+ | |||
+ | from [tabela criada no passo anterior] | ||
+ | |||
+ | group by codsetor | ||
+ | |||
+ | </ | ||
+ | |||
+ | ====Agregar SQL==== | ||
+ | |||
+ | Quando precisar calcular a média ponderada: https:// |
queries_uteis_em_spatialite.1528575471.txt.gz · Última modificação: (edição externa)