Commit 902f7abd28625a2b737c97104c07dbad67109783
1 parent
5e50a90d
Exists in
master
and in
6 other branches
Alteração na função que retorna a lista de indicadores para o catálogo do mapa d…
…a saúde, para melhorar a performance
Showing
4 changed files
with
102 additions
and
7 deletions
Show diff stats
classesphp/classe_metaestatinfo.php
... | ... | @@ -1889,16 +1889,25 @@ class MetaestatInfo{ |
1889 | 1889 | else{ |
1890 | 1890 | $vs = $this->listaVariavel(); |
1891 | 1891 | } |
1892 | + | |
1893 | + $lista = $this->listaMedidaVariavel(); | |
1894 | + $lista = array_group_by($lista, "codigo_variavel"); | |
1895 | + | |
1892 | 1896 | foreach($vs as $v){ |
1893 | 1897 | $nivel1["id"] = $v["codigo_variavel"]; |
1894 | 1898 | $nivel1["titulo"] = $v["nome"]; |
1895 | 1899 | $nivel1["descricao"] = $v["descricao"]; |
1896 | - $ms = $this->listaMedidaVariavel($v["codigo_variavel"]); | |
1900 | + //$ms = $this->listaMedidaVariavel($v["codigo_variavel"]); | |
1901 | + | |
1902 | + $ms = $lista[$v["codigo_variavel"]]; | |
1903 | + | |
1897 | 1904 | $nivel1["filhos"] = array(); |
1898 | 1905 | foreach($ms as $m){ |
1899 | 1906 | $nivel2["id"] = $m["id_medida_variavel"]; |
1900 | 1907 | $nivel2["titulo"] = $m["nomemedida"]; |
1901 | - $unidade = $this->listaUnidadeMedida($m["codigo_unidade_medida"]); | |
1908 | + //$unidade = $this->listaUnidadeMedida($m["codigo_unidade_medida"]); | |
1909 | + | |
1910 | + $unidade = $lista[$m["codigo_unidade_medida"]]; | |
1902 | 1911 | $unidade = "Unidade de medida: ".$unidade["nome"]; |
1903 | 1912 | $periodo = $this->listaTipoPeriodo($m["codigo_tipo_periodo"]); |
1904 | 1913 | $periodo = "Período de tempo: ".$periodo["nome"]; | ... | ... |
classesphp/classe_temas.php
... | ... | @@ -959,18 +959,22 @@ $wkt - boolean indicando se $xy e um WKT |
959 | 959 | } |
960 | 960 | |
961 | 961 | $pinlayer->addfeature($shp); |
962 | - if($nomeTema != ""){ | |
963 | - $pinlayer->setmetadata("tema",$nomeTema); | |
964 | - } | |
962 | + | |
965 | 963 | //verifica a projecao |
966 | 964 | $c = $shp->getCentroid(); |
967 | - $c = $c->x; | |
968 | - if($c > -181 && $c < 181){ | |
965 | + if($c->x > -181 && $c->x < 181){ | |
969 | 966 | $pinlayer->setprojection(pegaProjecaoDefault("proj4")); |
967 | + $extensao = ($c->x - 0.01)." ".($c->y - 0.01)." ".($c->x + 0.01)." ".($c->y + 0.01); | |
970 | 968 | } |
971 | 969 | else{ |
972 | 970 | $pinlayer->setprojection($this->mapa->getProjection()); |
971 | + $extensao = ($c->x - 50000)." ".($c->y - 50000)." ".($c->x + 50000)." ".($c->y + 50000); | |
973 | 972 | } |
973 | + $pinlayer->setmetadata("extensao",$extensao); | |
974 | + if($nomeTema != ""){ | |
975 | + $pinlayer->setmetadata("tema",$nomeTema); | |
976 | + } | |
977 | + | |
974 | 978 | return("ok"); |
975 | 979 | } |
976 | 980 | /* | ... | ... |
classesphp/funcoes_gerais.php
... | ... | @@ -3556,4 +3556,70 @@ function pegaDadosAdmin($sql,$dbh=""){ |
3556 | 3556 | throw new Exception("pegaDadosAdmin"); |
3557 | 3557 | } |
3558 | 3558 | } |
3559 | +/** | |
3560 | + * Groups an array by a given key. | |
3561 | + * | |
3562 | + * Groups an array into arrays by a given key, or set of keys, shared between all array members. | |
3563 | + * | |
3564 | + * Based on {@author Jake Zatecky}'s {@link https://github.com/jakezatecky/array_group_by array_group_by()} function. | |
3565 | + * This variant allows $key to be closures. | |
3566 | + * | |
3567 | + * @param array $array The array to have grouping performed on. | |
3568 | + * @param mixed $key,... The key to group or split by. Can be a _string_, | |
3569 | + * an _integer_, a _float_, or a _callable_. | |
3570 | + * | |
3571 | + * If the key is a callback, it must return | |
3572 | + * a valid key from the array. | |
3573 | + * | |
3574 | + * If the key is _NULL_, the iterated element is skipped. | |
3575 | + * | |
3576 | + * ``` | |
3577 | + * string|int callback ( mixed $item ) | |
3578 | + * ``` | |
3579 | + * | |
3580 | + * @return array|null Returns a multidimensional array or `null` if `$key` is invalid. | |
3581 | + */ | |
3582 | +function array_group_by(array $array, $key) | |
3583 | +{ | |
3584 | + if (!is_string($key) && !is_int($key) && !is_float($key) && !is_callable($key) ) { | |
3585 | + //trigger_error('array_group_by(): The key should be a string, an integer, or a callback', E_USER_ERROR); | |
3586 | + return null; | |
3587 | + } | |
3588 | + | |
3589 | + $func = (!is_string($key) && is_callable($key) ? $key : null); | |
3590 | + $_key = $key; | |
3591 | + | |
3592 | + // Load the new array, splitting by the target key | |
3593 | + $grouped = []; | |
3594 | + foreach ($array as $value) { | |
3595 | + $key = null; | |
3596 | + | |
3597 | + if (is_callable($func)) { | |
3598 | + $key = call_user_func($func, $value); | |
3599 | + } elseif (is_object($value) && isset($value->{$_key})) { | |
3600 | + $key = $value->{$_key}; | |
3601 | + } elseif (isset($value[$_key])) { | |
3602 | + $key = $value[$_key]; | |
3603 | + } | |
3604 | + | |
3605 | + if ($key === null) { | |
3606 | + continue; | |
3607 | + } | |
3608 | + | |
3609 | + $grouped[$key][] = $value; | |
3610 | + } | |
3611 | + | |
3612 | + // Recursively build a nested grouping if more parameters are supplied | |
3613 | + // Each grouped array value is grouped according to the next sequential key | |
3614 | + if (func_num_args() > 2) { | |
3615 | + $args = func_get_args(); | |
3616 | + | |
3617 | + foreach ($grouped as $key => $value) { | |
3618 | + $params = array_merge([ $value ], array_slice($args, 2, func_num_args())); | |
3619 | + $grouped[$key] = call_user_func_array('array_group_by', $params); | |
3620 | + } | |
3621 | + } | |
3622 | + | |
3623 | + return $grouped; | |
3624 | +} | |
3559 | 3625 | ?> | ... | ... |
classesphp/metaestat_controle.php
... | ... | @@ -38,6 +38,22 @@ switch (strtoupper($funcao)) { |
38 | 38 | $layers = explode(",", $_pg["layers"]); |
39 | 39 | $map = ms_newMapObj($map_file); |
40 | 40 | break; |
41 | + case "LISTACOMPLETA": | |
42 | + $arq = $dir_tmp."/listaDeVariaveis.json"; | |
43 | + if (file_exists($arq)){ | |
44 | + $dados = unserialize(file_get_contents($arq)); | |
45 | + retornaJSON($dados); | |
46 | + exit; | |
47 | + } | |
48 | + $m = new MetaestatInfo(); | |
49 | + $dados = $m->relatorioCompleto(); | |
50 | + if(empty($_pg["cache"]) || $_pg["cache"] == "false" || $_pg["cache"] == false){ | |
51 | + if (!file_exists($arq)){ | |
52 | + gravaDados([serialize($dados)], $arq); | |
53 | + } | |
54 | + } | |
55 | + retornaJSON($dados); | |
56 | + break; | |
41 | 57 | case "RELATORIOCOMPLETO": |
42 | 58 | $m = new MetaestatInfo(); |
43 | 59 | if (empty($_pg["codigo_variavel"])) { | ... | ... |