Commit 79ff2e03c09fef209f9111a89e301869c0b2dca0

Authored by Edmar Moretti
1 parent b3c6cd25

Complementação da ferramenta de melhor caminho e inclusão de novas infos no teste de instalação

ferramentas/melhorcaminho/LEIAME
1 -para execução do script é necessário executar as seguintes linhas no terminal 1 +para execução do script é necessário executar as seguintes linhas no terminal
2 2
3 sudo apt-get install python-pip python-dev build-essential 3 sudo apt-get install python-pip python-dev build-essential
4 sudo pip install --upgrade pip 4 sudo pip install --upgrade pip
5 sudo pip install gdal scikit-image pyyaml 5 sudo pip install gdal scikit-image pyyaml
6 6
7 -É necessário instalar tbm o YAML no PHP: 7 + Caso ocorra erro no pip experimente instalar com apt-get:
8 8
  9 + sudo apt-get install python-gdal
  10 + sudo apt-get install python-yaml
  11 + sudo apt-get install python-skimage
  12 +
  13 + Caso ainda ocorram problemas, você pode fazer o download das extensões e instalar com:
  14 +
  15 + python setup.py install
  16 +
  17 +É necessário instalar tbm o YAML no PHP:
  18 +
  19 +sudo apt-get install libyaml-dev
  20 +sudo apt-get install php-pear
9 sudo pecl install yaml 21 sudo pecl install yaml
10 22
11 -Depois de instalado é necessário incluir no php.ini: 23 +Depois de instalado é necessário incluir no php.ini:
  24 +
  25 +extension=yaml.so
  26 +
  27 +ou criar um arquivo ini específico, dessa forma:
12 28
  29 +cd /etc/php5/apache2/conf.d
  30 +sudo vi yaml.ini
13 extension=yaml.so 31 extension=yaml.so
14 32
15 e reiniciar o apache 33 e reiniciar o apache
16 34
17 35
18 -------------------------------------------------------------------------------- 36 --------------------------------------------------------------------------------
19 -O script lê os parâmetros a partir de um arquivo yaml cujo nome é definido ao executar o programa 37 +O script lê os parâmetros a partir de um arquivo yaml cujo nome é definido ao executar o programa
20 38
21 -Para executar o arquivo é necessário invocá-lo no terminal: 39 +Para executar o arquivo é necessário invocá-lo no terminal:
22 40
23 ./better_path.py /path/to/source.yaml 41 ./better_path.py /path/to/source.yaml
24 42
@@ -62,26 +80,26 @@ processes: @@ -62,26 +80,26 @@ processes:
62 80
63 81
64 -------------------------------------------------------------------------------- 82 --------------------------------------------------------------------------------
65 -Descrição dos parâmetros: 83 +Descrição dos parâmetros:
66 84
67 cost_surface_path: arquivo raster com o valor do custo em cada pixel 85 cost_surface_path: arquivo raster com o valor do custo em cada pixel
68 -pathresult: pasta onde serão guardados os resultados  
69 -processes: lista de processos que serão executados 86 +pathresult: pasta onde serão guardados os resultados
  87 +processes: lista de processos que serão executados
70 88
71 - xxxx: nome do processo (apenas para referência do programa) 89 + xxxx: nome do processo (apenas para referência do programa)
72 90
73 - calculation_type: tipo de cálculo que será executado no processo  
74 - file_prefix: prefixo que será usado nos arquivos resultantes do processo  
75 - lut: parâmetros de reclassificação indicando o range e o valor reclassificado 91 + calculation_type: tipo de cálculo que será executado no processo
  92 + file_prefix: prefixo que será usado nos arquivos resultantes do processo
  93 + lut: parâmetros de reclassificação indicando o range e o valor reclassificado
