Commit 4fef75cd756038949b75915d763ee0874d8f9268
1 parent
df4077b3
Exists in
master
and in
7 other branches
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
Showing
3 changed files
with
74 additions
and
3 deletions
Show diff stats
classesphp/classe_analise.php
@@ -2179,6 +2179,8 @@ $operacao - Tipo de análise. | @@ -2179,6 +2179,8 @@ $operacao - Tipo de análise. | ||
2179 | $this->salva(); | 2179 | $this->salva(); |
2180 | $final = array(); | 2180 | $final = array(); |
2181 | $final["layer"] = $operacao." ".(implode(" ",$lista)); | 2181 | $final["layer"] = $operacao." ".(implode(" ",$lista)); |
2182 | + | ||
2183 | + | ||
2182 | $final["dados"][] = array("id"=>"0","wkt"=>($calculo[0]["gwkt"]),"valores"=>$valoresoriginais,"imagem"=>($imagem["url"])); | 2184 | $final["dados"][] = array("id"=>"0","wkt"=>($calculo[0]["gwkt"]),"valores"=>$valoresoriginais,"imagem"=>($imagem["url"])); |
2183 | $this->serializeGeo($nomegeo,$final); | 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,9 +310,10 @@ $tipo - Tipo de operação adiciona|retira|inverte|limpa | ||
310 | /* | 310 | /* |
311 | function: selecaoAtributos | 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 | parameters: | 315 | parameters: |
316 | + | ||
316 | $tipo - Tipo de operação adiciona|retira|inverte|limpa | 317 | $tipo - Tipo de operação adiciona|retira|inverte|limpa |
317 | 318 | ||
318 | $item - Item que será consultado. | 319 | $item - Item que será consultado. |
@@ -353,8 +354,62 @@ $valor - Valor. | @@ -353,8 +354,62 @@ $valor - Valor. | ||
353 | {$this->layer->querybyattributes($item,'(['.$item.']'.$operador.' '.$valor.' )',1);} | 354 | {$this->layer->querybyattributes($item,'(['.$item.']'.$operador.' '.$valor.' )',1);} |
354 | } | 355 | } |
355 | $res_count = $this->layer->getNumresults(); | 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 | $shpi = array(); | 413 | $shpi = array(); |
359 | for ($i = 0; $i < $res_count; ++$i) | 414 | for ($i = 0; $i < $res_count; ++$i) |
360 | { | 415 | { |
classesphp/mapa_controle.php
@@ -2494,6 +2494,20 @@ Include: | @@ -2494,6 +2494,20 @@ Include: | ||
2494 | $cp->set_data($m->selecaoAtributos($tipo,$item,$operador,$valor)); | 2494 | $cp->set_data($m->selecaoAtributos($tipo,$item,$operador,$valor)); |
2495 | break; | 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 | Property: selecaotema | 2511 | Property: selecaotema |
2498 | 2512 | ||
2499 | Sleciona elementos de um tema com base em outro tema. | 2513 | Sleciona elementos de um tema com base em outro tema. |