Ir para o conteúdo

 Voltar a Geral - usuá...
Tela cheia

Erro na ferramenta seleção por atributo

13 de Setembro de 2008, 20:01 , por Desconhecido - | Ninguém seguindo este artigo por enquanto.
Visualizado 5 vezes

Utilizando a ferramenta “seleção por atributo” percebi um erro na mesma, quando se utiliza um campo numérico da tabela de atributo de algum tema a ferramenta trata os dados como tipo “texto” e não como tipo “numérico” (o correto), sendo assim quando se faz uma seleção e.g.=: “área maior que 30000” a ferramenta seleciona todas as feições com atributos que começam com números maiores que 3  (e.g.: feições com áreas de valor  4). E quando se executa alguma pesquisa em campos tipo “texto”, a ferramenta não conseguiu selecionar os atributos que possuem acento (e.g. :Goiânia), mesmo listando eles como opção de seleção.

Alguém já havia percebido esses problemas e conseguiu resolve-los?

Edmar obrigado pela ajuda anterior sobre o  do tempo de ativação. Vou tentar aplicar

Autor: Levindo Cardoso Medeiros


33 comentários

  • 04f1e660b0aa64c4b4491da31b6b3356?only path=false&size=50&d=404Edmar Moretti(usuário não autenticado)
    15 de Setembro de 2008, 8:09

     

    Levindo:

    Sobre a acentuação, testei aqui e não encontrei problemas.Acentuação é algo difícil de resolver. Muitas vezes os dados são inseridos na tabela de atributos usando uma codificação de caracteres não adequada para o Brasil, nesses casos a aplicação acaba errando, uma vez que ela espera uma codificação x e recebe uma y.

    Realmente o erro na seleção por atributos em campos numéricos existe. O problema é que o Mapserver não informa se um campo é texto ou numérico, ficando difícil executar a operação correta, uma vez que a sintaxe de seleção é diferente para cada tipo.

    Uma solução é testar o valor que o usuário está buscando, e não o tipo de campo, para verificar se é do tipo texto ou numérico. O problema é que a tabela de atributos pode ter números em campo texto, nesse caso, irá ocorrer um erro, mas creio que essa situação é menos comum.

    Para corrigir o problema dessa forma, segue o código alterado. Procure pela função selecaoAtributos, no arquivo i3geo/classesphp/classe_selecao.php e substitua o texto da função por este (por favor me dê um retorno se funcionou corretamente):

         function selecaoAtributos($tipo,$item,$operador,$valor)
        {
            if ($tipo == "limpa")
            {return($this->selecaoLimpa());}
            if ($tipo == "inverte")
            {return($this->selecaoInverte());}
            $operador = explode(",",$operador);
            $operador = $operador[1];
            $this->layer->set("template","none.htm");
            $indxlayer = $this->layer->index;
            if (file_exists(($this->arquivo)."qy"))
            {$this->mapa->loadquery(($this->arquivo)."qy");}
            $res_count = $this->layer->getNumresults();
            $shp_atual = array();
            for ($i = 0; $i < $res_count;++$i)
            {
                $rc = $this->layer->getResult($i);
                $shp_atual[] = $rc->shapeindex;
            }
            $this->mapa->freequery($indxlayer);
            $shpi = array();
            if($this->layer->connectiontype == MS_POSTGIS)
            {$this->layer->querybyattributes($item,$item." ".$operador." '".$valor."' ",1);}
            else
            {        
                if(!is_numeric($valor))
                {$this->layer->querybyattributes($item,'("['.$item.']"'.$operador.'"'.$valor.'")',1);}
                else
                {$this->layer->querybyattributes($item,'(['.$item.']'.$operador.' '.$valor.' )',1);}
            }
            $res_count = $this->layer->getNumresults();
            $shpi = array();
            for ($i = 0; $i < $res_count; ++$i)
            {
                $result = $this->layer->getResult($i);
                $shpi[]  = $result->shapeindex;
            }
            if ($tipo == "adiciona")
            {return($this->selecaoAdiciona($shpi,$shp_atual));}
            if ($tipo == "retira")
            {return($this->selecaoRetira($shpi,$shp_atual));}
            return("ok");
        }

    • 9f8f77f22f62b557c12bfcc18ef1b94d?only path=false&size=50&d=404Levindo Cardoso Medeiros(usuário não autenticado)
      15 de Setembro de 2008, 8:39

       

      Edmar, funcionou perfeitamente.

      Sobre o problema da acentuação, talvez seja isso mesmo que vc colocou, pois estou usando arquivos no formato shp. O erro continua aqui no meu.

      Vc acha que é vantagem eu estar convertendo para postgis os dados? Há ganho de peformace entre postgis e shp?

      Muito obrigado pela ajuda, como não sou progamador, estou tentando aprender ainda, essa parte do programa me pega. Mas parabéns para vc e sua equipe pelo excelente trabalho e suporte prestado.

      • 04f1e660b0aa64c4b4491da31b6b3356?only path=false&size=50&d=404Edmar Moretti(usuário não autenticado)
        15 de Setembro de 2008, 13:10

         

        A performance com Postgis é bem melhor e vc pode utilizar sua base de dados em outras aplicações que necessitem o uso de SQL. Aconselho sim a migração para o Postgis.

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