Commit 4fef75cd756038949b75915d763ee0874d8f9268

Authored by Edmar Moretti
1 parent df4077b3

inclusão de um novo método na classe selecao para permitir a seleção por atribut…

…os de forma complexa, com mais de um item e operador
classesphp/classe_analise.php
... ... @@ -2179,6 +2179,8 @@ $operacao - Tipo de análise.
2179 2179 $this->salva();
2180 2180 $final = array();
2181 2181 $final["layer"] = $operacao." ".(implode(" ",$lista));
  2182 +
  2183 +
2182 2184 $final["dados"][] = array("id"=>"0","wkt"=>($calculo[0]["gwkt"]),"valores"=>$valoresoriginais,"imagem"=>($imagem["url"]));
2183 2185 $this->serializeGeo($nomegeo,$final);
2184 2186 }
... ...
classesphp/classe_selecao.php
... ... @@ -310,9 +310,10 @@ $tipo - Tipo de operação adiciona|retira|inverte|limpa
310 310 /*
311 311 function: selecaoAtributos
312 312  
313   -Seleciona por atributo.
  313 +Seleção simples por atributo. Não permite composição de atributos.
314 314  
315 315 parameters:
  316 +
316 317 $tipo - Tipo de operação adiciona|retira|inverte|limpa
317 318  
318 319 $item - Item que será consultado.
... ... @@ -353,8 +354,62 @@ $valor - Valor.
353 354 {$this->layer->querybyattributes($item,'(['.$item.']'.$operador.' '.$valor.' )',1);}
354 355 }
355 356 $res_count = $this->layer->getNumresults();
356   - //echo '("['.$item.']"'.$operador.'"'.$valor.'")';
357   - //echo $res_count;
  357 + $shpi = array();
  358 + for ($i = 0; $i < $res_count; ++$i)
  359 + {
  360 + $result = $this->layer->getResult($i);
  361 + $shpi[] = $result->shapeindex;
  362 + }
  363 + if ($tipo == "adiciona")
  364 + {return($this->selecaoAdiciona($shpi,$shp_atual));}
  365 + if ($tipo == "retira")
  366 + {return($this->selecaoRetira($shpi,$shp_atual));}
  367 + return("ok");
  368 + }
  369 + /*
  370 + function: selecaoAtributos2
  371 +
  372 + Seleção por atributo. Permite composição de atributos.
  373 +
  374 + parameters:
  375 +
  376 + $filtro - Expressão de seleção
  377 +
  378 + $tipo - Tipo de operação adiciona|retira|inverte|limpa
  379 + */
  380 + function selecaoAtributos2($filtro,$tipo)
  381 + {
  382 + if ($tipo == "limpa")
  383 + {return($this->selecaoLimpa());}
  384 + if ($tipo == "inverte")
  385 + {return($this->selecaoInverte());}
  386 + if(!$this->layer){return "erro";}
  387 + $this->layer->set("template","none.htm");
  388 + $indxlayer = $this->layer->index;
  389 + if (file_exists(($this->arquivo)."qy"))
  390 + {$this->mapa->loadquery(($this->arquivo)."qy");}
  391 + $res_count = $this->layer->getNumresults();
  392 + $shp_atual = array();
  393 + for ($i = 0; $i < $res_count;++$i)
  394 + {
  395 + $rc = $this->layer->getResult($i);
  396 + $shp_atual[] = $rc->shapeindex;
  397 + }
  398 + $this->mapa->freequery($indxlayer);
  399 + $shpi = array();
  400 + $items = pegaItens($this->layer);
  401 + $filtro = str_replace("|","'",$filtro);
  402 + if ($this->layer->connectiontype == MS_POSTGIS)
  403 + {
  404 + $filtro = str_replace("'[","",$filtro);
  405 + $filtro = str_replace("[","",$filtro);
  406 + $filtro = str_replace("]'","",$filtro);
  407 + $filtro = str_replace("]","",$filtro);
  408 + $filtro = str_replace("("," ",$filtro);
  409 + $filtro = str_replace(")"," ",$filtro);
  410 + }
  411 + $this->layer->querybyattributes($items[0],$filtro,1);
  412 + $res_count = $this->layer->getNumresults();
358 413 $shpi = array();
359 414 for ($i = 0; $i < $res_count; ++$i)
360 415 {
... ...
classesphp/mapa_controle.php
... ... @@ -2494,6 +2494,20 @@ Include:
2494 2494 $cp->set_data($m->selecaoAtributos($tipo,$item,$operador,$valor));
2495 2495 break;
2496 2496 /*
  2497 +Property: selecaoatrib2
  2498 +
  2499 +Seleciona elementos com base nos atributos utilizando sintaxe complexa.
  2500 +
  2501 +Include:
  2502 +<classe_selecao.php>
  2503 +*/
  2504 + case "selecaoatrib2":
  2505 + include_once("classe_selecao.php");
  2506 + copiaSeguranca($map_file);
  2507 + $m = new Selecao($map_file,$tema);
  2508 + $cp->set_data($m->selecaoAtributos2($filtro,$tipo));
  2509 + break;
  2510 +/*
2497 2511 Property: selecaotema
2498 2512  
2499 2513 Sleciona elementos de um tema com base em outro tema.
... ...