Ir para o conteúdo

 Voltar a Geral - usuá...
Tela cheia

Ajuda no uso do Natural Join

24 de Janeiro de 2011, 15:59 , por Desconhecido - | Ninguém seguindo este artigo por enquanto.
Visualizado 65 vezes

Boa tarde, 

Estou com a seguinte duvida: Preciso fazer um join de duas tabelas que estão no meu banco de dados, e por recomendação anterior, estou tentando usar o SQL invés da semantica de join do Mapserver. Porém, acontece algum erro ao abrir o mapa e essa shape que envolve o join simplesmente não é carregada.

 

A conexão que estou usando é a seguinte: 

CONNECTION "host=localhost user=postgres password=***** dbname=***** port=5432 options='-c client_encoding=LATIN1'" 

CONNECTIONTYPE POSTGIS 

DATA the_geom FROM (select * FROM tabela1 NATURAL JOIN tabela2) as foo USING UNIQUE gid USING SRID=-1  

Obs: Executando o  "select * FROM tabela1 NATURAL JOIN tabela2" direto no meu banco de dados, a tabela resultante é justamente a que eu quero usar.

 

Queria saber se esse uso tem algum parametro incorreto, ou não é aceito dentro do mapfile, e se possivel, alguma maneira de contornar isso obtendo o mesmo resultado.

 

Obrigado desde já,

Cristopher. 

Autor: Cristopher Zanchetta


1010 comentários

  • 04f1e660b0aa64c4b4491da31b6b3356?only path=false&size=50&d=404Edmar Moretti(usuário não autenticado)
    24 de Janeiro de 2011, 16:35

     

    O SQL

    select * FROM tabela1 NATURAL JOIN tabela2

     funcionou? Estranho, deveria ser algo como:

    select * FROM tabela1,tabela2 where tabela1.id = tabela2.id

    • Fff6e76825437d652acbadf47335d706?only path=false&size=50&d=404Cristopher Zanchetta(usuário não autenticado)
      24 de Janeiro de 2011, 16:47

       

      Testando este select que você passou o resultado é quase o mesmo, porém a coluna em comum entre as tabelas aparece duas vezes na tabela resultante. De qualquer forma, não funcionou no i3geo também. O erro mostrado é:Error in loadLayer(): Parsing error near (FROM):(line 9)A linha 9 é onde esta o DATA com esse select. 

      • 04f1e660b0aa64c4b4491da31b6b3356?only path=false&size=50&d=404Edmar Moretti(usuário não autenticado)
        24 de Janeiro de 2011, 17:10

         

        Vc precisa definir os itens das tabelas que vc quer, por exemplo:

         

        DATA "the_geom FROM (select tabela1.id as gid, tabela1.geometria as the_geom FROM tabela1,tabela2 WHERE tabela1.id = tabela2.id ) as foo USING UNIQUE gid USING SRID=-1"

        • Fff6e76825437d652acbadf47335d706?only path=false&size=50&d=404Cristopher Zanchetta(usuário não autenticado)
          27 de Janeiro de 2011, 14:31

           

          Acabei de fazer diversos testes com esse formato, e em todos os casos recebi a mensagem "Ocorreu um erro no mapa - montaMapa".Testei o select no meu banco de dados e funcionou perfeitamente também, usando um modelo muito semelhante a esse que você me passou.Essa consulta para o select, dentro do mapfile, é interpretada como SQL mesmo ou é somente semelhante? Pois todas as tentativas que fiz resultavam na tabela correta na consulta no PgAdmin, mas todas dão erro no i3geo. Alguma ideia? 

          • 04f1e660b0aa64c4b4491da31b6b3356?only path=false&size=50&d=404Edmar Moretti(usuário não autenticado)
            28 de Janeiro de 2011, 15:45

             

            Vc poderia postar seu mapfile aqui? O problema pode não estar no DATA

            • Fff6e76825437d652acbadf47335d706?only path=false&size=50&d=404Cristopher Zanchetta(usuário não autenticado)
              1 de Fevereiro de 2011, 9:41

               

              MAPFONTSET "/opt/www/html/i3geo/symbols/fontes.txt"SYMBOLSET "/opt/www/html/i3geo/symbols/simbolos.sym"#--------------------------------------------------------------------------------------  LAYER CONNECTION "host=127.0.0.1 user=postgres password=***** dbname=***** port=5432 options='-c client_encoding=LATIN1'"       CONNECTIONTYPE POSTGIS  #DATA "the_geom FROM (select * FROM almoxarifados NATURAL JOIN almoxarifados_dados) USING UNIQUE gid" #DATA "geom FROM (select almoxarifados.gid as uniq,almoxarifados.geom as geom, almoxarifados_dados.teste as info FROM almoxarifados,almoxarifados_dados WHERE almoxarifados.gid = almoxarifados_dados.gid) as foo USING UNIQUE uniq USING SRID=-1"  #DATA "the_geom FROM (select almoxarifados.gid as uniq,almoxarifados.geom as geom, almoxarifados_dados.teste as info FROM almoxarifados,almoxarifados_dados WHERE almoxarifados.gid = almoxarifados_dados.gid) as foo USING UNIQUE gid USING SRID=-1" DATA "the_geom FROM almoxarifados USING UNIQUE gid" METADATA         "CLASSE" "SIM"         "TEXTO" ""         "TABELA" "NAO"         "TEMA" "Almoxarifados" "ITENS"  "gid" "ITENSDESC"  "Desc:" "ITENSLINK" "www.google.com" "TIP"  "gid" END NAME "Almox" SIZEUNITS PIXELS STATUS DEFAULT TOLERANCE 0 TOLERANCEUNITS PIXELS TYPE POINT UNITS METERS CLASS NAME "Almoxarifados" STYLE         COLOR 20 22 75 OUTLINECOLOR 0 0 0         SIZE 11 SYMBOL "pt2l" END END  ENDEND//-------------------------------------------------------------------------------------------------  Usando o mapfile dessa forma ele funciona perfeitamente, pois está acessando os dados de uma unica tabela. Os outros DATAS comentados são as outras tentativas que não deram certo, cujo select funciona quando executado no banco de dados. Tentei também mudar a informação do METADATA ao usar o outro DATA pois o nome das colunas na tabela construida é outro, mas continuou não funcionando. 

              • 04f1e660b0aa64c4b4491da31b6b3356?only path=false&size=50&d=404Edmar Moretti(usuário não autenticado)
                1 de Fevereiro de 2011, 23:51

                 

                Vc chegou a rodar o loca​lhos​t/i3​geo/​test​amap​file​.php para ver se apresenta alguma mensagem de erro ou olhou o log do Mapserver?

                • Fff6e76825437d652acbadf47335d706?only path=false&size=50&d=404Cristopher Zanchetta(usuário não autenticado)
                  2 de Fevereiro de 2011, 9:06

                   

                  Hm, tinha me esquecido dessas ferramentas. Estou debuggando já e posto assim que tiver novos resultados. Obrigado.

                  • Fff6e76825437d652acbadf47335d706?only path=false&size=50&d=404Cristopher Zanchetta(usuário não autenticado)
                    18 de Fevereiro de 2011, 14:53

                     

                    Demorei a responder mas, enfimConsegui fazer usando aquele mesmo modelo. O problema era o SRID, que eu tinha me esquecido que ao converter a shape para o banco de dados havia usado o SRID 4291, então foi só indicar esse SRID no data. Mas agora, tenho outra duvida: É possivel fazer um join com um elemento de uma tabela de banco de dados e uma shape fora do banco de dados, em um diretorio? Não parece possivel, mas, gostaria de tirar a duvida.

                    • 04f1e660b0aa64c4b4491da31b6b3356?only path=false&size=50&d=404Edmar Moretti(usuário não autenticado)
                      18 de Fevereiro de 2011, 15:48

                       

                      Para utilizar SQL com shapefile é necessário usar uma conexão via OGR, mas mesmo assim, acho que não seria possível relacionar com o banco.

