Olá Catarina,

 

Pelo exemplo de tabela, dá a entender que:

.OU existem linhas repetidas em alguma das tabelas 

.OU existe alguma coluna diferenciadora em alguma das tabelas mas que, não
estando incluída na query, não é possível identificar.

 

Algumas sugestões:

-Construa primeiro uma view com todas as colunas de ambas as tabelas
originais e verifique para um dos concelhos o porquê da repetição;

 

-Enquanto estiver a verificar apenas o conteúdo das tabelas (por exemplo no
pgadmin) pode omitir a coluna the_geom porque fica muito mais rápido (quando
for para visualizar/disponibilizar os dados geográficos, volta a incluir).

 

-Na query que enviou apenas apresenta os dados que existem em AMBAS as
tabelas. Se é o que quer, óptimo! J Se quer apresentar, por exemplo, TODOS
os dados da tabela de geometrias mesmo que não tenham dados, pode usar o
LEFT JOIN (também existem o RIGHT JOIN, INNER JOIN, OUTER JOIN e FULL JOIN
que vale a pena investigar). Neste caso:

  

SELECT t_geo.gid, t_geo.concelho, t_geo.distrito, t_geo.dico AS geo_dico,
t_geo.the_geom, 

                t_data.dico1 AS data_dico, t_data.censos, t_data.pop_res,
t_data.dens_pop

FROM limites_administrativos.limites_concelhos_vizinhos_edv t_geo 

LEFT JOIN demografia.pop_res t_data

ON t_geo.dico = t_data.dico1;

 

Pode ver aqui: http://www.w3schools.com/sql/sql_join_left.asp uma explicação
breve com exemplos.

 

Cumprimentos,

Rui Pedro.

 

From: [email protected]
[mailto:[email protected]] On Behalf Of Ana Catarina Ferreira
Pinheiro
Sent: terça-feira, 9 de Novembro de 2010 14:17
To: Duarte Carreira; [email protected]
Subject: Re: [Portugal] Join e Relates

 

Boa tarde,

Pois, uma ferramenta capaz de fazer este tipo de consultas era o ideal, mas
por agora temos de aproveitar as potencialidades do SQL, que são sem dúvida
poderosas.
Mas eu que ainda sou uma iniciante de SQL ainda ando aqui às aranhas .....
já fiz a view mas ao abrir no arcview ou no kosmo tenho o mesmo problema, no
arcview aparece apenas um registo e no kosmo aparecem todos os registos, mas
repetidos. 
Mostro o exemplo:
View: SELECT limites_concelhos_vizinhos_edv.gid,
limites_concelhos_vizinhos_edv.concelho,
limites_concelhos_vizinhos_edv.distrito,
limites_concelhos_vizinhos_edv.dico,
limites_concelhos_vizinhos_edv.the_geom, pop_res.dico1, pop_res.censos,
pop_res.pop_res, pop_res.dens_pop
   FROM limites_administrativos.limites_concelhos_vizinhos_edv,
demografia.pop_res
  WHERE limites_concelhos_vizinhos_edv.dico = pop_res.dico1;

Exemplo no Kosmo:


Com a view o problema persiste e não sei o que estou a fazer de errado, pois
a view no postgres retorna os valores correctos.

Cumprimentos,
Catarina

Em 09-11-2010 10:43, Duarte Carreira escreveu: 

Olá Catarina.

 

Temos de separar o que se passa em cada nível de software.

Para quem tem experiência com software esta separação talvez seja mais
invisível. No ArcGIS fazemos joins no ArcMap. O que é o equivalente a fazer
joins no QGIS, ou gvSIG ou outro desktop. Até aqui é igual.

 

Já nos relates, com ArcGIS temos uma interface gráfica que nos permite ligar
as 2 tabelas, quando há uma relação 1->muitos. Como esta interface gráfica
não existe noutros programas, temos de recorrer à função standard suportada
pelas bds para fazer este tipo de ligação. Ou seja, no mundo não esri,
podemos usar o padrão SQL para criar na bd o equivalente ao relate, que é a
view. Este conceito de View é universal a todas as bds. 

O que faltará fazer no Open Source será criar uma ferramenta que facilite a
consulta de tabelas com relações 1->muitos, através de views ou até em
memória (mas isto já seria “perigoso” quando as tabelas forem grandes – não
sei como faz o ArcGIS). Aliás, penso que isto falta na maioria dos programas
closed source. O único que conheço que resolve a coisa sem ter de usar SQL é
o ArcGIS. Mas posso estar enganado – alguém pode dar aqui uma achega? Em que
programas já viram isto ser resolvido com GUI?

 

Bom, de qualquer forma, o grande potencial do PostGIS está no SQL, e
enquanto não é feita no QGIS a mãe de todas as extensões para PostGIS ;)
temos de aprender a usá-lo. Mas acho que é um conhecimento muitíssimo
recompensador.

 