76 start_coord: ponto A 94 start_coord: ponto A
77 stop_coord: ponto B 95 stop_coord: ponto B
78 ou 96 ou
79 informed_path: arquivo shapefile com uma linha (opcional) 97 informed_path: arquivo shapefile com uma linha (opcional)
80 98
81 - buffer_km: buffer de entorno da linha reta entre A e B que será considerado no cálculo do caminho (opcional) 99 + buffer_km: buffer de entorno da linha reta entre A e B que será considerado no cálculo do caminho (opcional)
82 100
83 101
84 -------------------------------------------------------------------------------- 102 --------------------------------------------------------------------------------
85 Resultado: 103 Resultado:
86 104
87 -Os arquivos shapefile e o arquivo result.yaml são gerados na pasta de destino especificada no arquivo de parâmetros 105 +Os arquivos shapefile e o arquivo result.yaml são gerados na pasta de destino especificada no arquivo de parâmetros
ferramentas/melhorcaminho/dicionario.js
@@ -56,7 +56,7 @@ i3GEOF.melhorcaminho.dicionario = { @@ -56,7 +56,7 @@ i3GEOF.melhorcaminho.dicionario = {
56 es : "" 56 es : ""
57 } ], 57 } ],
58 'lut' : [ { 58 'lut' : [ {
59 - pt : "Você pode reclassificar a imagem definindo novos valores para os pixels. Escolha os valores iniciais e finais do original e o novo valor. Podem ser definidos vários valores.", 59 + pt : "Você pode reclassificar a imagem definindo novos valores para os pixels. Escolha os valores iniciais e finais do original (intervalos fechados) e o novo valor. Podem ser definidos vários valores.",
60 en : "", 60 en : "",
61 es : "" 61 es : ""
62 } ], 62 } ],
ferramentas/melhorcaminho/exec.php
@@ -37,12 +37,95 @@ switch (strtoupper($funcao)) @@ -37,12 +37,95 @@ switch (strtoupper($funcao))
37 "by"=>$pontoB->y 37 "by"=>$pontoB->y
38 ); 38 );
39 break; 39 break;
  40 + case "MELHORCAMINHO":
  41 + //converte os parametros em um arquivo YAML
  42 + $mapa = ms_newMapObj($map_file);
  43 + $layer = $mapa->getlayerbyname($raster);
  44 + $cost_surface_path = $layer->data;
  45 + $prefixo = nomeRandomico(3);
  46 + if(file_exists($cost_surface_path)){
  47 + $pathresult = $dir_tmp."/melhorcaminho_".nomeRandomico();
  48 + //$pta = explode(",",$pta);
  49 + //$ptb = explode(",",$ptb);
  50 + mkdir ($pathresult,0777);
  51 +
  52 + $best = array(
  53 + " p1"=> array(
  54 + "calculation_type" =>"best_path",
  55 + "file_prefix" => $prefixo,
  56 + "start_coord" => "[$pta]",
  57 + "stop_coord" => "[$ptb]"
  58 + )
  59 + );
  60 + $cart = array(
  61 + " p2"=> array(
  62 + "calculation_type" =>"cartesian_straight_line_cost",
  63 + "file_prefix" => $prefixo,
  64 + "start_coord" => "[$pta]",
  65 + "stop_coord" => "[$ptb]"
  66 + )
  67 + );
  68 +
  69 + $processos = array($best,$cart);
  70 +
  71 + $a = array(
  72 + "cost_surface_path" => $cost_surface_path,
  73 + "pathresult" => $pathresult,
  74 + "processes"=> $processos
  75 + );
  76 + $y = $pathresult."/input.yaml";
  77 + $yaml = yaml_emit($a);
  78 + //adapta o formato YAML para que o Python entenda
  79 + $yaml = str_replace("---","",$yaml);
  80 + $yaml = str_replace("...","",$yaml);
  81 + $yaml = str_replace("- ","",$yaml);
  82 + $yaml = str_replace("'","",$yaml);
  83 + $yaml = trim($yaml)."\n";
  84 + //salva o arquivo com os parametros
  85 + $fp = fopen($y,"w");
  86 + fwrite($fp,$yaml);
  87 + fclose($fp);
  88 + exec(dirname(__FILE__)."/better_path.py $y");
  89 + //adiciona o shapefile
  90 + if(file_exists($pathresult."/".$prefixo."_best_path.shp")){
  91 + include_once("../../classesphp/classe_mapa.php");
  92 + $m = new Mapa($map_file);
  93 + //adiciona ao mapa best_path
  94 + $retorno = $m->adicionaTemaSHP($pathresult."/".$prefixo."_best_path.shp");
  95 + $layer = $m->mapa->getlayerbyname($prefixo."_best_path.shp");
  96 + $layer->setmetadata("TEMA","Melhor caminho $prefixo");
  97 + $layer->setmetadata("DOWNLOAD","SIM");
  98 + $layer->setmetadata("TEMALOCAL","SIM");
  99 + $classe = $layer->getclass(0);
  100 + $estilo = $classe->getstyle(0);
  101 + $cor = $estilo->color;
  102 + $cor->setRGB(255,0,0);
  103 + //cartesian_straight_line_cost
  104 + $retorno = $m->adicionaTemaSHP($pathresult."/".$prefixo."_cartesian_straight_line_cost.shp");
  105 + $layer = $m->mapa->getlayerbyname($prefixo."_cartesian_straight_line_cost.shp");
  106 + $layer->setmetadata("TEMA","Caminho mais curto $prefixo");
  107 + $layer->setmetadata("DOWNLOAD","SIM");
  108 + $layer->setmetadata("TEMALOCAL","SIM");
  109 + $classe = $layer->getclass(0);
  110 + $estilo = $classe->getstyle(0);
  111 + $cor = $estilo->color;
  112 + $cor->setRGB(255,0,255);
  113 + $estilo->set("width",2);
  114 + $m->salva();
  115 + }
  116 + }
  117 + else{
  118 + $retorno = "<span style='color:red' >Erro. Arquivo raster n&atilde;o encontrado</span>";
  119 + }
  120 + $retorno = "";
  121 + break;
