Commit bb0c3e92c222a3c48ce4eb9584db8d7f6e354b3f

Authored by Edmar Moretti
1 parent 91f5b278

-

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&aacute; utilizado para obter o ponto inicial e final. No caso de tema pontual, ser&atilde;o considerados o primeiro e o &uacute;ltimo ponto. No caso de tema linear, ser&atilde;o considerados o primeiro e o &uacute;ltimo n&oacute;. No caso de tema poligonal, ser&atilde;o considerados o primeiro n&oacute; e o centr&oacute;ide. <br>Voc&ecirc; pode pular essa etapa caso queira escolher os pontos clicando no mapa.",
  24 + pt : "(Opcional) Escolha o tema que ser&aacute; utilizado para obter o ponto inicial e final. Ser&aacute; considerada a sele&ccedil;&atilde;o, se houver. No caso de tema pontual, ser&atilde;o considerados o primeiro e o &uacute;ltimo ponto. No caso de tema linear, ser&atilde;o considerados o primeiro e o &uacute;ltimo n&oacute;. No caso de tema poligonal, ser&atilde;o considerados o primeiro n&oacute; e o centr&oacute;ide. <br>Voc&ecirc; 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&aacute; considerada como &aacute;rea onde o caminho poder&aacute; ser tra&ccedil;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>&nbsp;<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);
... ...