[QGIS-pt] Consulta Espacial

Olá,

Pretendia fazer algumas consultas espaciais e vi que há o plugin Spatial
Query (Consulta Espacial) que permite facilmente fazer esse tipo de
pesquisa.

Tem no entanto uma limitação que apenas permite relacionar 2 layers e
estabelecer uma única condição.
<http://osgeo-org.1560.x6.nabble.com/file/n5188976/spatial_query.png&gt;

Há forma de fazer este tipo de consulta espacial relacionado mais layers e
colocando mais condições na query?

Por exemplo e baseado na imagem que tenho em cima:
'Predio' toca 'poligonos_nip' e dentro de 'freguesia'

obrigado,
Pedro

--
View this message in context: http://osgeo-org.1560.x6.nabble.com/Consulta-Espacial-tp5188976.html
Sent from the QGIS-pt mailing list archive at Nabble.com.

Voltando a isto para ver se estarei a pensar bem.

Pelo que sei, no QGIS não se consegue fazer pesquisas cruzando mais que 2
layers/tabelas (plugin Spatial Query).

Tinha-me ocorrido que uma forma de ultrapassar isto seria, no PostGis,
colocar todas as tabelas que tenho numa só.

Não sei se isto que indico será uma boa prática e até se será possível...
Alguns problemas que imagino poderão existir:
- tabela com centenas de colunas
- vários campos geométricos na mesma tabela
- no QGIS não sei se é possível estabelecer relação 1 para n tendo apenas
uma tabela.

Agradeço a vossa opinião.

abraço,
Pedro

--
View this message in context: http://osgeo-org.1560.x6.nabble.com/Consulta-Espacial-tp5188976p5189627.html
Sent from the QGIS-pt mailing list archive at Nabble.com.

Bom dia Pedro,

Era precisamente o que te iria sugerir. Usar o Postgis para fazer as consultas necessárias e depois mostrar o resultado no qgis.

Nenhuma das coisas que dissestes me parecem limitativas. Só tens de estruturar que colunas queres obter e que geometria pretendes representar no QGIS.

Podes juntar na mesma consulta várias tabelas e condições. O exemplo que deste anteriormente seria transcrito da seguinte forma:

SELECT f.*
FROM predios as f, freguesia as g, poligonos_nip as p
WHERE St_touches(f.geom,g.geom) and St_touches(f.geom,p.geom)

Que devolve todas os registos de prédios que tocam nas geometrias das tabela poligonos_nip e freguesia. (Nota que neste caso, deves provavelmente querer antes usar o ST_Intersec)

Cumprimentos,

Alexandre Neto

···

2015-02-24 10:00 GMT+00:00 Pedro <pedro.ferro@gmail.com>:

Voltando a isto para ver se estarei a pensar bem.

Pelo que sei, no QGIS não se consegue fazer pesquisas cruzando mais que 2
layers/tabelas (plugin Spatial Query).

Tinha-me ocorrido que uma forma de ultrapassar isto seria, no PostGis,
colocar todas as tabelas que tenho numa só.

Não sei se isto que indico será uma boa prática e até se será possível…
Alguns problemas que imagino poderão existir:

  • tabela com centenas de colunas
  • vários campos geométricos na mesma tabela
  • no QGIS não sei se é possível estabelecer relação 1 para n tendo apenas
    uma tabela.

Agradeço a vossa opinião.

abraço,
Pedro


View this message in context: http://osgeo-org.1560.x6.nabble.com/Consulta-Espacial-tp5188976p5189627.html

Sent from the QGIS-pt mailing list archive at Nabble.com.


QGIS-pt mailing list
QGIS-pt@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/qgis-pt

Alexandre Neto wrote

Bom dia Pedro,

Era precisamente o que te iria sugerir. Usar o Postgis para fazer as
consultas necessárias e depois mostrar o resultado no qgis.

Nenhuma das coisas que dissestes me parecem limitativas. Só tens de
estruturar que colunas queres obter e que geometria pretendes representar
no QGIS.

Podes juntar na mesma consulta várias tabelas e condições. O exemplo que
deste anteriormente seria transcrito da seguinte forma:

SELECT f.*
FROM predios as f, freguesia as g, poligonos_nip as p
WHERE St_touches(f.geom,g.geom) and St_touches(f.geom,p.geom)

Que devolve todas os registos de prédios que tocam nas geometrias das
tabela poligonos_nip e freguesia. (Nota que neste caso, deves
provavelmente
querer antes usar o ST_Intersec)

