Commit ffa25349b10ac6818e5ce3f5f664fd8c1140a97a

Authored by Edmar Moretti
1 parent e619c589
Exists in master

Correção na montagem da expressão de seleção quando se usa querybyattributes na …

…versão 7 do Mapserver
Showing 1 changed file with 27 additions and 17 deletions   Show diff stats
classesphp/classe_selecao.php
@@ -171,12 +171,10 @@ $wkt - string wkt opcional ao uso de xs e ys @@ -171,12 +171,10 @@ $wkt - string wkt opcional ao uso de xs e ys
171 171
172 $buffer - buffer que ser� aplicado 172 $buffer - buffer que ser� aplicado
173 */ 173 */
174 - function selecaoPorPoligono($tipo,$xs="",$ys="",$wkt="",$buffer=0)  
175 - { 174 + function selecaoPorPoligono($tipo,$xs="",$ys="",$wkt="",$buffer=0){
176 if(!$this->layer){return "erro";} 175 if(!$this->layer){return "erro";}
177 $this->layer->set("tolerance",0); 176 $this->layer->set("tolerance",0);
178 - if ($tipo == "novo")  
179 - { 177 + if ($tipo == "novo"){
180 $this->selecaoLimpa(); 178 $this->selecaoLimpa();
181 $tipo = "adiciona"; 179 $tipo = "adiciona";
182 } 180 }
@@ -499,8 +497,7 @@ $valor - Valor. @@ -499,8 +497,7 @@ $valor - Valor.
499 497
500 $tipo - Tipo de operação adiciona|retira|inverte|limpa|novo 498 $tipo - Tipo de operação adiciona|retira|inverte|limpa|novo
501 */ 499 */
502 - function selecaoAtributos2($filtro,$tipo)  
503 - { 500 + function selecaoAtributos2($filtro,$tipo){
504 $items = pegaItens($this->layer); 501 $items = pegaItens($this->layer);
505 if ($tipo == "novo") 502 if ($tipo == "novo")
506 { 503 {
@@ -521,8 +518,8 @@ $valor - Valor. @@ -521,8 +518,8 @@ $valor - Valor.
521 $shpi = array(); 518 $shpi = array();
522 519
523 $filtro = str_replace("|","'",$filtro); 520 $filtro = str_replace("|","'",$filtro);
524 - if ($this->layer->connectiontype == MS_POSTGIS)  
525 - { 521 +
  522 + if ($this->layer->connectiontype == MS_POSTGIS && $this->v < 7) {
526 $filtro = str_replace("'[","",$filtro); 523 $filtro = str_replace("'[","",$filtro);
527 $filtro = str_replace("[","",$filtro); 524 $filtro = str_replace("[","",$filtro);
528 $filtro = str_replace("]'","",$filtro); 525 $filtro = str_replace("]'","",$filtro);
@@ -530,24 +527,26 @@ $valor - Valor. @@ -530,24 +527,26 @@ $valor - Valor.
530 $filtro = str_replace("("," ",$filtro); 527 $filtro = str_replace("("," ",$filtro);
531 $filtro = str_replace(")"," ",$filtro); 528 $filtro = str_replace(")"," ",$filtro);
532 } 529 }
  530 +
533 $teste = $this->layer->querybyattributes($items[0],$filtro,1); 531 $teste = $this->layer->querybyattributes($items[0],$filtro,1);
534 if($teste != MS_SUCCESS){ 532 if($teste != MS_SUCCESS){
535 - $teste = $this->layer->queryByAttributes($itens[0], mb_convert_encoding($filtro,"ISO-8859-1","UTF-8"), 1);  
536 - } 533 + $teste = $this->layer->queryByAttributes($items[0], mb_convert_encoding($filtro,"ISO-8859-1","UTF-8"), 1);
  534 + }
537 if($teste != MS_SUCCESS){ 535 if($teste != MS_SUCCESS){
538 - $teste = $this->layer->queryByAttributes($itens[0], mb_convert_encoding($filtro,"UTF-8","ISO-8859-1"), 1); 536 + $teste = $this->layer->queryByAttributes($items[0], mb_convert_encoding($filtro,"UTF-8","ISO-8859-1"), 1);
539 } 537 }
540 $res_count = $this->layer->getNumresults(); 538 $res_count = $this->layer->getNumresults();
541 $shpi = array(); 539 $shpi = array();
542 - for ($i = 0; $i < $res_count; ++$i)  
543 - { 540 + for ($i = 0; $i < $res_count; ++$i){
544 $result = $this->layer->getResult($i); 541 $result = $this->layer->getResult($i);
545 $shpi[] = $result->shapeindex; 542 $shpi[] = $result->shapeindex;
546 } 543 }
547 - if ($tipo == "adiciona")  
548 - {return($this->selecaoAdiciona($shpi,$shp_atual));}  
549 - if ($tipo == "retira")  
550 - {return($this->selecaoRetira($shpi,$shp_atual));} 544 + if ($tipo == "adiciona"){
  545 + return($this->selecaoAdiciona($shpi,$shp_atual));
  546 + }
  547 + if ($tipo == "retira"){
  548 + return($this->selecaoRetira($shpi,$shp_atual));
  549 + }
551 return("ok"); 550 return("ok");
552 } 551 }
553 /* 552 /*
@@ -686,6 +685,17 @@ Inverte sele&amp;ccedil;&amp;atilde;o do tema. @@ -686,6 +685,17 @@ Inverte sele&amp;ccedil;&amp;atilde;o do tema.
686 if($this->qyfileTema != "" && file_exists($this->qyfileTema)){ 685 if($this->qyfileTema != "" && file_exists($this->qyfileTema)){
687 $shp_atual = $this->unserializeQ($this->qyfileTema); 686 $shp_atual = $this->unserializeQ($this->qyfileTema);
688 } 687 }
  688 + //TODO utilizar atributos qd for postgis para melhorar a performance
  689 + /*
  690 + if($this->layer->connectiontype == MS_POSTGIS){
  691 + $items = pegaItens($this->layer);
  692 + $this->layer->querybyattributes($items[0],$items[0].' > 0 ',1);
  693 + echo $this->layer->getNumresults();exit;
  694 + }
  695 + else {
  696 + $this->layer->queryByrect($this->mapa->extent);
  697 + }
  698 + */
689 $this->layer->queryByrect($this->mapa->extent); 699 $this->layer->queryByrect($this->mapa->extent);
690 $res_count = $this->layer->getNumresults(); 700 $res_count = $this->layer->getNumresults();
691 $shp_todos = array(); 701 $shp_todos = array();