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,28 +15,85 @@ session_start(); | ||
15 | //obtem os layers que sao do sistema metaestat, sao regioes e que possuem selecao | 15 | //obtem os layers que sao do sistema metaestat, sao regioes e que possuem selecao |
16 | $map_file = $_SESSION["map_file"]; | 16 | $map_file = $_SESSION["map_file"]; |
17 | $dados = (array) json_decode($_POST["dados"],true); | 17 | $dados = (array) json_decode($_POST["dados"],true); |
18 | -echo "<pre>"; | 18 | + |
19 | $metadados = (array) json_decode($_POST["metadados"],true); | 19 | $metadados = (array) json_decode($_POST["metadados"],true); |
20 | $nmetadados = count($metadados); | 20 | $nmetadados = count($metadados); |
21 | //pega o id da regiao (busca pelo posfixo geocod) | 21 | //pega o id da regiao (busca pelo posfixo geocod) |
22 | $codigo_tipo_regiao = $metadados[0]["identificador"]; | 22 | $codigo_tipo_regiao = $metadados[0]["identificador"]; |
23 | $codigo_tipo_regiao = explode("].[",$codigo_tipo_regiao); | 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 | $nomesColunas = array(); | 47 | $nomesColunas = array(); |
27 | $valores = array(); | 48 | $valores = array(); |
28 | -for($i=1;$i<$nmetadados;$i++){ | 49 | +for($i=0;$i<$nmetadados;$i++){ |
29 | $nomesColunas[] = $metadados[$i]["colName"]; | 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 | $codigosRegioes = array(); | 54 | $codigosRegioes = array(); |
55 | +//select * from (values (1000,2),(5,6)) as teste ("a","b") where | ||
34 | 56 | ||
35 | foreach($dados as $dado){ | 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 | \ No newline at end of file | 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 | +?> |