Duarte

 

 

-----Mensagem original-----
De: Ana Catarina Ferreira Pinheiro [mailto:[email protected]] 
Enviada: terça-feira, 9 de Novembro de 2010 10:31
Para: [email protected]
Cc: Duarte Carreira
Assunto: Re: [Portugal] Join e Relates

 

Olá Duarte,

 

Obrigada pela ajuda, já criei a view e estou a tentar abri-la, mas estou

ainda com alguns problemas que vou tentar resolver. Entretanto digo os

resultados.

Mas já agora, com o Postgres não há outra solução para fazer a ligação

às tabelas alfanuméricas, como fazíamos com as geodatabases do arcview???

 

Cumprimentos,

Catarina

 

Em 08-11-2010 16:46, Duarte Carreira escreveu:

> Catarina,

> 

> Que tal se dá com SQL? É que isto parece mesmo uma tarefa para o PostGIS.

> Pode criar uma view que une a tabela de polígonos com a alfanumérica,
repetindo os polígonos para cada registo correspondente.

> 

> Depois no QIGS (ou outro), pode fazer uma query à view com o id/nome do
polígono que quer e obtém todos os registos relacionados. (A inclusão das
geometrias na view é opcional.) [1]

> 

> Não é exactamente o pretendido, mas é muito próximo??

> 

> Quanto ao ArcGIS, suponho que a tabela alfanumérica não está registada na
Geodatabase? Se for isso, basta registá-la (botão direito no ArcCatalog).

> 

> Cumps,

> Duarte

> 

> [1]
http://postgis.refractions.net/pipermail/postgis-users/2008-April/019437.htm
l

> 

> 

> 

> 

> -----Mensagem original-----

> Date: Mon, 08 Nov 2010 15:11:47 +0000

> From: Ana Catarina Ferreira Pinheiro <mailto:[email protected]>
<[email protected]>

> Subject: [Portugal] Join e Relates

> To: [email protected]

> Message-ID: <mailto:[email protected]>
<[email protected]>

> Content-Type: text/plain; charset="iso-8859-1"

> 

> Boa tarde a todos,

> 

> Antes de mais nada, gostaria de dar os parab?ns ? organiza??o do III

> SASIG. Foi sem d?vida um espa?o de partilha e conhecimento do mundo dos

> SIG OpenSource.

> Para al?m do agradecimento que deixo aqui, venho pedir uma ajuda ;)

> Tenho estado a fazer alguns testes, mas estou a ter dificuldades. Passo

> a explicar:

> 

> Tenho os meus dados geogr?ficos em Postgres/Postgis bem como as tabelas

> alfanum?ricas, pretendo fazer um "relate" -->  uma rela??o entre um tema

> geogr?fico e uma tabela alfanum?rica, numa rela??o de 1 -->  muitos. Com

> o QuantumGis, apenas permite fazer join de tabelas dbf ou csv, que n?o ?

> o caso. Com o GvSIG, faz o relate mas na tabela alfanum?rica e n?o na

> geogr?fica. Com o Kosmo pensei que encontrava a solu??o, mas o que

> acontece ? que ele faz o relate (com as rela??es), mas n?o coloca os

> atributos correctos, isto ?, a um pol?gono est? associado 3 registos,

> por exemplo, o que aparece na tabela s?o os 3 registos mas apenas com a

> informa??o de um registo. Como podem ver no exemplo abaixo, os dados de

> Santa Maria da Feira aparecem apenas para os censos 2001 e na tabela

> alfanum?rica tem de 1981,1991 e 2001.

> 

> 

> Experimentei tamb?m com o ArcView e aqui tamb?m n?o estou a conseguir

> fazer nem o join nem o relate. Aparece-se o seguinte erro "Error getting

> a list of OIDs from the table"

> 

> Ser? que algu?m j? teve o mesmo problema e sabe como resolver???

> 

> Com os melhores cumprimentos,

> 

> --

> Ana Catarina Pinheiro

> Divis?o de Planeamento - Sector de Informa??o Geogr?fica

> Munic?pio de Vale de Cambra

> E-mail:[email protected]

> http://www.cm-valedecambra.pt

> Tel:(+351)256 420 510

> Fax:(+351)256 420 519

 

--

Ana Catarina Pinheiro

Divisão de Planeamento - Sector de Informação Geográfica

Município de Vale de Cambra

E-mail:[email protected]

http://www.cm-valedecambra.pt

Tel:(+351)256 420 510

Fax:(+351)256 420 519

 

 





-- 
Ana Catarina Pinheiro
Divisão de Planeamento - Sector de Informação Geográfica
Município de Vale de Cambra
E-mail:[email protected]
http://www.cm-valedecambra.pt
Tel:(+351)256 420 510
Fax:(+351)256 420 519
 

<<image001.png>>

_______________________________________________
Portugal mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/portugal

Responder a