Cumprimentos,

Alexandre Neto

2015-02-24 10:00 GMT+00:00 Pedro &lt;

pedro.ferro@

&gt;:

Voltando a isto para ver se estarei a pensar bem.

Pelo que sei, no QGIS não se consegue fazer pesquisas cruzando mais que 2
layers/tabelas (plugin Spatial Query).

Tinha-me ocorrido que uma forma de ultrapassar isto seria, no PostGis,
colocar todas as tabelas que tenho numa só.

Não sei se isto que indico será uma boa prática e até se será possível...
Alguns problemas que imagino poderão existir:
- tabela com centenas de colunas
- vários campos geométricos na mesma tabela
- no QGIS não sei se é possível estabelecer relação 1 para n tendo apenas
uma tabela.

Agradeço a vossa opinião.

abraço,
Pedro

Obrigado Alexandre.

O que eu gostava mesmo era fazer isso (queries/ pesquisas entre vários
layers) dentro do QGIS.
Ou seja, dar ao utilizador final (neste caso não serei eu) a possibilidade
de questionar e cruzar todos os dados de todas as tabelas.

Vou então tentar unir tabelas numa só, ver como corre e depois reporto o
resultado final.

Pedro

--
View this message in context: http://osgeo-org.1560.x6.nabble.com/Consulta-Espacial-tp5188976p5189694.html
Sent from the QGIS-pt mailing list archive at Nabble.com.

Pedro,

Nesse caso repara que o utilizador final pode sempre usar o plugin spatial query por fases.

Primeiro selecciona todos os prédios que tocam na camada freguesia, depois, sem fechar a janela e deixando seleccionados os elementos na camada prédios correr a mesma operação com a camada das freguesias, e assim sucessivamente.

Alexandre

···

2015-02-24 15:07 GMT+00:00 Pedro <pedro.ferro@gmail.com>:

Alexandre Neto wrote

Bom dia Pedro,

Era precisamente o que te iria sugerir. Usar o Postgis para fazer as
consultas necessárias e depois mostrar o resultado no qgis.

Nenhuma das coisas que dissestes me parecem limitativas. Só tens de
estruturar que colunas queres obter e que geometria pretendes representar
no QGIS.

Podes juntar na mesma consulta várias tabelas e condições. O exemplo que
deste anteriormente seria transcrito da seguinte forma:

SELECT f.*
FROM predios as f, freguesia as g, poligonos_nip as p
WHERE St_touches(f.geom,g.geom) and St_touches(f.geom,p.geom)

Que devolve todas os registos de prédios que tocam nas geometrias das
tabela poligonos_nip e freguesia. (Nota que neste caso, deves
provavelmente
querer antes usar o ST_Intersec)

Cumprimentos,

Alexandre Neto

2015-02-24 10:00 GMT+00:00 Pedro <

pedro.ferro@

>:

Voltando a isto para ver se estarei a pensar bem.

Pelo que sei, no QGIS não se consegue fazer pesquisas cruzando mais que 2
layers/tabelas (plugin Spatial Query).

Tinha-me ocorrido que uma forma de ultrapassar isto seria, no PostGis,
colocar todas as tabelas que tenho numa só.

Não sei se isto que indico será uma boa prática e até se será possível…
Alguns problemas que imagino poderão existir:

  • tabela com centenas de colunas
  • vários campos geométricos na mesma tabela
  • no QGIS não sei se é possível estabelecer relação 1 para n tendo apenas
    uma tabela.

Agradeço a vossa opinião.

abraço,
Pedro

Obrigado Alexandre.

O que eu gostava mesmo era fazer isso (queries/ pesquisas entre vários
layers) dentro do QGIS.
Ou seja, dar ao utilizador final (neste caso não serei eu) a possibilidade
de questionar e cruzar todos os dados de todas as tabelas.

Vou então tentar unir tabelas numa só, ver como corre e depois reporto o
resultado final.

Pedro


View this message in context: http://osgeo-org.1560.x6.nabble.com/Consulta-Espacial-tp5188976p5189694.html

Sent from the QGIS-pt mailing list archive at Nabble.com.


QGIS-pt mailing list
QGIS-pt@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/qgis-pt

É uma ideia... não me tinha ocorrido isso

--
View this message in context: http://osgeo-org.1560.x6.nabble.com/Consulta-Espacial-tp5188976p5189713.html
Sent from the QGIS-pt mailing list archive at Nabble.com.

Pedro,

