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 3 sudo apt-get install python-pip python-dev build-essential
4 4 sudo pip install --upgrade pip
5 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 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 31 extension=yaml.so
14 32  
15 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 41 ./better_path.py /path/to/source.yaml
24 42  
... ... @@ -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 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 94 start_coord: ponto A
77 95 stop_coord: ponto B
78 96 ou
79 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 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 56 es : ""
57 57 } ],
58 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 60 en : "",
61 61 es : ""
62 62 } ],
... ...
ferramentas/melhorcaminho/exec.php
... ... @@ -37,12 +37,95 @@ switch (strtoupper($funcao))
37 37 "by"=>$pontoB->y
38 38 );
39 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 123 if (!connection_aborted()){
42 124 if(isset($map_file) && isset($postgis_mapa) && $map_file != "")
43 125 restauraCon($map_file,$postgis_mapa);
44 126 cpjson($retorno);
45 127 }
46   -else
47   -{exit();}
  128 +else{
  129 + exit();
  130 +}
48 131 ?>
49 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 29 Free Software Foundation, Inc., no endere&ccedil;o
30 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 37 if(typeof(i3GEOF) === 'undefined'){
34 38 var i3GEOF = {};
... ... @@ -186,6 +190,7 @@ i3GEOF.melhorcaminho = {
186 190  
187 191 i3GEO.util.proximoAnterior("i3GEOF.melhorcaminho.t2()","i3GEOF.melhorcaminho.t4()",ins,"i3GEOF.melhorcaminho.t3","i3GEOmelhorcaminhoresultado",true,"i3GEOF.melhorcaminho_rodape");
188 192 i3GEO.eventos.cliquePerm.desativa();
  193 + i3GEO.eventos.removeEventos("MOUSECLIQUE",["i3GEOF.melhorcaminho.capturaPontoB()"]);
189 194 i3GEO.eventos.adicionaEventos("MOUSECLIQUE",["i3GEOF.melhorcaminho.capturaPontoA()"]);
190 195 //calcula as coordenadas em DD
191 196 dms = i3GEO.calculo.dd2dms(retorno.data.ax,retorno.data.ay);
... ... @@ -215,6 +220,7 @@ i3GEOF.melhorcaminho = {
215 220 i3GEO.util.proximoAnterior("i3GEOF.melhorcaminho.t3()","i3GEOF.melhorcaminho.t5()",ins,"i3GEOF.melhorcaminho.t4","i3GEOmelhorcaminhoresultado",true,"i3GEOF.melhorcaminho_rodape");
216 221  
217 222 i3GEO.eventos.cliquePerm.desativa();
  223 + i3GEO.eventos.removeEventos("MOUSECLIQUE",["i3GEOF.melhorcaminho.capturaPontoA()"]);
218 224 i3GEO.eventos.adicionaEventos("MOUSECLIQUE",["i3GEOF.melhorcaminho.capturaPontoB()"]);
219 225 //calcula as coordenadas em DD
220 226 dms = i3GEO.calculo.dd2dms(retorno.data.bx,retorno.data.by);
... ... @@ -248,6 +254,7 @@ i3GEOF.melhorcaminho = {
248 254 t6: function(){
249 255 var b,ins = "<p class='paragrafo'><b>"+$trad('fim',i3GEOF.melhorcaminho.dicionario)+"</b>";
250 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 258 i3GEO.util.proximoAnterior("i3GEOF.melhorcaminho.t5()","",ins,"i3GEOF.melhorcaminho.t6","i3GEOmelhorcaminhoresultado",true,"i3GEOF.melhorcaminho_rodape");
252 259 b = new YAHOO.widget.Button(
253 260 "i3GEOmelhorcaminhobotao1",
... ... @@ -361,8 +368,9 @@ i3GEOF.melhorcaminho = {
361 368 ptay = i3GEO.calculo.dms2dd($i("i3GEOmelhorcaminhoyg").value,$i("i3GEOmelhorcaminhoym").value,$i("i3GEOmelhorcaminhoys").value);
362 369 ptbx = i3GEO.calculo.dms2dd($i("i3GEOmelhorcaminhoixg").value,$i("i3GEOmelhorcaminhoixm").value,$i("i3GEOmelhorcaminhoixs").value);
363 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 374 } catch(e){
367 375 i3GEO.janela.tempoMsg($trad('mesf2',i3GEOF.melhorcaminho.dicionario));return;
368 376 }
... ... @@ -373,17 +381,17 @@ i3GEOF.melhorcaminho = {
373 381 lut.push(lutObjs[i].name);
374 382 }
375 383 lut = lut.join("|");
376   - /*
377 384 i3GEOF.melhorcaminho.aguarde.visibility = "visible";
378 385 fim = function(retorno){
379 386 i3GEOF.melhorcaminho.aguarde.visibility = "hidden";
380 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 392 cp = new cpaint();
384 393 cp.set_response_type("JSON");
385 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 86 echo "<br><b>TESTE DE INSTALACAO DO i3Geo</b><br>\n";
87 87 include ("versao.php");
88 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 90 //ip
90 91 $ip = "UNKNOWN";
91 92 if (getenv("HTTP_CLIENT_IP")) $ip = getenv("HTTP_CLIENT_IP");
92 93 else if(getenv("HTTP_X_FORWARDED_FOR")) $ip = getenv("HTTP_X_FORWARDED_FOR");
93 94 else if(getenv("REMOTE_ADDR")) $ip = getenv("REMOTE_ADDR");
94 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 99 include_once("classesphp/carrega_ext.php");
100 100 include_once("classesphp/funcoes_gerais.php");
101 101 $versao = versao();
102 102 $versao = $versao["principal"];
103 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 105 echo ms_GetVersion();
107 106 echo "<br><br>";
108 107 var_dump (versao())."<br><br>";
... ... @@ -110,15 +109,11 @@ catch(ee)
110 109 {
111 110 echo "<span style=color:red >PARECE QUE O MAPSERVER NAO ESTA INSTALADO!!!<br><br>";
112 111 }
113   - echo "<br>---<br>";
114   -
115 112 if (get_cfg_var("safe_mode") == 1){
116 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 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 117 //executa as opcoes linux definidas no formulario
123 118 if(!empty($_POST["criaPastaMstmp"]) && $_POST["criaPastaMstmp"] == "on"){
124 119 echo "<br>Criando a pasta $dir_tmp \n";
... ... @@ -161,7 +156,7 @@ catch(ee)
161 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 160 if (!extension_loaded("curl")){
166 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 }
... ...