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