/*jslint plusplus:false,white:false,undef: false, rhino: true, onevar: true, evil: true */ /* Title: Análise de Geometrias Permite capturar geometrias de uma ou mais camadas e executar operações de análise. Após o usuário selecionar elementos de um tema, a geometria pode ser capturada, ou seja, ela é armazenada no servidor para poder receber operações de análise. As operações envolvem cálculos, como área e perímetro, além de processos de cruzamento entre geometrias. Após realizar uma operação, o resultado é listado ou pode ser adicionado ao mapa como uma nova camada. As geometrias armazenadas ficam disponíveis temporariamente, assim como o mapfile do mapa atual. Veja: Arquivo: i3geo/ferramentas/analisageometrias/index.js.php About: Licença i3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet Direitos Autorais Reservados (c) 2006 Ministério do Meio Ambiente Brasil Desenvolvedor: Edmar Moretti edmar.moretti@mma.gov.br Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo sob os termos da Licença Pública Geral GNU conforme publicada pela Free Software Foundation; Este programa é distribuído na expectativa de que seja útil, porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral do GNU para mais detalhes. Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto com este programa; se não, escreva para a Free Software Foundation, Inc., no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ if(typeof(i3GEOF) === 'undefined'){ i3GEOF = []; } /* Classe: i3GEOF.analisaGeometrias */ i3GEOF.analisaGeometrias = { /* Variavel: aguarde Objeto DOM com a imagem de aguarde existente no cabeçalho da janela. */ aguarde: "", /* Function: inicia Inicia a ferramenta. É chamado por criaJanelaFlutuante Parametro: iddiv {String} - id do div que receberá o conteudo HTML da ferramenta */ inicia: function(iddiv){ try{ var temp,combot; $i(iddiv).innerHTML += i3GEOF.analisaGeometrias.html(); i3GEO.guias.mostraGuiaFerramenta("i3GEOanalisageometrias1","i3GEOanalisageometrias"); //eventos das guias $i("i3GEOanalisageometrias1").onclick = function() {i3GEO.guias.mostraGuiaFerramenta("i3GEOanalisageometrias1","i3GEOanalisageometrias");}; $i("i3GEOanalisageometrias2").onclick = function(){ if($i("i3GEOanalisageometrias2obj").style.display === "block") {return;} i3GEOF.analisaGeometrias.aguarde.visibility = "visible"; i3GEO.guias.mostraGuiaFerramenta("i3GEOanalisageometrias2","i3GEOanalisageometrias"); i3GEOF.analisaGeometrias.listaGeo(); }; $i("i3GEOanalisageometrias3").onclick = function() {i3GEO.guias.mostraGuiaFerramenta("i3GEOanalisageometrias3","i3GEOanalisageometrias");}; new YAHOO.widget.Button( "i3GEOanalisageometriasbotao1", {onclick:{fn: i3GEOF.analisaGeometrias.capturageo}} ); new YAHOO.widget.Button( "i3GEOanalisageometriasbotaocalculo", {onclick:{fn: i3GEOF.analisaGeometrias.calculo}} ); temp = $i("i3GEOanalisageometriasbotaocalculo-button").style; temp.minHeight = "1.5em"; temp.padding = "0px 5px"; new YAHOO.widget.Button( "i3GEOanalisageometriasbotaofuncoes", {onclick:{fn: i3GEOF.analisaGeometrias.funcoes}} ); temp = $i("i3GEOanalisageometriasbotaofuncoes-button").style; temp.minHeight = "1.5em"; temp.padding = "0px 5px"; new YAHOO.widget.Button( "i3GEOanalisageometriasbotaofuncoes1", {onclick:{fn: i3GEOF.analisaGeometrias.funcoes1}} ); temp = $i("i3GEOanalisageometriasbotaofuncoes1-button").style; temp.minHeight = "1.5em"; temp.padding = "0px 5px"; i3GEO.util.mensagemAjuda("i3GEOanalisageometriasmen1",$i("i3GEOanalisageometriasmen1").innerHTML); i3GEO.util.mensagemAjuda("i3GEOanalisageometriasmen2",$i("i3GEOanalisageometriasmen2").innerHTML); i3GEO.util.mensagemAjuda("i3GEOanalisageometriasmen3",$i("i3GEOanalisageometriasmen3").innerHTML); g_tipoacao=""; g_operacao=""; i3GEOF.analisaGeometrias.ativaFoco(); combot = ""; $i("i3GEOanalisageometriasoperacao").innerHTML = combot; i3GEOF.analisaGeometrias.aguarde.visibility = "hidden"; i3GEO.barraDeBotoes.ativaIcone("selecao"); } catch(erro){alert(erro);} }, /* Function: html Gera o código html para apresentação das opções da ferramenta Retorno: String com o código html */ html:function(){ var ins = ''; ins += '
'; ins += ' '; ins += '
'; ins += '
'; ins += ' '; ins += ' '; ins += ' '; ins += '
'; return ins; }, /* Function: criaJanelaFlutuante Cria a janela flutuante para controle da ferramenta. */ criaJanelaFlutuante: function(){ var minimiza,cabecalho,janela,divid,temp,titulo; //funcao que sera executada ao ser clicado no cabeçalho da janela cabecalho = function(){ i3GEOF.analisaGeometrias.ativaFoco(); }; minimiza = function(){ i3GEO.janela.minimiza("i3GEOF.analisaGeometrias"); }; //cria a janela flutuante titulo = "Análise de geometrias    "; janela = i3GEO.janela.cria( "500px", "300px", "", "", "", titulo, "i3GEOF.analisaGeometrias", false, "hd", cabecalho, minimiza ); divid = janela[2].id; i3GEOF.analisaGeometrias.aguarde = $i("i3GEOF.analisaGeometrias_imagemCabecalho").style; i3GEOF.analisaGeometrias.aguarde.visibility = "visible"; if(i3GEO.eventos.MOUSECLIQUE.toString().search("i3GEOF.analisaGeometrias.selecionaElemento()") < 0) {i3GEO.eventos.MOUSECLIQUE.push("i3GEOF.analisaGeometrias.selecionaElemento()");} if(i3GEO.eventos.ATUALIZAARVORECAMADAS.toString().search("i3GEOF.analisaGeometrias.comboTemas()") < 0) {i3GEO.eventos.ATUALIZAARVORECAMADAS.push("i3GEOF.analisaGeometrias.comboTemas()");} temp = function(){ i3GEO.eventos.MOUSECLIQUE.remove("i3GEOF.analisaGeometrias.selecionaElemento()"); if(i3GEO.eventos.ATUALIZAARVORECAMADAS.toString().search("i3GEOF.analisaGeometrias.comboTemas()") > 0) {i3GEO.eventos.ATUALIZAARVORECAMADAS.remove("i3GEOF.analisaGeometrias.comboTemas()");} }; YAHOO.util.Event.addListener(janela[0].close, "click", temp); i3GEOF.analisaGeometrias.inicia(divid); i3GEO.util.mudaCursor(i3GEO.configura.cursores,"pointer",i3GEO.Interface.IDMAPA,i3GEO.configura.locaplic); }, /* Function: ativaFoco Refaz a interface da ferramenta quando a janela flutuante tem seu foco ativado */ ativaFoco: function(){ if(g_operacao !== 'analisageometrias'){ i3GEO.barraDeBotoes.ativaIcone("selecao"); g_tipoacao='analisageometrias'; g_operacao='analisageometrias'; i3GEOF.analisaGeometrias.comboTemas(); var temp = $i(i3GEO.Interface.IDMAPA); if(temp){ temp.title = ""; temp.style.cursor="pointer"; } } var i = $i("i3GEOF.analisaGeometrias_c").style; i3GEO.janela.ULTIMOZINDEX++; i.zIndex = 21000 + i3GEO.janela.ULTIMOZINDEX; i3GEO.barraDeBotoes.ativaIcone("selecao"); }, /* Function: selecionaElemento Seleciona um elemento do tema ativo quando o usuário clica no mapa É executado no evento de clique no mapa, definido na inicialização da ferramenta. Veja: */ selecionaElemento: function(){ if(g_tipoacao === 'analisageometrias'){ var retorna = function(retorno){ if(i3GEO.Interface.ATUAL === "padrao") {i3GEO.atualiza(retorno);} i3GEO.Interface.atualizaTema(retorno,i3GEO.temaAtivo); }; i3GEO.janela.abreAguarde("i3GEO.atualiza",$trad("o1")); i3GEO.php.selecaopt(retorna,i3GEO.temaAtivo,objposicaocursor.ddx+" "+objposicaocursor.ddy,$i("i3GEOanalisageometriastipoOperacao").value,5); } }, /* Function: comboTemas Cria o combo com os temas disponíveis (temas ligados) para seleção. Veja: */ comboTemas: function(){ i3GEO.util.comboTemas( "i3GEOanalisageometriastemasLigados", function(retorno){ $i("i3GEOanalisageometriastemas").innerHTML = retorno.dados; if ($i("i3GEOanalisageometriastemasLigados")){ $i("i3GEOanalisageometriastemasLigados").onchange = function(){ i3GEO.mapa.ativaTema($i("i3GEOanalisageometriastemasLigados").value); }; } if(i3GEO.temaAtivo !== ""){ $i("i3GEOanalisageometriastemasLigados").value = i3GEO.temaAtivo; $i("i3GEOanalisageometriastemasLigados").onchange.call(); } }, "i3GEOanalisageometriastemas", "", false, "ligados" ); }, /* Function: capturaGeo Captura as geometrias selecionadas. As geometrias capturadas são armazenadas como objetos serializados no servidor, e podem ser utilizadas nas operações de análise. A captura é feita sob o tema ativo e os elementos selecionados. Veja: */ capturageo:function(){ if(i3GEOF.analisaGeometrias.aguarde.visibility === "visible") {return;} else {i3GEOF.analisaGeometrias.aguarde.visibility = "visible";} var p, cp = new cpaint(), nome=window.prompt("Nome que sera dado a geometria:"), temp = function(retorno){ if($i("i3GEOanalisageometrias2obj").style.display === "block"){ i3GEOF.analisaGeometrias.aguarde.visibility = "visible"; i3GEOF.analisaGeometrias.listaGeo(); } else{ i3GEOF.analisaGeometrias.aguarde.visibility = "hidden"; } }; try{ p = i3GEO.configura.locaplic+"/classesphp/mapa_controle.php?g_sid="+i3GEO.configura.sid+"&funcao=capturageometrias&tema="+$i("i3GEOanalisageometriastemasLigados").value+"&nome="+nome; cp.set_response_type("JSON"); cp.call(p,"capturageo",temp); }catch(e){ alert("Ocorreu um erro: "+e); i3GEOF.analisaGeometrias.aguarde.visibility = "hidden"; } }, /* Function: listaGeo Obtém a lista de geometrias já capturadas e monta a lista que é apresentada ao usuário. Veja: */ listaGeo: function(){ var montalistageometrias, p = i3GEO.configura.locaplic+"/classesphp/mapa_controle.php?g_sid="+i3GEO.configura.sid+"&funcao=listageometrias", cp = new cpaint(); montalistageometrias = function(retorno){ if(retorno.data != "") //não comparar com !== { var ins,cor,temp,j,k,i; ins = "

  "; ins += "

"; cor = "rgb(245,245,245)"; for (i=0;i"; ins += ""; ins += ""+retorno.data[i].layer+" "+retorno.data[i].arquivo+""; ins += ""; temp = retorno.data[i].dados; for (j=0;j"; } ins += "
"; if (temp[j].imagem !== "") {ins += "";} for (k=0;k";} ins += "
"; ins += ""; if (cor === "rgb(245,245,245)") {cor = "rgb(255,255,255)";} else {cor = "rgb(245,245,245)";} } $i("i3GEOanalisageometriaslistadegeometrias").innerHTML = ins; new YAHOO.widget.Button( "i3GEOanalisageometriasbotao4", {onclick:{fn: i3GEOF.analisaGeometrias.excluirGeo}} ); new YAHOO.widget.Button( "i3GEOanalisageometriasbotao5", {onclick:{fn: i3GEOF.analisaGeometrias.incluirNoMapa}} ); i3GEOF.analisaGeometrias.aguarde.visibility = "hidden"; } else{ $i("i3GEOanalisageometriaslistadegeometrias").innerHTML = "

Nenhuma geometria disponível."; i3GEOF.analisaGeometrias.aguarde.visibility = "hidden"; } }; cp.set_response_type("JSON"); cp.call(p,"listageometrias",montalistageometrias); }, /* Function: excluirGeo Exclui do servidor as geometrias marcadas na lista de geometrias. Veja: */ excluirGeo: function(){ if(i3GEOF.analisaGeometrias.aguarde.visibility === "visible") {return;} else {i3GEOF.analisaGeometrias.aguarde.visibility = "visible";} var lista,p,cp; lista = i3GEOF.analisaGeometrias.pegaGeometriasMarcadas(); if(lista == ""){ alert("Nenhuma geometria foi marcada"); i3GEOF.analisaGeometrias.aguarde.visibility = "hidden"; return; } $i("i3GEOanalisageometriaslistadegeometrias").innerHTML = "

Aguarde..."; p = i3GEO.configura.locaplic+"/classesphp/mapa_controle.php?g_sid="+i3GEO.configura.sid+"&funcao=removergeometrias&lista="+lista; cp = new cpaint(); cp.set_response_type("JSON"); cp.call(p,"removergeometrias",i3GEOF.analisaGeometrias.listaGeo); }, /* Function: incluirNoMapa Inclui no mapa as geometrias marcadas na lista de geometrias. Veja: */ incluirNoMapa:function(){ if(i3GEOF.analisaGeometrias.aguarde.visibility === "visible") {return;} else {i3GEOF.analisaGeometrias.aguarde.visibility = "visible";} var lista,p,cp, temp = function(){ i3GEO.atualiza(); i3GEOF.analisaGeometrias.aguarde.visibility = "hidden"; }; lista = i3GEOF.analisaGeometrias.pegaGeometriasMarcadas(); if(lista == ""){ alert("Nenhuma geometria foi marcada"); i3GEOF.analisaGeometrias.aguarde.visibility = "hidden"; return; } p = i3GEO.configura.locaplic+"/classesphp/mapa_controle.php?g_sid="+i3GEO.configura.sid+"&funcao=incmapageometrias&lista="+lista; cp = new cpaint(); cp.set_response_type("JSON"); cp.call(p,"incmapageometrias",temp); }, /* Function: pegaGeometriasMarcadas Retorna uma lista com os ids das geometrias que estão marcadas (checkbox) */ pegaGeometriasMarcadas:function(){ var inputs = $i("i3GEOanalisageometriaslistadegeometrias").getElementsByTagName("input"), listai = [], n = inputs.length; for (i=0;i */ calculo: function(){ var lista, temp, cp = new cpaint(), p, obj = $i("i3GEOanalisageometriasselecaocalculo"); if (obj.value !== ""){ if(i3GEOF.analisaGeometrias.aguarde.visibility === "visible") {return;} else {i3GEOF.analisaGeometrias.aguarde.visibility = "visible";} lista = i3GEOF.analisaGeometrias.pegaGeometriasMarcadas(); if(lista == ""){ alert("Nenhuma geometria foi marcada"); i3GEOF.analisaGeometrias.aguarde.visibility = "hidden"; return; } p = i3GEO.configura.locaplic+"/classesphp/mapa_controle.php?g_sid="+i3GEO.configura.sid+"&funcao=calculaGeometrias&operacao="+obj.value+"&lista="+lista; temp = function(){ i3GEOF.analisaGeometrias.aguarde.visibility = "hidden"; $i("i3GEOanalisageometrias2").onclick.call(); }; cp.set_response_type("JSON"); cp.call(p,"analisaGeometrias",temp); } }, /* Function: funcoes Realiza operações geométricas de cruzamento entre geometrias Veja: */ funcoes: function(){ var lista, temp, cp = new cpaint(), p, obj = $i("i3GEOanalisageometriasselecaofuncoes"); if (obj.value !== ""){ if(i3GEOF.analisaGeometrias.aguarde.visibility === "visible") {return;} else {i3GEOF.analisaGeometrias.aguarde.visibility = "visible";} lista = i3GEOF.analisaGeometrias.pegaGeometriasMarcadas() if(lista == ""){ alert("Nenhuma geometria foi marcada"); i3GEOF.analisaGeometrias.aguarde.visibility = "hidden"; return; } p = i3GEO.configura.locaplic+"/classesphp/mapa_controle.php?g_sid="+i3GEO.configura.sid+"&funcao=funcoesGeometrias&operacao="+obj.value+"&lista="+lista+"&recalcareaper="+$i("i3geoanalisageometriassemprecalcula").checked temp = function(){ i3GEOF.analisaGeometrias.aguarde.visibility = "hidden"; $i("i3GEOanalisageometrias2").onclick.call(); }; cp.set_response_type("JSON"); cp.call(p,"funcoesGeometrias",temp); } }, /* Function: funcoes1 Realiza operações geométricas em uma única geometria Veja: */ funcoes1: function(){ var lista, temp, cp = new cpaint(), p, obj = $i("i3GEOanalisageometriasselecaofuncoes1"); if (obj.value !== ""){ if(i3GEOF.analisaGeometrias.aguarde.visibility === "visible") {return;} else {i3GEOF.analisaGeometrias.aguarde.visibility = "visible";} lista = i3GEOF.analisaGeometrias.pegaGeometriasMarcadas(); if(lista == ""){ alert("Nenhuma geometria foi marcada"); i3GEOF.analisaGeometrias.aguarde.visibility = "hidden"; return; } p = i3GEO.configura.locaplic+"/classesphp/mapa_controle.php?g_sid="+i3GEO.configura.sid+"&funcao=funcoesGeometrias&operacao="+obj.value+"&lista="+lista+"&recalcareaper="+$i("i3geoanalisageometriassemprecalcula").checked; temp = function(retorno){ i3GEOF.analisaGeometrias.aguarde.visibility = "hidden"; $i("i3GEOanalisageometrias2").onclick.call(); }; cp.set_response_type("JSON"); cp.call(p,"funcoesGeometrias",temp); } } };