Commit 52e778e9ab7330e8eeee80ea0c3fa49c6b5427a9

Authored by Edmar Moretti
1 parent f88065ef

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