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 | } | ... | ... |