From cb46e1466d0cb39a8298afb3f5c20708364f8894 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Thu, 5 Feb 2015 23:53:34 +0000 Subject: [PATCH] Ferramenta de cálculo de custo --- ferramentas/melhorcaminho/dependencias.php | 30 ++++++++++++++++++++++++++++++ ferramentas/melhorcaminho/dicionario.js | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ferramentas/melhorcaminho/exec.php | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ ferramentas/melhorcaminho/exemplo.png | Bin 0 -> 14656 bytes ferramentas/melhorcaminho/index.js | 380 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ferramentas/melhorcaminho/template_mst.html | 2 ++ ferramentas/teste.phtml | 252 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 770 insertions(+), 0 deletions(-) create mode 100755 ferramentas/melhorcaminho/dependencias.php create mode 100755 ferramentas/melhorcaminho/dicionario.js create mode 100755 ferramentas/melhorcaminho/exec.php create mode 100644 ferramentas/melhorcaminho/exemplo.png create mode 100644 ferramentas/melhorcaminho/index.js create mode 100755 ferramentas/melhorcaminho/template_mst.html create mode 100644 ferramentas/teste.phtml diff --git a/ferramentas/melhorcaminho/dependencias.php b/ferramentas/melhorcaminho/dependencias.php new file mode 100755 index 0000000..7f2f05f --- /dev/null +++ b/ferramentas/melhorcaminho/dependencias.php @@ -0,0 +1,30 @@ + ou com a funcao scripttag do i3Geo + * Alem de carregar os scripts, carrega tambem o template no formato MUSTACHE, definindo a variavel + * javascript i3GEOF.melhorcaminho.MUSTACHE + * O template e substituido pelos valores definidos em index.js no momento da inicializacao da ferramenta + */ +if(extension_loaded('zlib')){ + ob_start('ob_gzhandler'); +} +header("Content-type: text/javascript"); +include("index.js"); +include("dicionario.js"); +echo "\n"; +/** + * Inclui o template mustache do HTML usado para criar o conteudo da janela + */ +echo 'i3GEOF.melhorcaminho.MUSTACHE = "'; +$texto = file_get_contents("template_mst.html"); +$texto = str_replace("\n", "", $texto); +$texto = str_replace("\r", "", $texto); +$texto = str_replace("\t", "", $texto); +$texto = str_replace('"', "'", $texto); +echo $texto; +echo '";'; +if(extension_loaded('zlib')){ + ob_end_flush(); +} +?> \ No newline at end of file diff --git a/ferramentas/melhorcaminho/dicionario.js b/ferramentas/melhorcaminho/dicionario.js new file mode 100755 index 0000000..574349f --- /dev/null +++ b/ferramentas/melhorcaminho/dicionario.js @@ -0,0 +1,58 @@ +//+$trad(1,i3GEOF.gradeDePoligonos.dicionario)+ +i3GEOF.melhorcaminho.dicionario = { + 'ajuda' : [ { + pt : "O melhor caminho é calculado sobre uma imagem raster. Os valores dos pixels serão considerados como o custo.", + en : "", + es : "" + } ], + 'ajuda2' : [ { + pt : "O cálculo é feito a partir de um ponto inicial e um final. Esses dois pontos podem ser apontados no mapa ou pode ser utilizada uma camada já existente no mapa.", + en : "", + es : "" + } ], + 'ajuda3' : [ { + pt : "O resultado do cálculo será incluído no mapa como uma nova camada com dados no formato shapefile.", + en : "", + es : "" + } ], + 'raster' : [ { + pt : "Escolha o tema que contém a imagem raster que será utilizada para traçar o melhor caminho", + en : "", + es : "" + } ], + 'temas' : [ { + pt : "Escolha o tema que será utilizado para obter o ponto inicial e final. No caso de tema pontual, serão considerados o primeiro e o último ponto. No caso de tema linear, serão considerados o primeiro e o último nó. No caso de tema poligonal, serão considerados o primeiro nó e o centróide.
Você pode pular essa etapa caso queira escolher os pontos clicando no mapa.", + en : "", + es : "" + } ], + 'grau' : [ { + pt : "Grau", + en : "", + es : "" + } ], + 'minuto' : [ { + pt : "Minuto", + en : "", + es : "" + } ], + 'segundo' : [ { + pt : "Segundo", + en : "", + es : "" + } ], + 'coord' : [ { + pt : "Coordenadas do ponto inicial superior esquerdo (utilize o sinal negativo no grau quando ao sul do equador e a oeste). Você pode clicar no mapa para pegar o ponto.", + en : "", + es : "" + } ], + 'pti' : [ { + pt : "Ponto inicial (A). Você pode clicar no mapa ou digitar novos valores", + en : "", + es : "" + } ], + 'ptf' : [ { + pt : "Ponto final (B). Você pode clicar no mapa ou digitar novos valores", + en : "", + es : "" + } ] +}; diff --git a/ferramentas/melhorcaminho/exec.php b/ferramentas/melhorcaminho/exec.php new file mode 100755 index 0000000..1e590ac --- /dev/null +++ b/ferramentas/melhorcaminho/exec.php @@ -0,0 +1,48 @@ +getlayerbyname($tema); + $shapes = retornaShapesMapext($layer,$mapa); + + //quando ponto 0 + if($layer->type == 0){ + $objLine = $shapes[0]->line; + $pontoA = $objLine0(0); + $objLine = $shapes[count($shapes) - 1]->line; + $pontoB = $objLine(0); + } + //quando linha 1 + if($layer->type == 1){ + $objLine = $shapes[0]->line; + $pontoA = $objLine->point(0); + $pontoB = $objLine->point($objLine->numpoints - 1); + } + //quando poligono 2 + if($layer->type == 2){ + $objLine = $shapes[0]->line(0); + $pontoA = $objLine->point(0); + $pontoB = $shapes[0]->getCentroid(); + } + $retorno = array( + "ax"=>$pontoA->x, + "ay"=>$pontoA->y, + "bx"=>$pontoB->x, + "by"=>$pontoB->y + ); + break; +} +if (!connection_aborted()){ + if(isset($map_file) && isset($postgis_mapa) && $map_file != "") + restauraCon($map_file,$postgis_mapa); + cpjson($retorno); +} +else +{exit();} +?> \ No newline at end of file diff --git a/ferramentas/melhorcaminho/exemplo.png b/ferramentas/melhorcaminho/exemplo.png new file mode 100644 index 0000000..1d06b69 Binary files /dev/null and b/ferramentas/melhorcaminho/exemplo.png differ diff --git a/ferramentas/melhorcaminho/index.js b/ferramentas/melhorcaminho/index.js new file mode 100644 index 0000000..d54c90a --- /dev/null +++ b/ferramentas/melhorcaminho/index.js @@ -0,0 +1,380 @@ +/* +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. +*/ + +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){ + try{ + i3GEO.util.mudaCursor(i3GEO.configura.cursores,"default",i3GEO.Interface.IDMAPA,i3GEO.configura.locaplic); + $i(iddiv).innerHTML += i3GEOF.melhorcaminho.html(); + i3GEOF.melhorcaminho.t0(); + } + catch(erro){i3GEO.janela.tempoMsg(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 += '
'; + return ins; + }, + /* + Function: iniciaJanelaFlutuante + + Cria a janela flutuante para controle da ferramenta. + */ + iniciaJanelaFlutuante: function(){ + var minimiza,cabecalho,janela,divid,titulo,temp; + if($i("i3GEOF.melhorcaminho")){ + return; + } + //cria a janela flutuante + titulo = $trad("melhorcaminho")+"    "; + cabecalho = function(){ + i3GEO.barraDeBotoes.execBotao("pan"); + }; + minimiza = function(){ + i3GEO.janela.minimiza("i3GEOF.melhorcaminho"); + }; + janela = i3GEO.janela.cria( + "400px", + "190px", + "", + "", + "", + titulo, + "i3GEOF.melhorcaminho", + false, + "hd", + cabecalho, + minimiza, + "", + false, + i3GEO.configura.locaplic+"/imagens/oxygen/16x16/accessories-calculator.png" + ); + divid = janela[2].id; + janela[0].setFooter("
"); + i3GEOF.melhorcaminho.aguarde = $i("i3GEOF.melhorcaminho_imagemCabecalho").style; + i3GEOF.melhorcaminho.inicia(divid); + temp = function(){ + i3GEO.eventos.cliquePerm.ativa(); + i3GEO.eventos.removeEventos("MOUSECLIQUE",["i3GEOF.melhorcaminho.capturaPontoA()","i3GEOF.melhorcaminho.capturaPontoB()"]); + }; + YAHOO.util.Event.addListener(janela[0].close, "click", temp); + }, + t0: function() + { + var 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) +" :
" + + "