Creio que existe um plugin Postgis query que penso permitir elaborar esse tipo de consultas.

Só vendo mais logo o nome.
Nelson

Enviado do meu iPhone

No dia 24/02/2015, às 15:07, Pedro <pedro.ferro@gmail.com> escreveu:

Alexandre Neto wrote

Bom dia Pedro,

Era precisamente o que te iria sugerir. Usar o Postgis para fazer as
consultas necessárias e depois mostrar o resultado no qgis.

Nenhuma das coisas que dissestes me parecem limitativas. Só tens de
estruturar que colunas queres obter e que geometria pretendes representar
no QGIS.

Podes juntar na mesma consulta várias tabelas e condições. O exemplo que
deste anteriormente seria transcrito da seguinte forma:

SELECT f.*
FROM predios as f, freguesia as g, poligonos_nip as p
WHERE St_touches(f.geom,g.geom) and St_touches(f.geom,p.geom)

Que devolve todas os registos de prédios que tocam nas geometrias das
tabela poligonos_nip e freguesia. (Nota que neste caso, deves
provavelmente
querer antes usar o ST_Intersec)

Cumprimentos,

Alexandre Neto

2015-02-24 10:00 GMT+00:00 Pedro &lt;

pedro.ferro@

&gt;:

Voltando a isto para ver se estarei a pensar bem.

Pelo que sei, no QGIS não se consegue fazer pesquisas cruzando mais que 2
layers/tabelas (plugin Spatial Query).

Tinha-me ocorrido que uma forma de ultrapassar isto seria, no PostGis,
colocar todas as tabelas que tenho numa só.

Não sei se isto que indico será uma boa prática e até se será possível...
Alguns problemas que imagino poderão existir:
- tabela com centenas de colunas
- vários campos geométricos na mesma tabela
- no QGIS não sei se é possível estabelecer relação 1 para n tendo apenas
uma tabela.

Agradeço a vossa opinião.

abraço,
Pedro

Obrigado Alexandre.

O que eu gostava mesmo era fazer isso (queries/ pesquisas entre vários
layers) dentro do QGIS.
Ou seja, dar ao utilizador final (neste caso não serei eu) a possibilidade
de questionar e cruzar todos os dados de todas as tabelas.

Vou então tentar unir tabelas numa só, ver como corre e depois reporto o
resultado final.

Pedro

--
View this message in context: http://osgeo-org.1560.x6.nabble.com/Consulta-Espacial-tp5188976p5189694.html
Sent from the QGIS-pt mailing list archive at Nabble.com.
_______________________________________________
QGIS-pt mailing list
QGIS-pt@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/qgis-pt

Estou a tentar juntar as tabelas mas não está a funcionar como imaginei.

Vou tentar descrever o problema e a solução que adoptei.

Tenho 2 tabelas:
- Clientes(17000 registos de um concelho, 15 colunas alfanuméricas mais 1
geom)
- Concelhos (308 registos, 55 colunas alfanuméricas mais 1 geom)

Criei uma tabela nova (juntando as 2 anteriores pelo campo comum DICO).
Para fazer isto utilizei a função Cross Join entre as talelas 'Clientes' e
'Concelhos' e fiquei realmente com uma tabela nova (tabela Total) com o
sumatório daquelas colunas (cerca de 70).
Coloquei o srid dos 2 campos geométricos com o 4326

O que eu "acho" que aconteceu na tabela Total (a nova),foi que para cada um
dos 17000 registos que estavam originalmente na tabela Clientes
foram acrescentados os registos da tabela Concelhos.

Digo "acho" porque quando eu tento abrir a tabela Total ele fica a processar
indefinidamente e manda-me o pc abaixo.
No QGIS já consegui carregar a tabela Total mas os zooms são lentíssimosssss

Imagino que tenha a ver com as colunas de geometria.

Se tiverem sugestões quanto abordagem que adoptei ou alguma solução para o
problema, agradeço (obviamente).

abraço,
Pedro

--
View this message in context: http://osgeo-org.1560.x6.nabble.com/Consulta-Espacial-tp5188976p5189997.html
Sent from the QGIS-pt mailing list archive at Nabble.com.

Pedro,

Não me parece q devas fazer isso. Simplesmente carrega as tabelas individualmente para o PostGIS. Desde q elas estejam na mm base de dados, tu consegues fazer queries SQL entre todas as tabelas, da forma como o Alexandre de indicou.

Abraço,
Pedro Venâncio