40 } 122 }
41 if (!connection_aborted()){ 123 if (!connection_aborted()){
42 if(isset($map_file) && isset($postgis_mapa) && $map_file != "") 124 if(isset($map_file) && isset($postgis_mapa) && $map_file != "")
43 restauraCon($map_file,$postgis_mapa); 125 restauraCon($map_file,$postgis_mapa);
44 cpjson($retorno); 126 cpjson($retorno);
45 } 127 }
46 -else  
47 -{exit();} 128 +else{
  129 + exit();
  130 +}
48 ?> 131 ?>
49 \ No newline at end of file 132 \ No newline at end of file
ferramentas/melhorcaminho/index.js
@@ -29,6 +29,10 @@ GNU junto com este programa; se n&amp;atilde;o, escreva para a @@ -29,6 +29,10 @@ GNU junto com este programa; se n&amp;atilde;o, escreva para a
29 Free Software Foundation, Inc., no endere&ccedil;o 29 Free Software Foundation, Inc., no endere&ccedil;o
30 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. 30 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
31 */ 31 */
  32 +//TODO incluir opcao de buffer
  33 +//TODO incluir opcao de selecao de elementos
  34 +//TODO calcular valor pelo shapefile
  35 +//TODO gerar o relatorio
32 36
33 if(typeof(i3GEOF) === 'undefined'){ 37 if(typeof(i3GEOF) === 'undefined'){
34 var i3GEOF = {}; 38 var i3GEOF = {};
@@ -186,6 +190,7 @@ i3GEOF.melhorcaminho = { @@ -186,6 +190,7 @@ i3GEOF.melhorcaminho = {
186 190
187 i3GEO.util.proximoAnterior("i3GEOF.melhorcaminho.t2()","i3GEOF.melhorcaminho.t4()",ins,"i3GEOF.melhorcaminho.t3","i3GEOmelhorcaminhoresultado",true,"i3GEOF.melhorcaminho_rodape"); 191 i3GEO.util.proximoAnterior("i3GEOF.melhorcaminho.t2()","i3GEOF.melhorcaminho.t4()",ins,"i3GEOF.melhorcaminho.t3","i3GEOmelhorcaminhoresultado",true,"i3GEOF.melhorcaminho_rodape");
188 i3GEO.eventos.cliquePerm.desativa(); 192 i3GEO.eventos.cliquePerm.desativa();
  193 + i3GEO.eventos.removeEventos("MOUSECLIQUE",["i3GEOF.melhorcaminho.capturaPontoB()"]);
189 i3GEO.eventos.adicionaEventos("MOUSECLIQUE",["i3GEOF.melhorcaminho.capturaPontoA()"]); 194 i3GEO.eventos.adicionaEventos("MOUSECLIQUE",["i3GEOF.melhorcaminho.capturaPontoA()"]);
190 //calcula as coordenadas em DD 195 //calcula as coordenadas em DD
191 dms = i3GEO.calculo.dd2dms(retorno.data.ax,retorno.data.ay); 196 dms = i3GEO.calculo.dd2dms(retorno.data.ax,retorno.data.ay);
@@ -215,6 +220,7 @@ i3GEOF.melhorcaminho = { @@ -215,6 +220,7 @@ i3GEOF.melhorcaminho = {
215 i3GEO.util.proximoAnterior("i3GEOF.melhorcaminho.t3()","i3GEOF.melhorcaminho.t5()",ins,"i3GEOF.melhorcaminho.t4","i3GEOmelhorcaminhoresultado",true,"i3GEOF.melhorcaminho_rodape"); 220 i3GEO.util.proximoAnterior("i3GEOF.melhorcaminho.t3()","i3GEOF.melhorcaminho.t5()",ins,"i3GEOF.melhorcaminho.t4","i3GEOmelhorcaminhoresultado",true,"i3GEOF.melhorcaminho_rodape");
216 221
217 i3GEO.eventos.cliquePerm.desativa(); 222 i3GEO.eventos.cliquePerm.desativa();
  223 + i3GEO.eventos.removeEventos("MOUSECLIQUE",["i3GEOF.melhorcaminho.capturaPontoA()"]);
218 i3GEO.eventos.adicionaEventos("MOUSECLIQUE",["i3GEOF.melhorcaminho.capturaPontoB()"]); 224 i3GEO.eventos.adicionaEventos("MOUSECLIQUE",["i3GEOF.melhorcaminho.capturaPontoB()"]);
219 //calcula as coordenadas em DD 225 //calcula as coordenadas em DD
220 dms = i3GEO.calculo.dd2dms(retorno.data.bx,retorno.data.by); 226 dms = i3GEO.calculo.dd2dms(retorno.data.bx,retorno.data.by);
@@ -248,6 +254,7 @@ i3GEOF.melhorcaminho = { @@ -248,6 +254,7 @@ i3GEOF.melhorcaminho = {
248 t6: function(){ 254 t6: function(){
249 var b,ins = "<p class='paragrafo'><b>"+$trad('fim',i3GEOF.melhorcaminho.dicionario)+"</b>"; 255 var b,ins = "<p class='paragrafo'><b>"+$trad('fim',i3GEOF.melhorcaminho.dicionario)+"</b>";
250 ins += "<p class='paragrafo'><input id=i3GEOmelhorcaminhobotao1 size=18 class=executar type='button' value='"+$trad('executa',i3GEOF.melhorcaminho.dicionario)+"' />"; 256 ins += "<p class='paragrafo'><input id=i3GEOmelhorcaminhobotao1 size=18 class=executar type='button' value='"+$trad('executa',i3GEOF.melhorcaminho.dicionario)+"' />";
  257 + ins += "<br><br><div class=paragrafo id=i3GEOmelhorcaminhoresultadoFim ></div>";
251 i3GEO.util.proximoAnterior("i3GEOF.melhorcaminho.t5()","",ins,"i3GEOF.melhorcaminho.t6","i3GEOmelhorcaminhoresultado",true,"i3GEOF.melhorcaminho_rodape"); 258 i3GEO.util.proximoAnterior("i3GEOF.melhorcaminho.t5()","",ins,"i3GEOF.melhorcaminho.t6","i3GEOmelhorcaminhoresultado",true,"i3GEOF.melhorcaminho_rodape");
252 b = new YAHOO.widget.Button( 259 b = new YAHOO.widget.Button(
253 "i3GEOmelhorcaminhobotao1", 260 "i3GEOmelhorcaminhobotao1",
@@ -361,8 +368,9 @@ i3GEOF.melhorcaminho = { @@ -361,8 +368,9 @@ i3GEOF.melhorcaminho = {
361 ptay = i3GEO.calculo.dms2dd($i("i3GEOmelhorcaminhoyg").value,$i("i3GEOmelhorcaminhoym").value,$i("i3GEOmelhorcaminhoys").value); 368 ptay = i3GEO.calculo.dms2dd($i("i3GEOmelhorcaminhoyg").value,$i("i3GEOmelhorcaminhoym").value,$i("i3GEOmelhorcaminhoys").value);
362 ptbx = i3GEO.calculo.dms2dd($i("i3GEOmelhorcaminhoixg").value,$i("i3GEOmelhorcaminhoixm").value,$i("i3GEOmelhorcaminhoixs").value); 369 ptbx = i3GEO.calculo.dms2dd($i("i3GEOmelhorcaminhoixg").value,$i("i3GEOmelhorcaminhoixm").value,$i("i3GEOmelhorcaminhoixs").value);
363 ptby = i3GEO.calculo.dms2dd($i("i3GEOmelhorcaminhoiyg").value,$i("i3GEOmelhorcaminhoiym").value,$i("i3GEOmelhorcaminhoiys").value); 370 ptby = i3GEO.calculo.dms2dd($i("i3GEOmelhorcaminhoiyg").value,$i("i3GEOmelhorcaminhoiym").value,$i("i3GEOmelhorcaminhoiys").value);
364 - pta = ptax+","+ptay;  
365 - ptb = ptbx+","+ptby; 371 + //nao tire o espaco apos a virgula
  372 + pta = ptax+", "+ptay;
  373 + ptb = ptbx+", "+ptby;
366 } catch(e){ 374 } catch(e){
367 i3GEO.janela.tempoMsg($trad('mesf2',i3GEOF.melhorcaminho.dicionario));return; 375 i3GEO.janela.tempoMsg($trad('mesf2',i3GEOF.melhorcaminho.dicionario));return;
368 } 376 }
@@ -373,17 +381,17 @@ i3GEOF.melhorcaminho = { @@ -373,17 +381,17 @@ i3GEOF.melhorcaminho = {
373 lut.push(lutObjs[i].name); 381 lut.push(lutObjs[i].name);
374 } 382 }
375 lut = lut.join("|"); 383 lut = lut.join("|");
376 - /*  
377 i3GEOF.melhorcaminho.aguarde.visibility = "visible"; 384 i3GEOF.melhorcaminho.aguarde.visibility = "visible";
378 fim = function(retorno){ 385 fim = function(retorno){
379 i3GEOF.melhorcaminho.aguarde.visibility = "hidden"; 386 i3GEOF.melhorcaminho.aguarde.visibility = "hidden";
380 i3GEO.atualiza(""); 387 i3GEO.atualiza("");
  388 + $i("i3GEOmelhorcaminhoresultadoFim").innerHTML = retorno.data;
381 }; 389 };
382 - 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; 390 + p = i3GEO.configura.locaplic+"/ferramentas/melhorcaminho/exec.php?g_sid="+i3GEO.configura.sid
  391 + +"&funcao=melhorcaminho&pta="+pta+"&ptb="+ptb+"&lut="+lut+"&raster="+raster;
383 cp = new cpaint(); 392 cp = new cpaint();
384 cp.set_response_type("JSON"); 393 cp.set_response_type("JSON");
385 cp.call(p,"melhorcaminho",fim); 394 cp.call(p,"melhorcaminho",fim);
386 - */  
387 - alert("Tema: "+raster+"<br>A: "+pta+"<br>B: "+ptb+"<br>Lut: "+lut); 395 + //alert("Tema: "+raster+"<br>A: "+pta+"<br>B: "+ptb+"<br>Lut: "+lut);
388 } 396 }
389 }; 397 };
testainstal.php
@@ -86,23 +86,22 @@ catch(ee) @@ -86,23 +86,22 @@ catch(ee)
86 echo "<br><b>TESTE DE INSTALACAO DO i3Geo</b><br>\n"; 86 echo "<br><b>TESTE DE INSTALACAO DO i3Geo</b><br>\n";
87 include ("versao.php"); 87 include ("versao.php");
88 echo "<br><b>$mensagemInicia </b><br><br> \n"; 88 echo "<br><b>$mensagemInicia </b><br><br> \n";
  89 + echo "<br>Para mais informa&ccedil;&otilde;es sobre a instala&ccedil;&atilde;o de pacotes complementares, como o SAIKU e ferramentas que precisam de softwares espec&iacute;ficos, veja o link <a href='http://moodle.gvsig-training.com/course/view.php?id=11' >http://moodle.gvsig-training.com/course/view.php?id=11</a></b><br><br> \n";
89 //ip 90 //ip
90 $ip = "UNKNOWN"; 91 $ip = "UNKNOWN";
91 if (getenv("HTTP_CLIENT_IP")) $ip = getenv("HTTP_CLIENT_IP"); 92 if (getenv("HTTP_CLIENT_IP")) $ip = getenv("HTTP_CLIENT_IP");
92 else if(getenv("HTTP_X_FORWARDED_FOR")) $ip = getenv("HTTP_X_FORWARDED_FOR"); 93 else if(getenv("HTTP_X_FORWARDED_FOR")) $ip = getenv("HTTP_X_FORWARDED_FOR");
93 else if(getenv("REMOTE_ADDR")) $ip = getenv("REMOTE_ADDR"); 94 else if(getenv("REMOTE_ADDR")) $ip = getenv("REMOTE_ADDR");
94 else $ip = "UNKNOWN"; 95 else $ip = "UNKNOWN";
95 - echo "<br>Seu endere&ccedil;o IP: ".$ip."<br><br>\n";  
96 -  
97 - echo "<br><br>PHP (a vers&atilde;o deve ser a 5x): ";  
98 - echo "<br>".phpversion()."<br>\n"; 96 + echo "<br>Seu endere&ccedil;o IP: ".$ip."<br>\n";
  97 + echo "<br>Sistema operacional: ".PHP_OS."<br>\n";
  98 + echo "<br>PHP (a vers&atilde;o deve ser a 5x): ".phpversion()."<br>\n";
99 include_once("classesphp/carrega_ext.php"); 99 include_once("classesphp/carrega_ext.php");
100 include_once("classesphp/funcoes_gerais.php"); 100 include_once("classesphp/funcoes_gerais.php");
101 $versao = versao(); 101 $versao = versao();
102 $versao = $versao["principal"]; 102 $versao = $versao["principal"];
103 $exts = get_loaded_extensions(); 103 $exts = get_loaded_extensions();
104 - echo "MapServer (a vers&atilde;o deve ser &gt;= 5.2 para que a sobreposi&ccedil;&atilde;o de temas funcione na interface Google Maps): <br>";  
105 - echo "Vers&atilde;o:<br>"; 104 + echo "<br>MapServer: <br>";
106 echo ms_GetVersion(); 105 echo ms_GetVersion();
107 echo "<br><br>"; 106 echo "<br><br>";
108 var_dump (versao())."<br><br>"; 107 var_dump (versao())."<br><br>";
@@ -110,15 +109,11 @@ catch(ee) @@ -110,15 +109,11 @@ catch(ee)
110 { 109 {
111 echo "<span style=color:red >PARECE QUE O MAPSERVER NAO ESTA INSTALADO!!!<br><br>"; 110 echo "<span style=color:red >PARECE QUE O MAPSERVER NAO ESTA INSTALADO!!!<br><br>";
112 } 111 }
113 - echo "<br>---<br>";  
114 -  
115 if (get_cfg_var("safe_mode") == 1){ 112 if (get_cfg_var("safe_mode") == 1){
116 echo "<span style=color:red >Problema: safe_mode no php.ini deveria estar como 'Off'. O i3Geo n&atilde;o ir&aacute; funcionar!!!<br></span>"; 113 echo "<span style=color:red >Problema: safe_mode no php.ini deveria estar como 'Off'. O i3Geo n&atilde;o ir&aacute; funcionar!!!<br></span>";
117 - echo "<br>---<br>";  
118 } 114 }
119 - echo "As seguintes letras devem aparecer corretamente acentuadas: çÇãâáÁóÓ"; 115 + echo "<br><br>As seguintes letras devem aparecer corretamente acentuadas: çÇãâáÁóÓ";
120 echo "<br>Caso contr&aacute;rio, certifique-se que o par&acirc;metro de configura&ccedil;&atilde;o do Apache <b>AddDefaultCharset</b> esteja desativado."; 116 echo "<br>Caso contr&aacute;rio, certifique-se que o par&acirc;metro de configura&ccedil;&atilde;o do Apache <b>AddDefaultCharset</b> esteja desativado.";
121 - echo "<br>---<br>";  
122 //executa as opcoes linux definidas no formulario 117 //executa as opcoes linux definidas no formulario
123 if(!empty($_POST["criaPastaMstmp"]) && $_POST["criaPastaMstmp"] == "on"){ 118 if(!empty($_POST["criaPastaMstmp"]) && $_POST["criaPastaMstmp"] == "on"){
124 echo "<br>Criando a pasta $dir_tmp \n"; 119 echo "<br>Criando a pasta $dir_tmp \n";
@@ -161,7 +156,7 @@ catch(ee) @@ -161,7 +156,7 @@ catch(ee)
161 echo "...OK\n"; 156 echo "...OK\n";
162 } 157 }
163 } 158 }
164 - echo "<br><pre>Extens&otilde;es:<br>"; 159 + echo "<br><br>Extens&otilde;es PHP:<br><pre>";
165 if (!extension_loaded("curl")){ 160 if (!extension_loaded("curl")){
166 echo "<span style=color:red >Problema: n&atilde;o est&aacute; instalado a curl que pode afetar algumas funcionalidades do i3Geo<br></span>"; 161 echo "<span style=color:red >Problema: n&atilde;o est&aacute; instalado a curl que pode afetar algumas funcionalidades do i3Geo<br></span>";
167 } 162 }