" + + "
"; + i3GEO.util.proximoAnterior("i3GEOF.melhorcaminho.t0()","i3GEOF.melhorcaminho.t2()",ins,"i3GEOF.melhorcaminho.t1","i3GEOmelhorcaminhoresultado",true,"i3GEOF.melhorcaminho_rodape"); + i3GEOF.melhorcaminho.comboTemasRaster(); + }, + t2: function(){ + var ins = "

"+$trad('temas',i3GEOF.melhorcaminho.dicionario) +" :
" + + "

" + + "
"; + i3GEO.util.proximoAnterior("i3GEOF.melhorcaminho.t1()","i3GEOF.melhorcaminho.t3()",ins,"i3GEOF.melhorcaminho.t2","i3GEOmelhorcaminhoresultado",true,"i3GEOF.melhorcaminho_rodape"); + i3GEOF.melhorcaminho.comboTemas(); + }, + t3: function(){ + var ins = "

"+$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.adicionaEventos("MOUSECLIQUE",["i3GEOF.melhorcaminho.capturaPontoA()"]); + //calcula as coordenadas em DD + 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 = "

"+$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.adicionaEventos("MOUSECLIQUE",["i3GEOF.melhorcaminho.capturaPontoB()"]); + //calcula as coordenadas em DD + 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 ins = "

