From b1c91378ac69fbd06bf1ee42998aaad5c4d4afe7 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Mon, 8 Jul 2013 17:16:25 +0000 Subject: [PATCH] inclusao de limitacao no numero de registros lidos para criacao automatica de classes no sistema metaestat --- admin/admin.db | Bin 206848 -> 0 bytes admin/php/classe_metaestat.php | 14 +++++++++----- admin/php/metaestat.php | 7 +++++-- ferramentas/metaestat/analise.php | 32 +++++++++++++++++++++++++++++--- ferramentas/metaestat/index.js | 70 +++++++++++++++++++++++++++++++++++++++++++++++----------------------- 5 files changed, 90 insertions(+), 33 deletions(-) diff --git a/admin/admin.db b/admin/admin.db index 064091b..701fc85 100644 Binary files a/admin/admin.db and b/admin/admin.db differ diff --git a/admin/php/classe_metaestat.php b/admin/php/classe_metaestat.php index 78687bd..e8df295 100755 --- a/admin/php/classe_metaestat.php +++ b/admin/php/classe_metaestat.php @@ -857,9 +857,11 @@ class Metaestat{ * @param filtro que sera concatenado ao sql * @param 0|1 mostra ou nao todas as colunas da tabela com os dados * @param coluna de agrupamento + * @param limite do numero de registros * @return execSQL */ - function dadosMedidaVariavel($id_medida_variavel,$filtro="",$todasascolunas = 0,$agruparpor = ""){ + function dadosMedidaVariavel($id_medida_variavel,$filtro="",$todasascolunas = 0,$agruparpor = "",$limite=""){ + set_time_limit(0); $sql = $this->sqlMedidaVariavel($id_medida_variavel,$todasascolunas,$agruparpor); //var_dump($sql);exit; $sqlf = $sql["sql"]; @@ -871,7 +873,9 @@ class Metaestat{ elseif(!empty($filtro)){ $sqlf .= " WHERE ".$filtro; } - //echo $sqlf;exit; + if($limite != ""){ + $sqlf .= " limit ".$limite; + } $metaVariavel = $this->listaMedidaVariavel("",$id_medida_variavel); if(!empty($metaVariavel["codigo_estat_conexao"])){ $c = $this->listaConexao($metaVariavel["codigo_estat_conexao"],true); @@ -912,12 +916,12 @@ class Metaestat{ * @param coluna de agrupamento * @return array("colunavalor"=>,"soma"=>,"media"=>,"menor"=>,"maior"=>,"quantidade"=>,"histograma"=>,"grupos"=>,"unidademedida"=>,"quartis"=>) */ - function sumarioMedidaVariavel($id_medida_variavel,$filtro="",$agruparpor=""){ + function sumarioMedidaVariavel($id_medida_variavel,$filtro="",$agruparpor="",$limite=""){ if(!empty($agruparpor)){ - $dados = $this->dadosMedidaVariavel($id_medida_variavel,$filtro,1); + $dados = $this->dadosMedidaVariavel($id_medida_variavel,$filtro,1,"",$limite); } else{ - $dados = $this->dadosMedidaVariavel($id_medida_variavel,$filtro,0); + $dados = $this->dadosMedidaVariavel($id_medida_variavel,$filtro,0,"",$limite); } if($dados){ $metaVariavel = $this->listaMedidaVariavel("",$id_medida_variavel); diff --git a/admin/php/metaestat.php b/admin/php/metaestat.php index 9a082b5..a0c7cbc 100644 --- a/admin/php/metaestat.php +++ b/admin/php/metaestat.php @@ -474,9 +474,12 @@ switch (strtoupper($funcao)) $cores = str_replace(")","",$cores); $cores = explode(";",$cores); } + if(empty($limite)){ + $limite = 10000; + } if($tipo == "quartil"){ $m = new Metaestat(); - $dados = $m->sumarioMedidaVariavel($id_medida_variavel); + $dados = $m->sumarioMedidaVariavel($id_medida_variavel,"","",$limite); if($dados == false){ retornaJSON("erro"); exit; @@ -499,7 +502,7 @@ switch (strtoupper($funcao)) } if($tipo == "intiguais5"){ $m = new Metaestat(); - $dados = $m->sumarioMedidaVariavel($id_medida_variavel); + $dados = $m->sumarioMedidaVariavel($id_medida_variavel,"","",$limite); if($dados == false){ retornaJSON("erro"); exit; diff --git a/ferramentas/metaestat/analise.php b/ferramentas/metaestat/analise.php index 9c1f474..c783828 100644 --- a/ferramentas/metaestat/analise.php +++ b/ferramentas/metaestat/analise.php @@ -663,6 +663,7 @@ function juntaMedidasVariaveis($map_file,$layerNames,$nome){ $nomesLayers = array(); foreach($layernames as $layername){ $l = $mapa->getlayerbyname($layername); + $l->set("status",MS_OFF); $s = explode("/*SE*/",$l->data); //pega o sql e da define um alias $sqls[] = $s[1]." as tabela".$conta; @@ -686,18 +687,43 @@ function juntaMedidasVariaveis($map_file,$layerNames,$nome){ $cwhere = array(); for($i=1;$i<$n;$i++){ - $cwhere[] = "tabela0.".$colunasIdentificador[0]." = "."tabela".$i.".".$colunasIdentificador[$i]; + $cwhere[] = "tabela0.".$colunasIdentificador[0]."::text = "."tabela".$i.".".$colunasIdentificador[$i]."::text"; } $colunasDados = array(); + $itens = array($gid); + $itensdesc = array("gid"); for($i=0;$i<$n;$i++){ $colunasDados[] = "tabela".$i.".".$colunasValor[$i]." as valorTema".$i; + $itens[] = "valorTema".$i; + $itensdesc[] = $nomesLayers[$i]; } $sqlfinal = "SELECT tabela0.".$gid.",tabela0.".$regiao["colunageo"]." as the_geom,".implode(",",$colunasDados)." from ".implode(",",$sqls)." WHERE "; $sqlfinal .= implode($cwhere," AND "); $sqlfinal = str_replace("/*FA*/","",$sqlfinal); $sqlfinal = str_replace("/*FAT*/","",$sqlfinal); - $data = "SELECT the_geom from ($sqlfinal) as foo using unique $gid using srid=".$regiao["srid"]; - return $data; + $data = "the_geom from ($sqlfinal) as foo using unique $gid using srid=".$regiao["srid"]; + $nlayer = ms_newLayerObj($mapa,$mapa->getlayerbyname($layernames[0])); + $nlayer->set("data",$data); + $nlayer->set("name",$nlayer->name."_"); + $nlayer->setmetadata("tema",$nome); + $nlayer->setmetadata("METAESTAT_DERIVADO","sim"); + $nlayer->setmetadata("METAESTAT_ID_MEDIDA_VARIAVEL",""); + $nlayer->setmetadata("TIP",""); + $nlayer->setmetadata("arquivotemaoriginal",""); + $nlayer->setmetadata("nomeoriginal",""); + $nlayer->setmetadata("ITENS",implode(",",$itens)); + $nlayer->setmetadata("ITENSDESC",implode(",",$itensdesc)); + + $nclass = $nlayer->numclasses; + for($i=1;$i<$nclass;$i++){ + $nlayer->getclass($i)->set("status",MS_DELETE); + } + $c = $nlayer->getclass(0); + $c->set("name"," "); + $c->setexpression(""); + $nlayer->set("status",MS_DEFAULT); + $mapa->save($map_file); + return $nlayer->name; } /** * Lista os nomes dos layers originados do sistema METAESTAT. diff --git a/ferramentas/metaestat/index.js b/ferramentas/metaestat/index.js index 5a9a17b..6dc9396 100644 --- a/ferramentas/metaestat/index.js +++ b/ferramentas/metaestat/index.js @@ -330,15 +330,23 @@ i3GEOF.metaestat = { * Junta camadas em uma nova, contendo as colunas das medidas */ juntaMedidasVariaveis: function(){ + if($i("aguardeAnalise_c") && $i("aguardeAnalise_c").style.visibility == "visible"){ + return; + }; var p = i3GEO.configura.locaplic+"/ferramentas/metaestat/analise.php?g_sid="+i3GEO.configura.sid + "&funcao=listaLayersAgrupados", temp = function(retorno){ - i3GEO.janela.fechaAguarde("aguardeBuscaDados"); + i3GEO.janela.fechaAguarde("aguardeAnalise"); if($i("i3GEOF.junta_corpo")){ return; } var aplica,minimiza,cabecalho,titulo,ins,n,i,lista = ""; aplica = function(){ + if($i("aguardeAnalise_c") && $i("aguardeAnalise_c").style.visibility == "visible"){ + return; + }; + i3GEO.janela.abreAguarde("aguardeAnalise","Aguarde..."); + var atualiza,p,lista = [],i,ics = $i("i3GEOF.junta_corpo").getElementsByTagName("input"); n = ics.length; for(i=0;i