Commit b58ad44071cbb560ac8e2807fac1fbc75051434e

Authored by Edmar Moretti
1 parent 74b8cffb

V6 - correção nos cálculos de classes no sistema metaestat

admin/admin.db
No preview for this file type
admin/php/classe_metaestat.php
... ... @@ -292,9 +292,10 @@ class Metaestat{
292 292 * @param coluna que sera usada para agrupar os dados
293 293 * @param tipo de layer. Usado para escolher qual coluna com as geometrias sera incluida no sql
294 294 * @param codigo do tipo de regiao. Se nao for definido, utiliza-se o default da variavel
  295 + * @param le os dados diretamente da tabela sem nenhum tipo de agrupamento, seja por data ou outro parametro
295 296 * @return array("sqlagrupamento"=>,"sql"=>,"sqlmapserver"=>,"filtro"=>,"colunas"=>,"alias"=>,"colunavalor"=>,"titulo"=>,"nomeregiao"=>)
296 297 */
297   - function sqlMedidaVariavel($id_medida_variavel,$todasascolunas,$agruparpor="",$tipolayer="polygon",$codigo_tipo_regiao = "",$suportaWMST = false,$filtro = ""){
  298 + function sqlMedidaVariavel($id_medida_variavel,$todasascolunas,$agruparpor="",$tipolayer="polygon",$codigo_tipo_regiao = "",$suportaWMST = false,$filtro = "",$direto=false){
298 299 /* Modelo de SQL
299 300 SELECT regiao.*,sum(j.valorcalculado) OVER (PARTITION BY regiao.co_municipio) AS valorcalculado
300 301 FROM i3geo_metaestat.municipios AS regiao
... ... @@ -406,13 +407,13 @@ class Metaestat{
406 407 }
407 408 //verifica o tipo de calculo para agragacao de valores
408 409 $tipoconta = "";
409   - if($dados["permitesoma"] == 1){
  410 + if($dados["permitesoma"] == 1 && $direto == false){
410 411 $tipoconta = "sum";
411 412 if($agregaregiao == true){
412 413 $titulo .= " - soma";
413 414 }
414 415 }
415   - elseif($dados["permitemedia"] == 1){
  416 + elseif($dados["permitemedia"] == 1 && $direto == false){
416 417 $tipoconta = "avg";
417 418 if($agregaregiao == true){
418 419 $titulo .= " - media";
... ... @@ -421,21 +422,21 @@ class Metaestat{
421 422  
422 423 //obtem o SQL que faz o acesso aos dados da media da variavel
423 424 $sqlDadosMedidaVariavel = "SELECT ".$dados["colunaidgeo"]." AS cod_regiao,$tipoconta(".$dados["colunavalor"].") AS valorcalculado FROM ".$dados["esquemadb"].".".$dados["tabela"];
424   - if($suportaWMST == true){
  425 + if($suportaWMST == true && $direto == false){
425 426 $sqlDadosMedidaVariavel = "SELECT $sqlWMST as dimtempo,".$dados["colunaidgeo"]." AS cod_regiao,".$dados["colunavalor"]." AS valorcalculado FROM ".$dados["esquemadb"].".".$dados["tabela"];
426 427 }
427   - if(!empty ($filtro)){
  428 + if(!empty ($filtro) && $direto == false){
428 429 $sqlDadosMedidaVariavel .= " WHERE ".$filtro . "AND ".$dados["colunavalor"]." IS NOT NULL ";
429 430 }
430 431 else{
431 432 $sqlDadosMedidaVariavel .= " WHERE ".$dados["colunavalor"]." IS NOT NULL ";
432 433 }
433   - if($suportaWMST != true){
  434 + if($suportaWMST != true && $direto == false){
434 435 $sqlDadosMedidaVariavel .= " /*FA*//*FA*/ /*FAT*//*FAT*/ GROUP BY cod_regiao ";
435 436 }
436 437 $sqlagrupamento = "";
437 438 //sql que retorna a lista de ocorrencias agrupados de uma coluna especifica
438   - if(!empty($agruparpor)){
  439 + if(!empty($agruparpor) && $direto == false){
439 440 $sqlagrupamento = " SELECT $agruparpor FROM ".$dados["esquemadb"].".".$dados["tabela"];
440 441 if(!empty ($filtro)){
441 442 $sqlagrupamento .= " WHERE ".$filtro;
... ... @@ -449,7 +450,7 @@ class Metaestat{
449 450 " INNER JOIN ( __SQLDADOS__ ) ".
450 451 " AS j ON j.cod_regiao::text = regiao.".$dadosgeo["identificador"]."::text";
451 452 //inclui os sqls de regioes de niveis inferiores
452   - if($agregaregiao == true){
  453 + if($agregaregiao == true && $direto == false){
453 454 $hierarquia = $this->regiaoFilhaAoPai($dados["codigo_tipo_regiao"],$codigo_tipo_regiao);
454 455 $caminho = $hierarquia["caminho"];
455 456 $dadosColunas = $hierarquia["colunas"];
... ... @@ -484,7 +485,7 @@ class Metaestat{
484 485  
485 486 //o SQL com os dados contem um filtro ou nao?
486 487 $contemfiltro = false;
487   - if(!empty($filtro)){
  488 + if(!empty($filtro) && $direto == false){
488 489 $contemfiltro = true;
489 490 $titulo .= " ".$filtro;
490 491 }
... ... @@ -992,11 +993,12 @@ class Metaestat{
992 993 * @param 0|1 mostra ou nao todas as colunas da tabela com os dados
993 994 * @param coluna de agrupamento
994 995 * @param limite do numero de registros
  996 + * @param le os dados diretamente da tabela sem nenhum tipo de agrupamento, seja por data ou outro parametro
995 997 * @return execSQL
996 998 */
997   - function dadosMedidaVariavel($id_medida_variavel,$filtro="",$todasascolunas = 0,$agruparpor = "",$limite=""){
  999 + function dadosMedidaVariavel($id_medida_variavel,$filtro="",$todasascolunas = 0,$agruparpor = "",$limite="",$direto=false){
998 1000 set_time_limit(0);
999   - $sql = $this->sqlMedidaVariavel($id_medida_variavel,$todasascolunas,$agruparpor,"polygon","",false,$filtro);
  1001 + $sql = $this->sqlMedidaVariavel($id_medida_variavel,$todasascolunas,$agruparpor,"polygon","",false,$filtro,$direto);
1000 1002 $sqlf = $sql["sqlmapserver"];
1001 1003 //remove marcadores geo
1002 1004 $sqlf = explode("/*SE*/",$sqlf);
... ... @@ -1007,6 +1009,7 @@ class Metaestat{
1007 1009 }
1008 1010 $sqlf = str_replace(", FROM"," FROM",$sqlf);
1009 1011 $metaVariavel = $this->listaMedidaVariavel("",$id_medida_variavel);
  1012 + //echo $sqlf;exit;
1010 1013 if(!empty($metaVariavel["codigo_estat_conexao"])){
1011 1014 $c = $this->listaConexao($metaVariavel["codigo_estat_conexao"],true);
1012 1015 $dbhold = $this->dbh;
... ... @@ -1044,14 +1047,16 @@ class Metaestat{
1044 1047 * @param id da medida
1045 1048 * @param filtro a ser concatenado ao sql
1046 1049 * @param coluna de agrupamento
  1050 + * @param limite numero maximo de registros que serao lidos do banco
  1051 + * @param le os dados diretamente da tabela sem nenhum tipo de agrupamento, seja por data ou outro parametro
1047 1052 * @return array("colunavalor"=>,"soma"=>,"media"=>,"menor"=>,"maior"=>,"quantidade"=>,"histograma"=>,"grupos"=>,"unidademedida"=>,"quartis"=>)
1048 1053 */
1049   - function sumarioMedidaVariavel($id_medida_variavel,$filtro="",$agruparpor="",$limite=""){
  1054 + function sumarioMedidaVariavel($id_medida_variavel,$filtro="",$agruparpor="",$limite="",$direto=false){
1050 1055 if(!empty($agruparpor)){
1051   - $dados = $this->dadosMedidaVariavel($id_medida_variavel,$filtro,1,"",$limite);
  1056 + $dados = $this->dadosMedidaVariavel($id_medida_variavel,$filtro,1,"",$limite,$direto);
1052 1057 }
1053 1058 else{
1054   - $dados = $this->dadosMedidaVariavel($id_medida_variavel,$filtro,0,"",$limite);
  1059 + $dados = $this->dadosMedidaVariavel($id_medida_variavel,$filtro,0,"",$limite,$direto);
1055 1060 }
1056 1061 if($dados){
1057 1062 $metaVariavel = $this->listaMedidaVariavel("",$id_medida_variavel);
... ...
admin/php/metaestat.php
... ... @@ -499,11 +499,12 @@ switch (strtoupper($funcao))
499 499 $cores = explode(";",$cores);
500 500 }
501 501 if(empty($limite)){
502   - $limite = 10000;
  502 + $limite = "";
503 503 }
  504 +
504 505 if($tipo == "quebrasnaturais"){
505 506 $m = new Metaestat();
506   - $dados = $m->dadosMedidaVariavel($id_medida_variavel,"",0,"",$limite);
  507 + $dados = $m->dadosMedidaVariavel($id_medida_variavel,"",0,"",$limite,true);
507 508 $metaVariavel = $m->listaMedidaVariavel("",$id_medida_variavel);
508 509 $colunavalor = $metaVariavel["colunavalor"];
509 510 $valores = array();
... ... @@ -539,7 +540,7 @@ switch (strtoupper($funcao))
539 540 }
540 541 if($tipo == "quartil"){
541 542 $m = new Metaestat();
542   - $dados = $m->sumarioMedidaVariavel($id_medida_variavel,"","",$limite);
  543 + $dados = $m->sumarioMedidaVariavel($id_medida_variavel,"","",$limite,true);
543 544 if($dados == false){
544 545 retornaJSON("erro");
545 546 exit;
... ... @@ -568,7 +569,7 @@ switch (strtoupper($funcao))
568 569 }
569 570 if($tipo == "intiguais5" || $tipo == "intiguais"){
570 571 $m = new Metaestat();
571   - $dados = $m->sumarioMedidaVariavel($id_medida_variavel,"","",$limite);
  572 + $dados = $m->sumarioMedidaVariavel($id_medida_variavel,"","",$limite,true);
572 573 if($dados == false){
573 574 retornaJSON("erro");
574 575 exit;
... ...