"+$trad('numero',i3GEOF.melhorcaminho.dicionario)+""; + ins += "

X

"; + ins += "
"; + ins += "

Y"; + ins += "

"; + + i3GEO.util.proximoAnterior("i3GEOF.melhorcaminho.t2()","i3GEOF.melhorcaminho.t4()",ins,"i3GEOF.melhorcaminho.t3","i3GEOmelhorcaminhoresultado",true,"i3GEOF.melhorcaminho_rodape"); + }, + t6: function(){ + var b,ins = "

"+$trad('adicionaTema',i3GEOF.melhorcaminho.dicionario)+""; + ins += "

"; + + i3GEO.util.proximoAnterior("i3GEOF.melhorcaminho.t3()","",ins,"i3GEOF.melhorcaminho.t4","i3GEOmelhorcaminhoresultado",true,"i3GEOF.melhorcaminho_rodape"); + b = new YAHOO.widget.Button( + "i3GEOmelhorcaminhobotao1", + {onclick:{fn: i3GEOF.melhorcaminho.criaGrade}} + ); + b.addClass("rodar"); + }, + comboTemasRaster: function(){ + i3GEO.util.comboTemas( + "i3GEOmelhorcaminhoRaster", + function(retorno){ + $i("i3GEOmelhorcaminhoDivRaster").innerHTML = retorno.dados; + $i("i3GEOmelhorcaminhoDivRaster").style.display = "block"; + }, + "i3GEOmelhorcaminhoDivRaster", + "", + false, + "raster", + " " + ); + }, + comboTemas: function(){ + i3GEO.util.comboTemas( + "i3GEOmelhorcaminhoTema", + function(retorno){ + $i("i3GEOmelhorcaminhoDivTema").innerHTML = retorno.dados; + $i("i3GEOmelhorcaminhoDivTema").style.display = "block"; + if ($i("i3GEOmelhorcaminhoTema")){ + $i("i3GEOmelhorcaminhoTema").onchange = function(){ + //captura o ponto inicial e final + i3GEOF.melhorcaminho.shape2pontos($i("i3GEOmelhorcaminhoTema").value); + }; + } + }, + "i3GEOmelhorcaminhoDivTema", + "", + false, + "naoraster", + " " + ); + }, + shape2pontos: function(tema){ + var p, par, retorno + p = i3GEO.configura.locaplic + "/ferramentas/melhorcaminho/exec.php?g_sid="+i3GEO.configura.sid; + par = "funcao=shape2pontos&tema=" + tema; + retorno = function(retorno) { + var dms,dmsx,dmsy; + i3GEO.janela.fechaAguarde("shape2pontos"); + i3GEOF.melhorcaminho.COORDENADASTEMA = retorno.data; + i3GEOF.melhorcaminho.t3(); + }; + i3GEO.janela.abreAguarde("shape2pontos", $trad("o1")); + cpJSON.call(p, "foo", retorno, par); + }, + capturaPontoA: function(){ + i3GEO.eventos.cliqueCapturaPt( + "i3GEOmelhorcaminhoxg", + "i3GEOmelhorcaminhoxm", + "i3GEOmelhorcaminhoxs", + "i3GEOmelhorcaminhoyg", + "i3GEOmelhorcaminhoym", + "i3GEOmelhorcaminhoys" + ); + }, + capturaPontoB: function(){ + i3GEO.eventos.cliqueCapturaPt( + "i3GEOmelhorcaminhoixg", + "i3GEOmelhorcaminhoixm", + "i3GEOmelhorcaminhoixs", + "i3GEOmelhorcaminhoiyg", + "i3GEOmelhorcaminhoiym", + "i3GEOmelhorcaminhoiys" + ); + }, + /* + Function: criaGrade + + Cria a grade e adiciona um novo tema ao mapa + + Veja: + + + */ + criaGrade: function(){ + try{ + if(i3GEOF.melhorcaminho.aguarde.visibility === "visible") + {return;} + i3GEOF.melhorcaminho.aguarde.visibility = "visible"; + var dx,dy,ix,iy,nptx,npty,fim,p,cp,proj="nao"; + if(!$i("i3GEOmelhorcaminhoProj").checked){ + dx = i3GEO.calculo.dms2dd($i("i3GEOmelhorcaminhoxg").value,$i("i3GEOmelhorcaminhoxm").value,$i("i3GEOmelhorcaminhoxs").value); + dy = i3GEO.calculo.dms2dd($i("i3GEOmelhorcaminhoyg").value,$i("i3GEOmelhorcaminhoym").value,$i("i3GEOmelhorcaminhoys").value); + } + else{ + proj = "sim"; + dx = $i("i3GEOmelhorcaminhoxg").value; + dy = $i("i3GEOmelhorcaminhoyg").value; + } + ix = i3GEO.calculo.dms2dd($i("i3GEOmelhorcaminhoixg").value,$i("i3GEOmelhorcaminhoixm").value,$i("i3GEOmelhorcaminhoixs").value); + iy = i3GEO.calculo.dms2dd($i("i3GEOmelhorcaminhoiyg").value,$i("i3GEOmelhorcaminhoiym").value,$i("i3GEOmelhorcaminhoiys").value); + nptx = $i("i3GEOmelhorcaminhonptx").value; + npty = $i("i3GEOmelhorcaminhonpty").value; + if ((dx == 0) || (dy == 0)) + {i3GEO.janela.tempoMsg($trad('msg',i3GEOF.melhorcaminho.dicionario));return;} + if ((nptx == 0) || (npty == 0)) + {i3GEO.janela.tempoMsg($trad('msg2',i3GEOF.melhorcaminho.dicionario));return;} + if (nptx * npty > 10000) + {i3GEO.janela.tempoMsg($trad('msg2',i3GEOF.melhorcaminho.dicionario));return;} + fim = function(retorno){ + i3GEOF.melhorcaminho.aguarde.visibility = "hidden"; + if (retorno.data == undefined ) + {$i("i3GEOmelhorcaminhofim").innerHTML = "

