diff --git a/ferramentas/saiku/cartograma.php b/ferramentas/saiku/cartograma.php index 7f12016..d9e67c7 100644 --- a/ferramentas/saiku/cartograma.php +++ b/ferramentas/saiku/cartograma.php @@ -15,28 +15,85 @@ session_start(); //obtem os layers que sao do sistema metaestat, sao regioes e que possuem selecao $map_file = $_SESSION["map_file"]; $dados = (array) json_decode($_POST["dados"],true); -echo "
"; + $metadados = (array) json_decode($_POST["metadados"],true); $nmetadados = count($metadados); //pega o id da regiao (busca pelo posfixo geocod) $codigo_tipo_regiao = $metadados[0]["identificador"]; $codigo_tipo_regiao = explode("].[",$codigo_tipo_regiao); -$codigo_tipo_regiao = str_replace(array("[","_geocod"),"",$codigo_tipo_regiao[0]); +$codigo_tipo_regiao = str_replace(array("codigo_tipo_regiao_","[","_geocod"),"",$codigo_tipo_regiao[0]); + +if(empty($codigo_tipo_regiao)){ + echo "Nao foi possivel determinar o codigo da regiao ou localidade no sistema Metaestat"; + exit; +} +$m = new Metaestat(); +$meta = $m->listaTipoRegiao($codigo_tipo_regiao); +$titulolayer = $meta["nome_tipo_regiao"]; +if(empty($titulolayer)){ + echo "Nao foi possivel encontrar a regiao ou localidade no sistema Metaestat"; + exit; +} +$titulolayer = mb_convert_encoding($titulolayer,"ISO-8859-1",mb_detect_encoding($titulolayer)); +$conexao = $m->listaConexao($meta["codigo_estat_conexao"],true); +$conexao = "user=".$conexao["usuario"]." password=".$conexao["senha"]." dbname=".$conexao["bancodedados"]." host=".$conexao["host"]." port=".$conexao["porta"].""; +$colunageo = $meta["colunageo"]; +$srid = $meta["srid"]; +$colunastabela = $m->colunasTabela($meta["codigo_estat_conexao"],$meta["esquemadb"],$meta["tabela"],"geometry","!="); + + +//constroi um sql que retorna os dados na forma de uma tabela inline $nomesColunas = array(); $valores = array(); -for($i=1;$i<$nmetadados;$i++){ +for($i=0;$i<$nmetadados;$i++){ $nomesColunas[] = $metadados[$i]["colName"]; - $valores[$metadados[$i]["colName"]] = array(); + //$valores[$metadados[$i]["colName"]] = array(); } - +$nomesColunas[0] = "geocodigo"; $codigosRegioes = array(); +//select * from (values (1000,2),(5,6)) as teste ("a","b") where foreach($dados as $dado){ - $codigosRegioes[] = $dado[0]; - for($i=1;$i<$nmetadados;$i++){ - array_push($valores[$metadados[$i]["colName"]],$dado[$i]); + //$codigosRegioes[] = $dado[0]; + $linha = array(); + for($i=0;$i<$nmetadados;$i++){ + $linha[] = $dado[$i]; } + $valores[] = "(".implode(",",$linha).")"; } -var_dump($valores); -?> \ No newline at end of file +$sqldados = " + select st_setsrid(".$colunageo.",".$srid.") as $colunageo, ".implode(",",$colunastabela).",dataset.* + from ".$meta["esquemadb"].".".$meta["tabela"]." INNER JOIN + (values ".implode(",",$valores).') as dataset ("'.implode('","',$nomesColunas).'") ON geocodigo = '.$meta["identificador"]; +$sqlmapa = $colunageo." from ($sqldados) as foo using unique gid using srid=$srid"; +$mapa = ms_newMapObj($map_file); +$layer = ms_newLayerObj($mapa); + +$l = array(); +$l[] = "LAYER"; +$l[] = ' NAME "'.nomeRandomico().'"'; +$l[] = " TYPE POLYGON"; +$l[] = " DATA '".$sqlmapa."'"; +$l[] = ' CONNECTION "'.$conexao.'"'; +$l[] = ' CONNECTIONTYPE POSTGIS'; +$l[] = ' TEMPLATE "none.htm"'; +$l[] = ' STATUS DEFAULT'; +$l[] = ' METADATA'; +$l[] = ' TEMA "'.$titulolayer.' '.$_POST["tipo"].'"'; +$l[] = ' CLASSE "SIM"'; +$l[] = ' SAIKU "SIM"'; +$l[] = ' TIP "'.$meta["colunanomeregiao"].','.implode(',',$nomesColunas).'"'; +$l[] = ' END'; +$l[] = ' CLASS'; +$l[] = ' NAME ""'; +$l[] = ' STYLE'; +$l[] = ' OUTLINECOLOR 0 255 0'; +$l[] = ' COLOR 0 0 255'; +$l[] = ' END'; +$l[] = ' END'; +$l[] = 'END'; +$layer->updateFromString(implode(" ",$l)); + +$mapa->save($map_file); +?> -- libgit2 0.21.2