acesso à versão beta do i3geosaude

19 de Março de 2015, 10:03, por Desconhecido

Prezados amigos, 



comunidade i3geosaude

7 de Janeiro de 2015, 10:22, por Desconhecido

Prezados Colaboradores,



Primeira Reunião do Grupo de Trabalho do i3Geo ocorre no dia 20 de novembro

6 de Novembro de 2013, 17:46, por Desconhecido

Na manhã do dia 20 de novembro, junto ao Seminário Anual do SISP, acontecerá a 1a. Reunião do Grupo de Trabalho da solução i3Geo, para tratar de necessidades de melhoria ou adaptação da solução disponível no Portal SPB, para uso pela Administração Pública Federal. Os anseios dos dirigentes de TI do Sistema de Administração de Recursos de Tecnologia da Informação – SISP, em busca de soluções disponíveis no Portal do SPB que atendam às necessidades da Administração e de cada Órgão em específico, foram objeto de discussão em reuniões da Comissão de Coordenação do Sistema ao longo de 2013. A formação do Grupo de Trabalho do i3Geo é resultado das atividades já realizadas até o momento entre os órgãos integrantes do SISP na reflexão, modelagem e aprimoramento do conceito e da finalidade do Software Público para a Administração Pública e para a Sociedade.



Testes com o i3Geo (Geosaúde) em Manaus

24 de Setembro de 2013, 11:39, por Desconhecido

Projeto do Departamento de Monitoramento e Avaliação do SUS (DEMAS) do Ministério da Saúde, iniciou os testes e implantação do i3Geo, distribuição "Geosaúde", na Secretaria Municipal de Saúde de Manaus.



Funai cria Portal de mapas baseado em tecnologias livres (i3Geo)

1 de Agosto de 2011, 18:27, por Desconhecido

Autor: Edmar Moretti