Erro. ";} + else + {i3GEO.atualiza("");} + }; + p = i3GEO.configura.locaplic+"/ferramentas/melhorcaminho/exec.php?g_sid="+i3GEO.configura.sid+"&proj="+proj+"&funcao=gradedepol&xdd="+dx+"&ydd="+dy+"&px="+ix+"&py="+iy+"&nptx="+nptx+"&npty="+npty; + cp = new cpaint(); + cp.set_response_type("JSON"); + cp.call(p,"melhorcaminho",fim); + } + catch(e){$i("i3GEOmelhorcaminhofim").innerHTML = "

Erro. "+e;i3GEOF.melhorcaminho.aguarde.visibility = "hidden";} + }, + /* + Function: capturaPonto + + Captura um ponto no mapa e preenche os campos de coordenadas de início da grade + */ + capturaPonto: function(){ + i3GEO.eventos.cliqueCapturaPt( + "i3GEOmelhorcaminhoixg", + "i3GEOmelhorcaminhoixm", + "i3GEOmelhorcaminhoixs", + "i3GEOmelhorcaminhoiyg", + "i3GEOmelhorcaminhoiym", + "i3GEOmelhorcaminhoiys" + ); + } +}; diff --git a/ferramentas/melhorcaminho/template_mst.html b/ferramentas/melhorcaminho/template_mst.html new file mode 100755 index 0000000..bba349f --- /dev/null +++ b/ferramentas/melhorcaminho/template_mst.html @@ -0,0 +1,2 @@ +

+
\ No newline at end of file diff --git a/ferramentas/teste.phtml b/ferramentas/teste.phtml new file mode 100644 index 0000000..d107913 --- /dev/null +++ b/ferramentas/teste.phtml @@ -0,0 +1,252 @@ + + + + + + + +i3GEO - OpenLayers + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
+
+

i3Geo - Software livre para criação de mapas interativos e geoprocessamento

+

Baseado no Mapserver, é licenciado sob GPL e integra o Portal do Software Público Brasileiro

+
+ +
+ +
+ + + + + -- libgit2 0.21.2