Commit bb0c3e92c222a3c48ce4eb9584db8d7f6e354b3f
1 parent
91f5b278
Exists in
master
and in
7 other branches
-
Showing
3 changed files
with
125 additions
and
36 deletions
Show diff stats
ferramentas/melhorcaminho/dicionario.js
| ... | ... | @@ -21,7 +21,7 @@ i3GEOF.melhorcaminho.dicionario = { |
| 21 | 21 | es : "" |
| 22 | 22 | } ], |
| 23 | 23 | 'temas' : [ { |
| 24 | - 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. <br>Você pode pular essa etapa caso queira escolher os pontos clicando no mapa.", | |
| 24 | + pt : "(Opcional) Escolha o tema que será utilizado para obter o ponto inicial e final. Será considerada a seleção, se houver. 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. <br>Você pode pular essa etapa caso queira escolher os pontos clicando no mapa.", | |
| 25 | 25 | en : "", |
| 26 | 26 | es : "" |
| 27 | 27 | } ], |
| ... | ... | @@ -66,7 +66,7 @@ i3GEOF.melhorcaminho.dicionario = { |
| 66 | 66 | es : "" |
| 67 | 67 | } ], |
| 68 | 68 | 'menorque' : [ { |
| 69 | - pt : "menor que", | |
| 69 | + pt : "igual ou menor que", | |
| 70 | 70 | en : "", |
| 71 | 71 | es : "" |
| 72 | 72 | } ], |
| ... | ... | @@ -94,5 +94,10 @@ i3GEOF.melhorcaminho.dicionario = { |
| 94 | 94 | pt : "Erro ao calcular as coordenadas dos pontos A e B", |
| 95 | 95 | en : "", |
| 96 | 96 | es : "" |
| 97 | + } ], | |
| 98 | + 'buffer' : [ { | |
| 99 | + pt : "(Opcional) Valor em Km do entorno da linha reta entre A e B que será considerada como área onde o caminho poderá ser traçado", | |
| 100 | + en : "", | |
| 101 | + es : "" | |
| 97 | 102 | } ] |
| 98 | 103 | }; | ... | ... |
ferramentas/melhorcaminho/exec.php
| ... | ... | @@ -9,18 +9,21 @@ switch (strtoupper($funcao)) |
| 9 | 9 | case "SHAPE2PONTOS": |
| 10 | 10 | $mapa = ms_newMapObj($map_file); |
| 11 | 11 | $layer = $mapa->getlayerbyname($tema); |
| 12 | - $shapes = retornaShapesMapext($layer,$mapa); | |
| 12 | + $shapes = retornaShapesSelecionados($layer,$map_file,$mapa); | |
| 13 | 13 | |
| 14 | + if(count($shapes) == 0){ | |
| 15 | + $shapes = retornaShapesMapext($layer,$mapa); | |
| 16 | + } | |
| 14 | 17 | //quando ponto 0 |
| 15 | 18 | if($layer->type == 0){ |
| 16 | - $objLine = $shapes[0]->line; | |
| 17 | - $pontoA = $objLine0(0); | |
| 18 | - $objLine = $shapes[count($shapes) - 1]->line; | |
| 19 | - $pontoB = $objLine(0); | |
| 19 | + $objLine = $shapes[0]->line(0); | |
| 20 | + $pontoA = $objLine->point(0); | |
| 21 | + $objLine = $shapes[count($shapes) - 1]->line(0); | |
| 22 | + $pontoB = $objLine->point(0); | |
| 20 | 23 | } |
| 21 | 24 | //quando linha 1 |
| 22 | 25 | if($layer->type == 1){ |
| 23 | - $objLine = $shapes[0]->line; | |
| 26 | + $objLine = $shapes[0]->line(0); | |
| 24 | 27 | $pontoA = $objLine->point(0); |
| 25 | 28 | $pontoB = $objLine->point($objLine->numpoints - 1); |
| 26 | 29 | } |
| ... | ... | @@ -50,7 +53,7 @@ switch (strtoupper($funcao)) |
| 50 | 53 | mkdir ($pathresult,0777); |
| 51 | 54 | |
| 52 | 55 | $best = array( |
| 53 | - " p1"=> array( | |
| 56 | + "p1"=> array( | |
| 54 | 57 | "calculation_type" =>"best_path", |
| 55 | 58 | "file_prefix" => $prefixo, |
| 56 | 59 | "start_coord" => "[$pta]", |
| ... | ... | @@ -58,7 +61,7 @@ switch (strtoupper($funcao)) |
| 58 | 61 | ) |
| 59 | 62 | ); |
| 60 | 63 | $cart = array( |
| 61 | - " p2"=> array( | |
| 64 | + "p2"=> array( | |
| 62 | 65 | "calculation_type" =>"cartesian_straight_line_cost", |
| 63 | 66 | "file_prefix" => $prefixo, |
| 64 | 67 | "start_coord" => "[$pta]", |
| ... | ... | @@ -68,6 +71,39 @@ switch (strtoupper($funcao)) |
| 68 | 71 | |
| 69 | 72 | $processos = array($best,$cart); |
| 70 | 73 | |
| 74 | + if($buffer > 0){ | |
| 75 | + $buf = array( | |
| 76 | + "p3"=> array( | |
| 77 | + "calculation_type" =>"best_path_within_buffer", | |
| 78 | + "buffer_km" => $buffer, | |
| 79 | + "file_prefix" => $prefixo, | |
| 80 | + "start_coord" => "[$pta]", | |
| 81 | + "stop_coord" => "[$ptb]" | |
| 82 | + ) | |
| 83 | + ); | |
| 84 | + $processos[] = $buf; | |
| 85 | + } | |
| 86 | + | |
| 87 | + if($lut != ""){ | |
| 88 | + //pega os valores da lut | |
| 89 | + $lista = explode("|",$lut); | |
| 90 | + $novaLut = array(); | |
| 91 | + foreach($lista as $li){ | |
| 92 | + $v = explode(",",$li); | |
| 93 | + $novaLut[] = "- {min: $v[0], max: $v[1], nv: $v[2]}"; | |
| 94 | + } | |
| 95 | + $lut = array( | |
| 96 | + "p4"=> array( | |
| 97 | + "calculation_type" =>"best_path_lut", | |
| 98 | + "lut" => implode("\n",$novaLut), | |
| 99 | + "file_prefix" => $prefixo, | |
| 100 | + "start_coord" => "[$pta]", | |
| 101 | + "stop_coord" => "[$ptb]" | |
| 102 | + ) | |
| 103 | + ); | |
| 104 | + $processos[] = $lut; | |
| 105 | + } | |
| 106 | + | |
| 71 | 107 | $a = array( |
| 72 | 108 | "cost_surface_path" => $cost_surface_path, |
| 73 | 109 | "pathresult" => $pathresult, |
| ... | ... | @@ -78,9 +114,11 @@ switch (strtoupper($funcao)) |
| 78 | 114 | //adapta o formato YAML para que o Python entenda |
| 79 | 115 | $yaml = str_replace("---","",$yaml); |
| 80 | 116 | $yaml = str_replace("...","",$yaml); |
| 81 | - $yaml = str_replace("- ","",$yaml); | |
| 117 | + $yaml = str_replace("- p"," p",$yaml); | |
| 82 | 118 | $yaml = str_replace("'","",$yaml); |
| 119 | + $yaml = str_replace('"',"",$yaml); | |
| 83 | 120 | $yaml = trim($yaml)."\n"; |
| 121 | + $yaml = str_replace('|-',"",$yaml); | |
| 84 | 122 | //salva o arquivo com os parametros |
| 85 | 123 | $fp = fopen($y,"w"); |
| 86 | 124 | fwrite($fp,$yaml); |
| ... | ... | @@ -114,6 +152,41 @@ switch (strtoupper($funcao)) |
| 114 | 152 | $cor->setRGB(255,0,255); |
| 115 | 153 | $estilo->set("width",2); |
| 116 | 154 | } |
| 155 | + if(file_exists($pathresult."/".$prefixo."_best_path_within_buffer.shp")){ | |
| 156 | + //best_path_within_buffer | |
| 157 | + $retorno = $m->adicionaTemaSHP($pathresult."/".$prefixo."_best_path_within_buffer.shp"); | |
| 158 | + $layer = $m->mapa->getlayerbyname($prefixo."_best_path_within_buffer.shp"); | |
| 159 | + $layer->setmetadata("TEMA","Caminho restrito ao buffer $prefixo"); | |
| 160 | + $layer->setmetadata("DOWNLOAD","SIM"); | |
| 161 | + $layer->setmetadata("TEMALOCAL","SIM"); | |
| 162 | + $classe = $layer->getclass(0); | |
| 163 | + $estilo = $classe->getstyle(0); | |
| 164 | + $cor = $estilo->color; | |
| 165 | + $cor->setRGB(255,255,0); | |
| 166 | + //buffer | |
| 167 | + $retorno = $m->adicionaTemaSHP($pathresult."/".$prefixo."_buffer_best_path_within_buffer.shp"); | |
| 168 | + $layer = $m->mapa->getlayerbyname($prefixo."_buffer_best_path_within_buffer.shp"); | |
| 169 | + $layer->setmetadata("TEMA","Buffer $prefixo"); | |
| 170 | + $layer->setmetadata("DOWNLOAD","SIM"); | |
| 171 | + $layer->setmetadata("TEMALOCAL","SIM"); | |
| 172 | + $classe = $layer->getclass(0); | |
| 173 | + $estilo = $classe->getstyle(0); | |
| 174 | + $cor = $estilo->color; | |
| 175 | + $cor->setRGB(-1,-1,-1); | |
| 176 | + $estilo->set("width",2); | |
| 177 | + } | |
| 178 | + if(file_exists($pathresult."/".$prefixo."_best_path_lut.shp")){ | |
| 179 | + //cartesian_straight_line_cost | |
| 180 | + $retorno = $m->adicionaTemaSHP($pathresult."/".$prefixo."_best_path_lut.shp"); | |
| 181 | + $layer = $m->mapa->getlayerbyname($prefixo."_best_path_lut.shp"); | |
| 182 | + $layer->setmetadata("TEMA","Caminho mais curto reclassificado $prefixo"); | |
| 183 | + $layer->setmetadata("DOWNLOAD","SIM"); | |
| 184 | + $layer->setmetadata("TEMALOCAL","SIM"); | |
| 185 | + $classe = $layer->getclass(0); | |
| 186 | + $estilo = $classe->getstyle(0); | |
| 187 | + $cor = $estilo->color; | |
| 188 | + $cor->setRGB(0,255,255); | |
| 189 | + } | |
| 117 | 190 | $m->salva(); |
| 118 | 191 | } |
| 119 | 192 | else{ | ... | ... |
ferramentas/melhorcaminho/index.js
| ... | ... | @@ -127,8 +127,8 @@ i3GEOF.melhorcaminho = { |
| 127 | 127 | i3GEO.janela.minimiza("i3GEOF.melhorcaminho"); |
| 128 | 128 | }; |
| 129 | 129 | janela = i3GEO.janela.cria( |
| 130 | - "400px", | |
| 131 | - "190px", | |
| 130 | + "430px", | |
| 131 | + "210px", | |
| 132 | 132 | "", |
| 133 | 133 | "", |
| 134 | 134 | "", |
| ... | ... | @@ -175,7 +175,10 @@ i3GEOF.melhorcaminho = { |
| 175 | 175 | i3GEOF.melhorcaminho.comboTemas(); |
| 176 | 176 | }, |
| 177 | 177 | t3: function(){ |
| 178 | - var ins = "<p class='paragrafo'><b>"+$trad('pti',i3GEOF.melhorcaminho.dicionario)+"</b>"; | |
| 178 | + var ins, | |
| 179 | + retorno = i3GEOF.melhorcaminho.COORDENADASTEMA; | |
| 180 | + | |
| 181 | + ins = "<p class='paragrafo'><b>"+$trad('pti',i3GEOF.melhorcaminho.dicionario)+"</b>"; | |
| 179 | 182 | ins += "<p class='paragrafo'>X (long): "; |
| 180 | 183 | ins += $trad('grau',i3GEOF.melhorcaminho.dicionario)+" - "+$trad('minuto',i3GEOF.melhorcaminho.dicionario)+" - "+$trad('segundo',i3GEOF.melhorcaminho.dicionario)+"</p>"; |
| 181 | 184 | ins += "<div class='i3geoForm100 i3geoFormIconeEdita' style='float:left;' ><input id='i3GEOmelhorcaminhoxg' title='grau' type=text value='1'/></div>"; |
| ... | ... | @@ -193,18 +196,22 @@ i3GEOF.melhorcaminho = { |
| 193 | 196 | i3GEO.eventos.removeEventos("MOUSECLIQUE",["i3GEOF.melhorcaminho.capturaPontoB()"]); |
| 194 | 197 | i3GEO.eventos.adicionaEventos("MOUSECLIQUE",["i3GEOF.melhorcaminho.capturaPontoA()"]); |
| 195 | 198 | //calcula as coordenadas em DD |
| 196 | - dms = i3GEO.calculo.dd2dms(retorno.data.ax,retorno.data.ay); | |
| 197 | - dmsx = dms[0].split(" "); | |
| 198 | - dmsy = dms[1].split(" "); | |
| 199 | - $i("i3GEOmelhorcaminhoxg").value = dmsx[0]; | |
| 200 | - $i("i3GEOmelhorcaminhoxm").value = dmsx[1]; | |
| 201 | - $i("i3GEOmelhorcaminhoxs").value = dmsx[2]; | |
| 202 | - $i("i3GEOmelhorcaminhoyg").value = dmsy[0]; | |
| 203 | - $i("i3GEOmelhorcaminhoym").value = dmsy[1]; | |
| 204 | - $i("i3GEOmelhorcaminhoys").value = dmsy[2]; | |
| 199 | + if(retorno != ""){ | |
| 200 | + dms = i3GEO.calculo.dd2dms(retorno.data.ax,retorno.data.ay); | |
| 201 | + dmsx = dms[0].split(" "); | |
| 202 | + dmsy = dms[1].split(" "); | |
| 203 | + $i("i3GEOmelhorcaminhoxg").value = dmsx[0]; | |
| 204 | + $i("i3GEOmelhorcaminhoxm").value = dmsx[1]; | |
| 205 | + $i("i3GEOmelhorcaminhoxs").value = dmsx[2]; | |
| 206 | + $i("i3GEOmelhorcaminhoyg").value = dmsy[0]; | |
| 207 | + $i("i3GEOmelhorcaminhoym").value = dmsy[1]; | |
| 208 | + $i("i3GEOmelhorcaminhoys").value = dmsy[2]; | |
| 209 | + } | |
| 205 | 210 | }, |
| 206 | 211 | t4: function(){ |
| 207 | - var ins = "<p class='paragrafo'><b>"+$trad('ptf',i3GEOF.melhorcaminho.dicionario)+"</b>"; | |
| 212 | + var ins, | |
| 213 | + retorno = i3GEOF.melhorcaminho.COORDENADASTEMA; | |
| 214 | + ins = "<p class='paragrafo'><b>"+$trad('ptf',i3GEOF.melhorcaminho.dicionario)+"</b>"; | |
| 208 | 215 | ins += "<p class='paragrafo'>X (long): "; |
| 209 | 216 | ins += $trad('grau',i3GEOF.melhorcaminho.dicionario)+" - "+$trad('minuto',i3GEOF.melhorcaminho.dicionario)+" - "+$trad('segundo',i3GEOF.melhorcaminho.dicionario)+"</p>"; |
| 210 | 217 | ins += "<div class='i3geoForm100 i3geoFormIconeEdita' style='float:left;' ><input id='i3GEOmelhorcaminhoixg' title='grau' type=text value='1'/></div>"; |
| ... | ... | @@ -223,15 +230,17 @@ i3GEOF.melhorcaminho = { |
| 223 | 230 | i3GEO.eventos.removeEventos("MOUSECLIQUE",["i3GEOF.melhorcaminho.capturaPontoA()"]); |
| 224 | 231 | i3GEO.eventos.adicionaEventos("MOUSECLIQUE",["i3GEOF.melhorcaminho.capturaPontoB()"]); |
| 225 | 232 | //calcula as coordenadas em DD |
| 226 | - dms = i3GEO.calculo.dd2dms(retorno.data.bx,retorno.data.by); | |
| 227 | - dmsx = dms[0].split(" "); | |
| 228 | - dmsy = dms[1].split(" "); | |
| 229 | - $i("i3GEOmelhorcaminhoixg").value = dmsx[0]; | |
| 230 | - $i("i3GEOmelhorcaminhoixm").value = dmsx[1]; | |
| 231 | - $i("i3GEOmelhorcaminhoixs").value = dmsx[2]; | |
| 232 | - $i("i3GEOmelhorcaminhoiyg").value = dmsy[0]; | |
| 233 | - $i("i3GEOmelhorcaminhoiym").value = dmsy[1]; | |
| 234 | - $i("i3GEOmelhorcaminhoiys").value = dmsy[2]; | |
| 233 | + if(retorno != ""){ | |
| 234 | + dms = i3GEO.calculo.dd2dms(retorno.data.bx,retorno.data.by); | |
| 235 | + dmsx = dms[0].split(" "); | |
| 236 | + dmsy = dms[1].split(" "); | |
| 237 | + $i("i3GEOmelhorcaminhoixg").value = dmsx[0]; | |
| 238 | + $i("i3GEOmelhorcaminhoixm").value = dmsx[1]; | |
| 239 | + $i("i3GEOmelhorcaminhoixs").value = dmsx[2]; | |
| 240 | + $i("i3GEOmelhorcaminhoiyg").value = dmsy[0]; | |
| 241 | + $i("i3GEOmelhorcaminhoiym").value = dmsy[1]; | |
| 242 | + $i("i3GEOmelhorcaminhoiys").value = dmsy[2]; | |
| 243 | + } | |
| 235 | 244 | }, |
| 236 | 245 | t5: function(){ |
| 237 | 246 | var b, ins = "<p class='paragrafo'>"+$trad('lut',i3GEOF.melhorcaminho.dicionario); |
| ... | ... | @@ -244,6 +253,8 @@ i3GEOF.melhorcaminho = { |
| 244 | 253 | ins += "</tr></table>"; |
| 245 | 254 | ins += "<br>"; |
| 246 | 255 | ins += "<div id='i3GEOmelhorcaminhoLut' ></div>"; |
| 256 | + ins += "<br><br> <p class='paragrafo'>"+$trad('buffer',i3GEOF.melhorcaminho.dicionario)+"<br><div class='i3geoForm i3geoFormIconeEdita'><input id='i3GEOmelhorcaminhoBuffer' type=text value='0' /></div>"; | |
| 257 | + | |
| 247 | 258 | i3GEO.util.proximoAnterior("i3GEOF.melhorcaminho.t4()","i3GEOF.melhorcaminho.t6()",ins,"i3GEOF.melhorcaminho.t5","i3GEOmelhorcaminhoresultado",true,"i3GEOF.melhorcaminho_rodape"); |
| 248 | 259 | b = new YAHOO.widget.Button( |
| 249 | 260 | "i3GEOmelhorcaminhoLut4", |
| ... | ... | @@ -267,7 +278,7 @@ i3GEOF.melhorcaminho = { |
| 267 | 278 | v1 = $i("i3GEOmelhorcaminhoLut1").value; |
| 268 | 279 | v2 = $i("i3GEOmelhorcaminhoLut2").value; |
| 269 | 280 | v3 = $i("i3GEOmelhorcaminhoLut3").value; |
| 270 | - v = ">= " + v1 + "e < " + v2 + " = " + v3; | |
| 281 | + v = ">= " + v1 + "e <= " + v2 + " = " + v3; | |
| 271 | 282 | n = v1 + "," + v2 + "," + v3; |
| 272 | 283 | onde = $i("i3GEOmelhorcaminhoLut"); |
| 273 | 284 | novo = "<div class='i3geoForm150 i3geoFormTag' style='float:left;margin-left:2px;margin-top:2px;' onclick='i3GEOF.melhorcaminho.removeLut(this)'>" |
| ... | ... | @@ -319,7 +330,7 @@ i3GEOF.melhorcaminho = { |
| 319 | 330 | retorno = function(retorno) { |
| 320 | 331 | var dms,dmsx,dmsy; |
| 321 | 332 | i3GEO.janela.fechaAguarde("shape2pontos"); |
| 322 | - i3GEOF.melhorcaminho.COORDENADASTEMA = retorno.data; | |
| 333 | + i3GEOF.melhorcaminho.COORDENADASTEMA = retorno; | |
| 323 | 334 | i3GEOF.melhorcaminho.t3(); |
| 324 | 335 | }; |
| 325 | 336 | i3GEO.janela.abreAguarde("shape2pontos", $trad("o1")); |
| ... | ... | @@ -388,7 +399,7 @@ i3GEOF.melhorcaminho = { |
| 388 | 399 | $i("i3GEOmelhorcaminhoresultadoFim").innerHTML = retorno.data; |
| 389 | 400 | }; |
| 390 | 401 | p = i3GEO.configura.locaplic+"/ferramentas/melhorcaminho/exec.php?g_sid="+i3GEO.configura.sid |
| 391 | - +"&funcao=melhorcaminho&pta="+pta+"&ptb="+ptb+"&lut="+lut+"&raster="+raster; | |
| 402 | + +"&funcao=melhorcaminho&pta="+pta+"&ptb="+ptb+"&lut="+lut+"&raster="+raster+"&buffer="+$i("i3GEOmelhorcaminhoBuffer").value; | |
| 392 | 403 | cp = new cpaint(); |
| 393 | 404 | cp.set_response_type("JSON"); |
| 394 | 405 | cp.call(p,"melhorcaminho",fim); | ... | ... |