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
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
docs.google.com/leaf?id=0B_095yr4TM6VNWYyYmYxNGQtOGQ0My00ZDI2LTk4ZTUtMzkwOWY5OTZkNWNk&hl=pt_BR Imagem2:
docs.google.com/leaf?id=0B_095yr4TM6VNmNmY2ZkYjUtYjdkMi00MmFkLTg3MzItYTVmNTc3Y2ZlZGI5&hl=pt_BR Este problema ocorre mesmo, ou eu estou usando a ferramenta de cálculo da área de forma errada? Obrigado, Victor