$selecaoRegiao = $s["selecaoRegiao"]; $codigo_tipo_regiao = $s["codigo_tipo_regiao"]; } else { $codigo_tipo_regiao = $_GET["regiao"]; } //verifica se o cubo usa uma regiao especifica ou todas if ($codigo_tipo_regiao == "") { $regioes = $m->listaTipoRegiao(); } else { $regioes = array($m->listaTipoRegiao($codigo_tipo_regiao)); } $s = ""; if (empty($saikuConfigDataSource['tabelaDimensaoTempo'])) { $saikuConfigDataSource['tabelaDimensaoTempo'] = "i3geo_metaestat.dim_tempo"; } $medidas = $m->listaMedidaVariavel(); // //formata o array de regioes colocando na chave o codigo da regiao // $chavesRegiao = array(); $todasAsRegioes = $m->listaTipoRegiao(); foreach ($todasAsRegioes as $R) { $chavesRegiao[$R["codigo_tipo_regiao"]] = $R; } //inicia montagem do XML // //cria as dimensoes de tipo temporal // $xmlTempo = dimensoesTemporais(); // //dimensoes geograficas
if ($regiao != "") { $dados = $m->listaAtributosMedidaVariavelRegiao($identificador_regiao, $id_medida_variavel); $resultado = array("atributos" => $dados, "regiao" => $regiao); } retornaJSON($resultado); exit; break; case "LISTATODOSATRIBUTOSMEDIDAVARIAVELXY": $lista = array(); $m = new Metaestat(); $regiao = $m->xy2regiao($codigo_tipo_regiao, $_GET["x"], $_GET["y"]); $identificador_regiao = $regiao["identificador_regiao"]; $variaveis = $m->listaVariavel(); $dadosVariavel = array(); foreach ($variaveis as $variavel) { $medidas = $m->listaMedidaVariavel($variavel["codigo_variavel"]); $valores = array(); foreach ($medidas as $medida) { $dadosMedida = $m->listaAtributosMedidaVariavelRegiao($identificador_regiao, $medida["id_medida_variavel"]); if ($dadosMedida != "") { $valores[] = array("medida" => $medida["nomemedida"], "dados" => $dadosMedida); } } if (!empty($valores)) { $dadosVariavel[] = array("variavel" => $variavel["nome"], "dados" => $valores); } } retornaJSON($dadosVariavel); exit; break; case "SALVAATRIBUTOSMEDIDAVARIAVEL":
/** * Cria um novo layer no mapa atual fazendo a juncao dos SQLs para obter em uma mesma tabela todas as colunas das medidas de variavies * * @param string com a lista de nomes de layers separados por virgula * @return Nome do layer criado * */ function juntaMedidasVariaveis($map_file, $layerNames, $nome, $colunascalc, $formulas) { //o sql que faz acesso aos dados e marcado com /*SE*//*SE*/ $mapa = ms_newMapObj($map_file); $layernames = explode(",", $layerNames); $sqlLayers = array(); $conta = 0; $m = new Metaestat(); $colunasValor = array(); $colunasIdentificador = array(); $sqls = array(); $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; // $id_medida_variavel = $l->getmetadata("METAESTAT_ID_MEDIDA_VARIAVEL"); $nomesLayers[] = $l->getmetadata("tema"); $medidavariavel = $m->listaMedidaVariavel("", $id_medida_variavel); //pega o nome da coluna que contem os valores e a coluna de ligacao $colunasValor[] = $medidavariavel["colunavalor"]; $colunasIdentificador[] = $medidavariavel["colunaidgeo"]; //pega valores do primeiro layer para a tabela0 if ($conta == 0) { $codigo_tipo_regiao = $l->getmetadata("METAESTAT_CODIGO_TIPO_REGIAO"); } $conta++; } //coluna com a geometria $regiao = $m->listaTipoRegiao($codigo_tipo_regiao); $gid = $regiao["identificador"]; $n = count($sqls); $cwhere = array(); //$colunasWhere = array(); for ($i = 1; $i < $n; $i++) { $cwhere[] = "tabela0." . $gid . "::text = " . "tabela" . $i . "." . $gid . "::text"; //$colunasWhere[] = } $colunasDados = array(); $itens = array($gid, "regiao"); $itensdesc = array("id", "Regiao"); $tabelaColuna = array(); for ($i = 0; $i < $n; $i++) { $colunasDados[] = "tabela" . $i . "." . $colunasValor[$i] . " as valortema" . $i; $tabelaColuna["valortema" . $i] = "tabela" . $i . "." . $colunasValor[$i]; $itens[] = "valortema" . $i; $itensdesc[] = $nomesLayers[$i]; } //pega as colunas e as formulas adicionais $complemento = ""; if ($colunascalc != "" && $formulas != "") { $colunascalc = explode(",", $colunascalc); $formulas = explode(",", $formulas); $nformulas = count($formulas); $complemento = array(); for ($i = 0; $i < $nformulas; $i++) { $complemento[] = "(" . $formulas[$i] . ") as " . $colunascalc[$i]; } $complemento = implode(",", $complemento); //substitui pelo nome correto das colunas foreach (array_keys($tabelaColuna) as $k) { $complemento = str_replace($k, $tabelaColuna[$k], $complemento); } if ($complemento != "") { $complemento .= ","; $itens = array_merge($itens, $colunascalc); $itensdesc = array_merge($itensdesc, $colunascalc); $complemento = str_ireplace("select", "", $complemento); $complemento = str_ireplace("update", "", $complemento); $complemento = str_ireplace("delete", "", $complemento); } } //echo $complemento;exit; $sqlfinal = "SELECT {$complemento} tabela0." . $gid . ",tabela0." . $regiao["colunanomeregiao"] . " as regiao,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 = "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); $s = $c->getstyle(0); $sc = $s->outlinecolor; $sc->setrgb(130, 130, 130); $c->set("name", " "); $c->setexpression(""); $nlayer->set("status", MS_DEFAULT); $mapa->save($map_file); return $nlayer->name; }
function retornaI2($listatemas, $resultados, $map) { $final = array(); foreach ($listatemas as $tema) { //para dados que sao oriundos do METAESTAT $editavel = ""; $colunaidunico = ""; $id_medida_variavel = ""; // $layer = $map->getlayerbyname($tema); $nometmp = $tema; if (strtoupper($layer->getMetaData("TEMA")) != "NAO") { $nometmp = $layer->getMetaData("TEMA"); } else { if ($layer->getMetaData("ALTTEMA") != "") { $nometmp = $layer->getMetaData("ALTTEMA"); } } $nometmp = $this->converte($nometmp); //identificador que marca o tipo de dados que podem ser salvos $tiposalva = ""; //verifica se e editavel if ($layer->getmetadata("EDITAVEL") == "SIM") { //verifica login session_write_close(); session_name("i3GeoLogin"); if (!empty($_COOKIE["i3geocodigologin"])) { session_id($_COOKIE["i3geocodigologin"]); session_start(); //verifica usuario if ($_SESSION["usuario"] == $_COOKIE["i3geousuariologin"]) { //verifica se e administrador foreach ($_SESSION["papeis"] as $p) { if ($p == 1) { $editavel = "sim"; } } //verifica operacao if (!empty($_SESSION["operacoes"]["admin/metaestat/geral"])) { $editavel = "sim"; } if ($editavel == "sim") { $editavel = "nao"; $id_medida_variavel = $layer->getMetaData("METAESTAT_ID_MEDIDA_VARIAVEL"); $colunaidunico = $layer->getMetaData("COLUNAIDUNICO"); if ($id_medida_variavel != "") { include_once dirname(__FILE__) . "/../admin/php/classe_metaestat.php"; $m = new Metaestat(); $medidaVariavel = $m->listaMedidaVariavel("", $id_medida_variavel); $editavel = $medidaVariavel["colunavalor"]; $tiposalva = "medida_variavel"; } if ($codigo_tipo_regiao != "") { include_once dirname(__FILE__) . "/../admin/php/classe_metaestat.php"; $m = new Metaestat(); $regiao = $m->listaTipoRegiao($codigo_tipo_regiao); //todas as colunas podem ser alteradas $editavel = "todos"; $tiposalva = "regiao"; } //verifica se os parametros de edicao estao disponiveis, pois podem ter sido definidos pelo sistema de administracao if ($layer->getMetaData("ESQUEMATABELAEDITAVEL") != "" && $layer->getMetaData("TABELAEDITAVEL") != "" && $layer->getMetaData("COLUNAIDUNICO") != "") { $editavel = "todos"; $tiposalva = "regiao"; } } } } } $codigo_tipo_regiao = $layer->getMetaData("METAESTAT_CODIGO_TIPO_REGIAO"); $final[] = array("tema" => $tema, "tiposalva" => $tiposalva, "nome" => $nometmp, "resultado" => $resultados[$tema], "editavel" => $editavel, "colunaidunico" => $colunaidunico, "id_medida_variavel" => $id_medida_variavel, "codigo_tipo_regiao" => $codigo_tipo_regiao); } return $final; }