Em 25/02/2015 18:11, “Pedro” <pedro.ferro@gmail.com> escreveu:

Estou a tentar juntar as tabelas mas não está a funcionar como imaginei.

Vou tentar descrever o problema e a solução que adoptei.

Tenho 2 tabelas:

  • Clientes(17000 registos de um concelho, 15 colunas alfanuméricas mais 1
    geom)
  • Concelhos (308 registos, 55 colunas alfanuméricas mais 1 geom)

Criei uma tabela nova (juntando as 2 anteriores pelo campo comum DICO).
Para fazer isto utilizei a função Cross Join entre as talelas ‘Clientes’ e
‘Concelhos’ e fiquei realmente com uma tabela nova (tabela Total) com o
sumatório daquelas colunas (cerca de 70).
Coloquei o srid dos 2 campos geométricos com o 4326

O que eu “acho” que aconteceu na tabela Total (a nova),foi que para cada um
dos 17000 registos que estavam originalmente na tabela Clientes
foram acrescentados os registos da tabela Concelhos.

Digo “acho” porque quando eu tento abrir a tabela Total ele fica a processar
indefinidamente e manda-me o pc abaixo.
No QGIS já consegui carregar a tabela Total mas os zooms são lentíssimosssss

Imagino que tenha a ver com as colunas de geometria.

Se tiverem sugestões quanto abordagem que adoptei ou alguma solução para o
problema, agradeço (obviamente).

abraço,
Pedro


View this message in context: http://osgeo-org.1560.x6.nabble.com/Consulta-Espacial-tp5188976p5189997.html
Sent from the QGIS-pt mailing list archive at Nabble.com.


QGIS-pt mailing list
QGIS-pt@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/qgis-pt

Pedro Venâncio-2 wrote

Pedro,

Não me parece q devas fazer isso. Simplesmente carrega as tabelas
individualmente para o PostGIS. Desde q elas estejam na mm base de dados,
tu consegues fazer queries SQL entre todas as tabelas, da forma como o
Alexandre de indicou.

Abraço,
Pedro Venâncio
Em 25/02/2015 18:11, "Pedro" &lt;

pedro.ferro@

&gt; escreveu:

Estou a tentar juntar as tabelas mas não está a funcionar como imaginei.

Vou tentar descrever o problema e a solução que adoptei.

Tenho 2 tabelas:
- Clientes(17000 registos de um concelho, 15 colunas alfanuméricas mais
1
geom)
- Concelhos (308 registos, 55 colunas alfanuméricas mais 1 geom)

Criei uma tabela nova (juntando as 2 anteriores pelo campo comum DICO).
Para fazer isto utilizei a função Cross Join entre as talelas 'Clientes'
e
'Concelhos' e fiquei realmente com uma tabela nova (tabela Total) com o
sumatório daquelas colunas (cerca de 70).
Coloquei o srid dos 2 campos geométricos com o 4326

O que eu "acho" que aconteceu na tabela Total (a nova),foi que para cada
um
dos 17000 registos que estavam originalmente na tabela Clientes
foram acrescentados os registos da tabela Concelhos.

Digo "acho" porque quando eu tento abrir a tabela Total ele fica a
processar
indefinidamente e manda-me o pc abaixo.
No QGIS já consegui carregar a tabela Total mas os zooms são
lentíssimosssss

Imagino que tenha a ver com as colunas de geometria.

Se tiverem sugestões quanto abordagem que adoptei ou alguma solução para
o
problema, agradeço (obviamente).

abraço,
Pedro

Eu já fiz umas queries que transformei em vistas e carreguei no QGIS.

Mas o meu problema é que eu pretendo dar aos utilizadores finais (não serei
eu, não terão acesso ao postgis, não têm grandes conhecimentos do
funcionamento de SIG e BD, e que só irão mexer no QGIS) liberdade e
capacidade para fazerem as mais variadas pesquisas que entenderem.

As diferentes tabelas que tenho devem ter para aí umas 300 variáveis
(colunas) e queria que eles pudessem cruzar toda essa informação
"livremente".

Daí a ideia de colocar tudo na mesma tabela no Postgis e depois no QGIS
utilizavam o Filtro Avançado da Tabela de Atributos para fazerem as
pesquisas mas fica pesadíssimo ( e ainda só tenho 2 tabelas juntas)
Imagino que "o peso" esteja relacionado com os diferentes campos geom.
Talvez eliminando alguns campos geométricos... não sei bem...tenho que
pensar e investigar melhor

