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