Commit 52e778e9ab7330e8eeee80ea0c3fa49c6b5427a9
1 parent
f88065ef
Exists in
master
and in
7 other branches
$1
Showing
1 changed file
with
67 additions
and
10 deletions
Show diff stats
ferramentas/saiku/cartograma.php
| ... | ... | @@ -15,28 +15,85 @@ session_start(); |
| 15 | 15 | //obtem os layers que sao do sistema metaestat, sao regioes e que possuem selecao |
| 16 | 16 | $map_file = $_SESSION["map_file"]; |
| 17 | 17 | $dados = (array) json_decode($_POST["dados"],true); |
| 18 | -echo "<pre>"; | |
| 18 | + | |
| 19 | 19 | $metadados = (array) json_decode($_POST["metadados"],true); |
| 20 | 20 | $nmetadados = count($metadados); |
| 21 | 21 | //pega o id da regiao (busca pelo posfixo geocod) |
| 22 | 22 | $codigo_tipo_regiao = $metadados[0]["identificador"]; |
| 23 | 23 | $codigo_tipo_regiao = explode("].[",$codigo_tipo_regiao); |
| 24 | -$codigo_tipo_regiao = str_replace(array("[","_geocod"),"",$codigo_tipo_regiao[0]); | |
| 24 | +$codigo_tipo_regiao = str_replace(array("codigo_tipo_regiao_","[","_geocod"),"",$codigo_tipo_regiao[0]); | |
| 25 | + | |
| 26 | +if(empty($codigo_tipo_regiao)){ | |
| 27 | + echo "Nao foi possivel determinar o codigo da regiao ou localidade no sistema Metaestat"; | |
| 28 | + exit; | |
| 29 | +} | |
| 30 | +$m = new Metaestat(); | |
| 25 | 31 | |
| 32 | +$meta = $m->listaTipoRegiao($codigo_tipo_regiao); | |
| 33 | +$titulolayer = $meta["nome_tipo_regiao"]; | |
| 34 | +if(empty($titulolayer)){ | |
| 35 | + echo "Nao foi possivel encontrar a regiao ou localidade no sistema Metaestat"; | |
| 36 | + exit; | |
| 37 | +} | |
| 38 | +$titulolayer = mb_convert_encoding($titulolayer,"ISO-8859-1",mb_detect_encoding($titulolayer)); | |
| 39 | +$conexao = $m->listaConexao($meta["codigo_estat_conexao"],true); | |
| 40 | +$conexao = "user=".$conexao["usuario"]." password=".$conexao["senha"]." dbname=".$conexao["bancodedados"]." host=".$conexao["host"]." port=".$conexao["porta"].""; | |
| 41 | +$colunageo = $meta["colunageo"]; | |
| 42 | +$srid = $meta["srid"]; | |
| 43 | +$colunastabela = $m->colunasTabela($meta["codigo_estat_conexao"],$meta["esquemadb"],$meta["tabela"],"geometry","!="); | |
| 44 | + | |
| 45 | + | |
| 46 | +//constroi um sql que retorna os dados na forma de uma tabela inline | |
| 26 | 47 | $nomesColunas = array(); |
| 27 | 48 | $valores = array(); |
| 28 | -for($i=1;$i<$nmetadados;$i++){ | |
| 49 | +for($i=0;$i<$nmetadados;$i++){ | |
| 29 | 50 | $nomesColunas[] = $metadados[$i]["colName"]; |
| 30 | - $valores[$metadados[$i]["colName"]] = array(); | |
| 51 | + //$valores[$metadados[$i]["colName"]] = array(); | |
| 31 | 52 | } |
| 32 | - | |
| 53 | +$nomesColunas[0] = "geocodigo"; | |
| 33 | 54 | $codigosRegioes = array(); |
| 55 | +//select * from (values (1000,2),(5,6)) as teste ("a","b") where | |
| 34 | 56 | |
| 35 | 57 | foreach($dados as $dado){ |
| 36 | - $codigosRegioes[] = $dado[0]; | |
| 37 | - for($i=1;$i<$nmetadados;$i++){ | |
| 38 | - array_push($valores[$metadados[$i]["colName"]],$dado[$i]); | |
| 58 | + //$codigosRegioes[] = $dado[0]; | |
| 59 | + $linha = array(); | |
| 60 | + for($i=0;$i<$nmetadados;$i++){ | |
| 61 | + $linha[] = $dado[$i]; | |
| 39 | 62 | } |
| 63 | + $valores[] = "(".implode(",",$linha).")"; | |
| 40 | 64 | } |
| 41 | -var_dump($valores); | |
| 42 | -?> | |
| 43 | 65 | \ No newline at end of file |
| 66 | +$sqldados = " | |
| 67 | + select st_setsrid(".$colunageo.",".$srid.") as $colunageo, ".implode(",",$colunastabela).",dataset.* | |
| 68 | + from ".$meta["esquemadb"].".".$meta["tabela"]." INNER JOIN | |
| 69 | + (values ".implode(",",$valores).') as dataset ("'.implode('","',$nomesColunas).'") ON geocodigo = '.$meta["identificador"]; | |
| 70 | +$sqlmapa = $colunageo." from ($sqldados) as foo using unique gid using srid=$srid"; | |
| 71 | +$mapa = ms_newMapObj($map_file); | |
| 72 | +$layer = ms_newLayerObj($mapa); | |
| 73 | + | |
| 74 | +$l = array(); | |
| 75 | +$l[] = "LAYER"; | |
| 76 | +$l[] = ' NAME "'.nomeRandomico().'"'; | |
| 77 | +$l[] = " TYPE POLYGON"; | |
| 78 | +$l[] = " DATA '".$sqlmapa."'"; | |
| 79 | +$l[] = ' CONNECTION "'.$conexao.'"'; | |
| 80 | +$l[] = ' CONNECTIONTYPE POSTGIS'; | |
| 81 | +$l[] = ' TEMPLATE "none.htm"'; | |
| 82 | +$l[] = ' STATUS DEFAULT'; | |
| 83 | +$l[] = ' METADATA'; | |
| 84 | +$l[] = ' TEMA "'.$titulolayer.' '.$_POST["tipo"].'"'; | |
| 85 | +$l[] = ' CLASSE "SIM"'; | |
| 86 | +$l[] = ' SAIKU "SIM"'; | |
| 87 | +$l[] = ' TIP "'.$meta["colunanomeregiao"].','.implode(',',$nomesColunas).'"'; | |
| 88 | +$l[] = ' END'; | |
| 89 | +$l[] = ' CLASS'; | |
| 90 | +$l[] = ' NAME ""'; | |
| 91 | +$l[] = ' STYLE'; | |
| 92 | +$l[] = ' OUTLINECOLOR 0 255 0'; | |
| 93 | +$l[] = ' COLOR 0 0 255'; | |
| 94 | +$l[] = ' END'; | |
| 95 | +$l[] = ' END'; | |
| 96 | +$l[] = 'END'; | |
| 97 | +$layer->updateFromString(implode(" ",$l)); | |
| 98 | + | |
| 99 | +$mapa->save($map_file); | |
| 100 | +?> | ... | ... |