Ir para o conteúdo

 Voltar a Geral - usuá...
Tela cheia

Problema com cáculo da área e distância entre dois pontos

30 de Março de 2010, 13:53 , por Desconhecido - | Ninguém seguindo este artigo por enquanto.
Visualizado 96 vezes

Olá,

 Estou utilizando o i3Geo 4.0 e estou tendo problemas quando tento medir uma área ou a distância entre dois pontos quando estou utilizando um zoom muito grande. Por exemplo:

 Na escala 1:40000

Ao usar a ferramenta de medição de área, não consigo clicar em mais de 5 pontos. Ao clicar no quinto ponto, acontece a mesma coisa se eu desse dois cliques (sempre no quinto ponto) e encerra a minha medida.

Ao usar a ferramenta de medição de distância, quando vou medir distâncias pequenas, a soma das duas distâncias sempre desprezam as casa decimais da primeira distância, então se eu for somar sempre números menores que 1, ele só vai utilizar a última medida fazendo por exemplo 0.514 + 0.982  = 0.982 e se continuar somando, + 0.213 ele despreza o 0.982 e dá a soma como 0.213. Outro exemplo, 5.341 + 2.525 = 7.525 (ele arredonda o primeiro número e soma o segundo).

 

Alguém sabe como eu posso resolver isso?

 

Obrigado,

 

Victor Muniz Cezar
Embrapa Informática Agropecuária

Autor: Victor Cezar


55 comentários

  • 04f1e660b0aa64c4b4491da31b6b3356?only path=false&size=50&d=404Edmar Moretti(usuário não autenticado)
    1 de Abril de 2010, 10:18

     

    Vitor:

    Vc poderia migrar para uma versão mais recente do i3Geo? Correções desse tipo são inviáveis em versões mais antigas. Se vc instalar uma versão mais nova e o problema continuar, por favor avise.

    • 8748767d9c83198773fff76029006c01?only path=false&size=50&d=404Victor Cezar(usuário não autenticado)
      5 de Abril de 2010, 17:01

       

      Edmar,

       

      Olhando a função de cálculo de área do i3Geo (olhei na versão 4.3), fiquei um pouco na dúvida quanto a forma que a área é calculada. O código original é esse:

       

          area: function(pontos,pixel){
              if(typeof(console) !== 'undefined'){console.info("i3GEO.calculo.area()");}
              var $polygon_area,$i,$array_length;
              try{
                  if(pontos.xpt.length > 2){
                      $array_length = pontos.xpt.length;
                      pontos.xtela.push(pontos.xtela[0]);
                      pontos.ytela.push(pontos.ytela[0]);
                      pontos.xtela.push(pontos.xtela[0]);
                      pontos.ytela.push(pontos.ytela[1]);
                      $polygon_area = 0;
                      for ($i=0;$i <= $array_length;$i++)
                      {$polygon_area += ((pontos.xtela[$i] * pontos.ytela[$i+1])-(pontos.ytela[$i] * pontos.xtela[$i+1]));}
                      $polygon_area = Math.abs($polygon_area) / 2;
                  }
                  else
                  {$polygon_area = "Sao necessarios pelo menos tres pontos para o calculo";}
                  return $polygon_area*pixel;
              }
              catch(e){return (0);}
          },

       

       

      Mas na verdade não seria dessa forma?

       

          area: function(pontos,pixel){
              if(typeof(console) !== 'undefined'){console.info("i3GEO.calculo.area()");}
              var $polygon_area,$i,$array_length;
              try{
                  if(pontos.xpt.length > 2){
                      $array_length = pontos.xpt.length;
                      pontos.xtela.push(pontos.xtela[0]);
                      pontos.ytela.push(pontos.ytela[0]);

                       //REMOVI CODIGO AQUI

       
                      $polygon_area = 0;
                      for ($i=0;$i < $array_length;$i++)   // ALTEREI de <= para apenas <
                      {$polygon_area += ((pontos.xtela[$i] * pontos.ytela[$i+1])-(pontos.ytela[$i] * pontos.xtela[$i+1]));}
                      $polygon_area = Math.abs($polygon_area) / 2;
                  }
                  else
                  {$polygon_area = "Sao necessarios pelo menos tres pontos para o calculo";}
                  return $polygon_area*pixel;
              }
              catch(e){return (0);}
          },

       

      Não entendi o porque da utilização do terceiro e quarto "push" feito no código original. Não deveria incluir apenas o primeiro ponto no final do array para fechar o polígono? Qual o significado deste segundo ponto incluído no array?

       

      Obrigado,

       

      Victor Muniz Cezar
      Embrapa Informática Agropecuária

    • 8748767d9c83198773fff76029006c01?only path=false&size=50&d=404Victor Cezar(usuário não autenticado)
      22 de Abril de 2010, 13:06

       

      Com ninguém mais acontece este erro no cálculo?

      Todas as vezes que eu tento calcular a área de uma figura deste tipo (comecando com uma linha vertical) ele calcula errado. 

      • 04f1e660b0aa64c4b4491da31b6b3356?only path=false&size=50&d=404Edmar Moretti(usuário não autenticado)
        29 de Abril de 2010, 22:00

         

        Vitor:

        Suas observações estão corretas.

        Fiz as correções para a versão 4.3 e gerei um pacote (SP5) com os códigos. Vou fazer um SP também para a versão 4.2.

        []'s

         

    • 8748767d9c83198773fff76029006c01?only path=false&size=50&d=404Victor Cezar(usuário não autenticado)
      1 de Abril de 2010, 14:29

       

      Edmar, 

       

      Não posso migrar para uma versão mais nova por enquanto. Mas consegui fazer as alterações sobre o cálculo da distância entre dois pontos e o problema de não conseguir usar mais de 5 pontos para o cálculo da área. No entanto, reparei que o cálculo da área está apresentando erros (testei na minha versão 4.0 e na versão 4.3 do MMA). Quando eu continuo adicionando pontos no polígono (aumentando a área) o cálculo as vezes mostra que essa área diminuiu ao invés de aumentar.

      Eu tirei um printscreen (inclusive da versão 4.3) de duas telas que mostram exatamente este problema e coloquei no meu google docs. A imagem 1 teria que apresentar uma área menor que o da imagem 2, visto que eu apenas puxei um ponto para cima, e na verdade ocorre que a área é muito menor. E isto ocorre com bastante frequência.

      Imagem1:
      docs​.goo​gle.​com/​leaf​?id=​0B_0​95yr​4TM6​VNWY​yYmY​xNGQ​tOGQ​0My0​0ZDI​2LTk​4ZTU​tMzk​wOWY​5OTZ​kNWN​k&am​p;hl​=pt_​BR

       

       Imagem2:
      docs​.goo​gle.​com/​leaf​?id=​0B_0​95yr​4TM6​VNmN​mY2Z​kYjU​tYjd​kMi0​0MmF​kLTg​3MzI​tYTV​mNTc​3Y2Z​lZGI​5&am​p;hl​=pt_​BR

       

      Este problema ocorre mesmo, ou eu estou usando a ferramenta de cálculo da área de forma errada?

       

      Obrigado,

       

      Victor

       

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