Deve haver alguma forma de fazer isto de uma forma mais "limpa" do que
aquela que estou a fazer.

abraço,
Pedro

--
View this message in context: http://osgeo-org.1560.x6.nabble.com/Consulta-Espacial-tp5188976p5190200.html
Sent from the QGIS-pt mailing list archive at Nabble.com.

Pois, criares essa mega tabela vai contra a essência das bases de dados relacionais. Repara que se tiveres 300 clientes num concelho, vais repetir 300 vezes todos os seus atributos, incluindo as suas geometrias.

Ainda assim, se o quisesses fazer, não faz sentido usares o CROSS JOIN, uma vez que o que faz é criar todas as combinações possíveis entre os registos. O que precisas seria qualquer coisa deste tipo:

FROM tabela a JOIN tabela b ON (a.cod = b.cod)

Em relação aos campos a disponibilizar e as geometrias, tens a certeza que precisas de todos eles?

Entretanto, dado que pretendes que os utilizadores façam as pesquisas de uma forma cómoda e cruzando todas as variáveis que entenderem, só vejo uma solução viável, que é a construção de um plugin python com um interface simples de selecção de variáveis, que por trás construa o SQL necessário para efectuar a consulta e o código necessário para adicionar o resultado ao QGIS.

Cumprimentos,

Alexandre Neto

Em 25/02/2015 19:07, “Pedro Venâncio” <pedrongvenancio@gmail.com> escreveu:

Pedro,

Não me parece q devas fazer isso. Simplesmente carrega as tabelas individualmente para o PostGIS. Desde q elas estejam na mm base de dados, tu consegues fazer queries SQL entre todas as tabelas, da forma como o Alexandre de indicou.

Abraço,
Pedro Venâncio

Em 25/02/2015 18:11, “Pedro” <pedro.ferro@gmail.com> escreveu:

Estou a tentar juntar as tabelas mas não está a funcionar como imaginei.

Vou tentar descrever o problema e a solução que adoptei.

Tenho 2 tabelas:

  • Clientes(17000 registos de um concelho, 15 colunas alfanuméricas mais 1
    geom)
  • Concelhos (308 registos, 55 colunas alfanuméricas mais 1 geom)

Criei uma tabela nova (juntando as 2 anteriores pelo campo comum DICO).
Para fazer isto utilizei a função Cross Join entre as talelas ‘Clientes’ e
‘Concelhos’ e fiquei realmente com uma tabela nova (tabela Total) com o
sumatório daquelas colunas (cerca de 70).
Coloquei o srid dos 2 campos geométricos com o 4326

O que eu “acho” que aconteceu na tabela Total (a nova),foi que para cada um
dos 17000 registos que estavam originalmente na tabela Clientes
foram acrescentados os registos da tabela Concelhos.

Digo “acho” porque quando eu tento abrir a tabela Total ele fica a processar
indefinidamente e manda-me o pc abaixo.
No QGIS já consegui carregar a tabela Total mas os zooms são lentíssimosssss

Imagino que tenha a ver com as colunas de geometria.

Se tiverem sugestões quanto abordagem que adoptei ou alguma solução para o
problema, agradeço (obviamente).

abraço,
Pedro


View this message in context: http://osgeo-org.1560.x6.nabble.com/Consulta-Espacial-tp5188976p5189997.html
Sent from the QGIS-pt mailing list archive at Nabble.com.


QGIS-pt mailing list
QGIS-pt@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/qgis-pt


QGIS-pt mailing list
QGIS-pt@lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/qgis-pt

Sim têm razão.

Neste meu caso estou adicionar a geometria de um concelho a cada um dos
17000 registos que tenho na tabela Clientes.....
Para já vou limpar e deixar apenas um registo com os limites do concelho
para ver como se comporta

E ver essa sugestão do JOIN em vez do Cross Join, para ver os resultados são
os que pretendo.

Obrigado e depois relato como correu.
Pedro

--
View this message in context: http://osgeo-org.1560.x6.nabble.com/Consulta-Espacial-tp5188976p5190223.html
Sent from the QGIS-pt mailing list archive at Nabble.com.

Provavelmente não foi a solução mais "bonita" mas funcionou.. limpei na
tabela Clientes a coluna geom_concelhos com os limites do concelho, excepto
um registo (para ficar com um limite).

Pedro

--
View this message in context: http://osgeo-org.1560.x6.nabble.com/Consulta-Espacial-tp5188976p5190969.html
Sent from the QGIS-pt mailing list archive at Nabble.com.