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 | +?> | ... | ... |