Commit 79ff2e03c09fef209f9111a89e301869c0b2dca0
1 parent
b3c6cd25
Exists in
master
and in
7 other branches
Complementação da ferramenta de melhor caminho e inclusão de novas infos no teste de instalação
Showing
5 changed files
with
139 additions
and
35 deletions
Show diff stats
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ã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&atilde;o, escreva para a |
| 29 | 29 | Free Software Foundation, Inc., no endereç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ções sobre a instalação de pacotes complementares, como o SAIKU e ferramentas que precisam de softwares especí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ço IP: ".$ip."<br><br>\n"; | |
| 96 | - | |
| 97 | - echo "<br><br>PHP (a versão deve ser a 5x): "; | |
| 98 | - echo "<br>".phpversion()."<br>\n"; | |
| 96 | + echo "<br>Seu endereço IP: ".$ip."<br>\n"; | |
| 97 | + echo "<br>Sistema operacional: ".PHP_OS."<br>\n"; | |
| 98 | + echo "<br>PHP (a versã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ão deve ser >= 5.2 para que a sobreposição de temas funcione na interface Google Maps): <br>"; | |
| 105 | - echo "Versã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ão irá 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ário, certifique-se que o parâmetro de configuraçã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ões:<br>"; | |
| 159 | + echo "<br><br>Extensões PHP:<br><pre>"; | |
| 165 | 160 | if (!extension_loaded("curl")){ |
| 166 | 161 | echo "<span style=color:red >Problema: não está instalado a curl que pode afetar algumas funcionalidades do i3Geo<br></span>"; |
| 167 | 162 | } | ... | ... |