/* Title: Melhor caminho Calcula o melhor caminho entre dois pontos com base em uma imagem raster Arquivo: i3geo/ferramentas/melhorcaminho/index.js.php Licenca: GPL2 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@gmail.com 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. */ //TODO incluir opcao de buffer //TODO incluir opcao de selecao de elementos //TODO calcular valor pelo shapefile //TODO gerar o relatorio if(typeof(i3GEOF) === 'undefined'){ var i3GEOF = {}; } /* Classe: i3GEOF.melhorcaminho */ i3GEOF.melhorcaminho = { /* Variavel: aguarde Estilo do objeto DOM com a imagem de aguarde existente no cabeçalho da janela. */ aguarde: "", COORDENADASTEMA: "", /* Para efeitos de compatibilidade antes da versão 4.7 que não tinha dicionário */ criaJanelaFlutuante: function(){ i3GEOF.melhorcaminho.iniciaDicionario(); }, /* Function: iniciaDicionario Carrega o dicionário e chama a função que inicia a ferramenta O Javascript é carregado com o id i3GEOF.nomedaferramenta.dicionario_script */ iniciaDicionario: function(){ if(typeof(i3GEOF.melhorcaminho.dicionario) === 'undefined'){ i3GEO.util.scriptTag( i3GEO.configura.locaplic+"/ferramentas/melhorcaminho/dicionario.js", "i3GEOF.melhorcaminho.iniciaJanelaFlutuante()", "i3GEOF.melhorcaminho.dicionario_script" ); } else{ i3GEOF.melhorcaminho.iniciaJanelaFlutuante(); } }, /* Function: inicia Inicia a ferramenta. É chamado por criaJanelaFlutuante Parametro: iddiv {String} - id do div que receberá o conteudo HTML da ferramenta */ inicia: function(iddiv){ if(i3GEOF.melhorcaminho.MUSTACHE == ""){ $.get(i3GEO.configura.locaplic + "/ferramentas/melhorcaminho/template_mst.html", function(template) { i3GEOF.melhorcaminho.MUSTACHE = template; i3GEOF.melhorcaminho.inicia(iddiv); }); return; } $i(iddiv).innerHTML = i3GEOF.melhorcaminho.html(); i3GEOF.melhorcaminho.t0(); }, /* 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 += '
"+$trad('ajuda',i3GEOF.melhorcaminho.dicionario) + "
"+$trad('ajuda2',i3GEOF.melhorcaminho.dicionario) + "
"+$trad('ajuda3',i3GEOF.melhorcaminho.dicionario); i3GEO.util.proximoAnterior("","i3GEOF.melhorcaminho.t1()",ins,"i3GEOF.melhorcaminho.t0","i3GEOmelhorcaminhoresultado",true,"i3GEOF.melhorcaminho_rodape"); }, t1: function(){ var ins = "
"+$trad('raster',i3GEOF.melhorcaminho.dicionario) +" :
" +
"
"+$trad('temas',i3GEOF.melhorcaminho.dicionario) +" :
" +
"
"+$trad('pti',i3GEOF.melhorcaminho.dicionario)+""; ins += "
X (long): "; ins += $trad('grau',i3GEOF.melhorcaminho.dicionario)+" - "+$trad('minuto',i3GEOF.melhorcaminho.dicionario)+" - "+$trad('segundo',i3GEOF.melhorcaminho.dicionario)+"
"; ins += ""; ins += ""; ins += ""; ins += "Y (lat): "; ins += $trad('grau',i3GEOF.melhorcaminho.dicionario)+" - "+$trad('minuto',i3GEOF.melhorcaminho.dicionario)+" - "+$trad('segundo',i3GEOF.melhorcaminho.dicionario)+"
"; ins += ""; ins += ""; ins += ""; i3GEO.util.proximoAnterior("i3GEOF.melhorcaminho.t2()","i3GEOF.melhorcaminho.t4()",ins,"i3GEOF.melhorcaminho.t3","i3GEOmelhorcaminhoresultado",true,"i3GEOF.melhorcaminho_rodape"); i3GEO.eventos.cliquePerm.desativa(); i3GEO.eventos.removeEventos("MOUSECLIQUE",["i3GEOF.melhorcaminho.capturaPontoB()"]); i3GEO.eventos.adicionaEventos("MOUSECLIQUE",["i3GEOF.melhorcaminho.capturaPontoA()"]); //calcula as coordenadas em DD if(retorno != ""){ dms = i3GEO.calculo.dd2dms(retorno.data.ax,retorno.data.ay); dmsx = dms[0].split(" "); dmsy = dms[1].split(" "); $i("i3GEOmelhorcaminhoxg").value = dmsx[0]; $i("i3GEOmelhorcaminhoxm").value = dmsx[1]; $i("i3GEOmelhorcaminhoxs").value = dmsx[2]; $i("i3GEOmelhorcaminhoyg").value = dmsy[0]; $i("i3GEOmelhorcaminhoym").value = dmsy[1]; $i("i3GEOmelhorcaminhoys").value = dmsy[2]; } }, t4: function(){ var ins, retorno = i3GEOF.melhorcaminho.COORDENADASTEMA; ins = ""+$trad('ptf',i3GEOF.melhorcaminho.dicionario)+""; ins += "
X (long): "; ins += $trad('grau',i3GEOF.melhorcaminho.dicionario)+" - "+$trad('minuto',i3GEOF.melhorcaminho.dicionario)+" - "+$trad('segundo',i3GEOF.melhorcaminho.dicionario)+"
"; ins += ""; ins += ""; ins += ""; ins += "Y (lat): "; ins += $trad('grau',i3GEOF.melhorcaminho.dicionario)+" - "+$trad('minuto',i3GEOF.melhorcaminho.dicionario)+" - "+$trad('segundo',i3GEOF.melhorcaminho.dicionario)+"
"; ins += ""; ins += ""; ins += ""; i3GEO.util.proximoAnterior("i3GEOF.melhorcaminho.t3()","i3GEOF.melhorcaminho.t5()",ins,"i3GEOF.melhorcaminho.t4","i3GEOmelhorcaminhoresultado",true,"i3GEOF.melhorcaminho_rodape"); i3GEO.eventos.cliquePerm.desativa(); i3GEO.eventos.removeEventos("MOUSECLIQUE",["i3GEOF.melhorcaminho.capturaPontoA()"]); i3GEO.eventos.adicionaEventos("MOUSECLIQUE",["i3GEOF.melhorcaminho.capturaPontoB()"]); //calcula as coordenadas em DD if(retorno != ""){ dms = i3GEO.calculo.dd2dms(retorno.data.bx,retorno.data.by); dmsx = dms[0].split(" "); dmsy = dms[1].split(" "); $i("i3GEOmelhorcaminhoixg").value = dmsx[0]; $i("i3GEOmelhorcaminhoixm").value = dmsx[1]; $i("i3GEOmelhorcaminhoixs").value = dmsx[2]; $i("i3GEOmelhorcaminhoiyg").value = dmsy[0]; $i("i3GEOmelhorcaminhoiym").value = dmsy[1]; $i("i3GEOmelhorcaminhoiys").value = dmsy[2]; } }, t5: function(){ var b, ins = ""+$trad('lut',i3GEOF.melhorcaminho.dicionario); ins += "
"+$trad('maiorque',i3GEOF.melhorcaminho.dicionario)+" | "+$trad('menorque',i3GEOF.melhorcaminho.dicionario)+" | "+$trad('novovalor',i3GEOF.melhorcaminho.dicionario)+" | |
"; ins += " | "; ins += " | "; ins += " | "; ins += " |
"+$trad('buffer',i3GEOF.melhorcaminho.dicionario)+"
"+$trad('fim',i3GEOF.melhorcaminho.dicionario)+""; ins += "
";
ins += "
Tipo | Custo | |||||||||
Linha reta entre os pontos A e B | "; break; case "best_path": ins += "Melhor caminho | "; break; case "best_path_within_buffer": ins += "Melhor caminho dentro do buffer | "; break; case "informed_path_cost": ins += "Linha digitalizada | "; break; case "best_path_lut": ins += "Melhor caminho com reclassificação dos pixels (o valor do custo é calculado sobre os valores originais, sem reclasificação) | "; break; }; ins += ""+(r[chaves[i]].toFixed(2)).replace(".",",")+" |