Commit 533a2553c34ff5725fcc8284208bb3f19d630014
1 parent
eb4eaf05
Exists in
master
and in
7 other branches
--no commit message
Showing
4 changed files
with
160 additions
and
2 deletions
Show diff stats
admin/php/classe_metaestat.php
... | ... | @@ -54,7 +54,7 @@ class Metaestat{ |
54 | 54 | /** |
55 | 55 | * Indica se e necessario converter para UTF strings obtidas do banco de administracao |
56 | 56 | */ |
57 | - protected $convUTF; | |
57 | + public $convUTF; | |
58 | 58 | /** |
59 | 59 | * Pasta temporaria utilizada pelo mapserver |
60 | 60 | */ |
... | ... | @@ -513,7 +513,7 @@ class Metaestat{ |
513 | 513 | * @param chegar na regiao |
514 | 514 | * @return array lista de ids de regioes sequenciais do filho ate chegar ao pai indicado |
515 | 515 | */ |
516 | - function regiaoFilhaAoPai($codigo_tipo_regiao,$codigo_tipo_regiao_pai){ | |
516 | + function regiaoFilhaAoPai($codigo_tipo_regiao,$codigo_tipo_regiao_pai=""){ | |
517 | 517 | //echo $codigo_tipo_regiao." ".$codigo_tipo_regiao_pai; |
518 | 518 | $pais = $this->listaAgregaRegiao($codigo_tipo_regiao); |
519 | 519 | $caminho = array($codigo_tipo_regiao); |
... | ... | @@ -530,11 +530,15 @@ class Metaestat{ |
530 | 530 | return array("caminho"=>$caminho,"colunas"=>$colunas); |
531 | 531 | } |
532 | 532 | $testaPai = $this->regiaoFilhaAoPai($pai["codigo_tipo_regiao_pai"],$codigo_tipo_regiao_pai); |
533 | + if(count($testaPai) == 0 && $codigo_tipo_regiao_pai == ""){ | |
534 | + return array("caminho"=>$caminho,"colunas"=>$colunas); | |
535 | + } | |
533 | 536 | if(count($testaPai) == 0){ |
534 | 537 | $caminho = array(); |
535 | 538 | $colunas = array(); |
536 | 539 | } |
537 | 540 | } |
541 | + | |
538 | 542 | } |
539 | 543 | /** |
540 | 544 | * Cria um arquivo mapfile para uma medida de variavel | ... | ... |
... | ... | @@ -0,0 +1,97 @@ |
1 | +<?php | |
2 | +include(dirname(__FILE__)."/../../admin/php/classe_metaestat.php"); | |
3 | +$m = new Metaestat(); | |
4 | + | |
5 | +$regioes = $m->listaTipoRegiao(); | |
6 | +$hierarquia = array(); | |
7 | +//hierarquia de cada regiao | |
8 | +foreach($regioes as $regiao){ | |
9 | + $hregioes = $m->listaHierarquiaRegioes($regiao["codigo_tipo_regiao"]); | |
10 | + $hierarquias[$regiao["codigo_tipo_regiao"]] = $hregioes; | |
11 | +} | |
12 | +echo "<pre>";var_dump($hierarquias);exit; | |
13 | +$xml = "<Schema name='i3Geo Metaestat'>"; | |
14 | +foreach($regioes as $regiao){ | |
15 | + //verifica se a regiao tem hierarquia | |
16 | + if(count($hierarquias[$regiao["codigo_tipo_regiao"]]) == 0){ | |
17 | + $xml .= " | |
18 | + <Dimension name='codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."' caption='".converte($regiao["nome_tipo_regiao"])."'> | |
19 | + <Hierarchy hasAll='true' primaryKey='".$regiao["identificador"]."'> | |
20 | + <Table name='".$regiao["tabela"]."' schema='".$regiao["esquemadb"]."' /> | |
21 | + <Level name='Nome - ".converte($regiao["nome_tipo_regiao"])."' column='".$regiao["colunanomeregiao"]."' uniqueMembers='true'/> | |
22 | + </Hierarchy> | |
23 | + </Dimension> | |
24 | + "; | |
25 | + } | |
26 | + else{ | |
27 | + $caminho = $m->regiaoFilhaAoPai($regiao["codigo_tipo_regiao"]); | |
28 | + //echo "<pre>";var_dump($caminho); | |
29 | + $xml .= " | |
30 | + <Dimension name='codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."' caption='".converte($regiao["nome_tipo_regiao"])."'> | |
31 | + <Hierarchy hasAll='true' primaryKey='".$regiao["identificador"]."'> | |
32 | + "; | |
33 | + //cria uma view juntando as tabelas da hierarquia de regioes | |
34 | + $ri = $regioes[$caminho[0]]; | |
35 | + $sql = "SELECT * FROM {$ri['esquemadb']}.{$ri['tabela']} AS regiao "; | |
36 | + $nc = count($caminho) - 1; | |
37 | + for($i=0;$i<$nc;$i++){ | |
38 | + $r = $regioes[$caminho[$i]]; | |
39 | + $sql .= "INNER JOIN {$r['esquemadb']}.{$r['tabela']} | |
40 | + AS j$i ON j$i.{$r['identificador']}::text = regiao.{$regiao['identificador']}::text | |
41 | + "; | |
42 | + } | |
43 | + $h = $hierarquias[$caminho[0]]; | |
44 | + $h = $h[0]; | |
45 | + $sql .= "INNER JOIN {$regiao['esquemadb']}.{$regiao['tabela']} | |
46 | + AS j ON j.{$regiao['identificador']}::text = regiao.{$h['colunaligacao_regiaopai']}::text | |
47 | + "; | |
48 | + $xml .= " | |
49 | + <view><sql>$sql</sql></view> | |
50 | + "; | |
51 | + //<Level name='Nome - ".converte($regiao["nome_tipo_regiao"])."' column='".$regiao["colunanomeregiao"]."' uniqueMembers='true'/> | |
52 | + $xml .= " | |
53 | + </Hierarchy> | |
54 | + </Dimension> | |
55 | + "; | |
56 | + } | |
57 | +} | |
58 | + | |
59 | +$xml .= " | |
60 | + <Cube name='Vari&aacute;veis'>"; | |
61 | +$medidas = $m->listaMedidaVariavel(); | |
62 | +$tabela = ""; | |
63 | +foreach($medidas as $medida){ | |
64 | + $agregador = "sum"; | |
65 | + if($medida["permitesoma"] == 0 && $medida["permitemedia"] == 1){ | |
66 | + $agregador = "avg"; | |
67 | + } | |
68 | + if($medida["permitesoma"] == 0 && $medida["permitemedia"] == 0){ | |
69 | + $agregador = "count"; | |
70 | + } | |
71 | + if($tabela != $medida["esquemadb"].".".$medida["tabela"]){ | |
72 | + $xml .= " | |
73 | + <Table name='".$medida["tabela"]."' schema='".$medida["esquemadb"]."' /> | |
74 | + <DimensionUsage foreignKey='".$medida["colunaidgeo"]."' name='codigo_tipo_regiao_".$medida["codigo_tipo_regiao"]."' source='codigo_tipo_regiao_".$medida["codigo_tipo_regiao"]."'/> | |
75 | + "; | |
76 | + } | |
77 | + $xml .= " | |
78 | + <Measure name='id_medida_variavel_".$medida["id_medida_variavel"]."' caption='".converte($medida["nomemedida"])."' column='".$medida["colunavalor"]."' aggregator='".$agregador."' /> | |
79 | + "; | |
80 | + | |
81 | + $tabela = $medida["esquemadb"].".".$medida["tabela"]; | |
82 | +} | |
83 | +$xml .= " | |
84 | + </Cube> | |
85 | + </Schema>"; | |
86 | +error_reporting(0); | |
87 | +ob_end_clean(); | |
88 | +echo header("Content-type: application/xml"); | |
89 | +echo $xml; | |
90 | +exit; | |
91 | +function converte($texto) | |
92 | +{ | |
93 | + //$texto = str_replace("Í","&iacute",$texto); | |
94 | +$texto = str_replace("&","&",htmlentities($texto)); | |
95 | + return $texto; | |
96 | +} | |
97 | +?> | |
0 | 98 | \ No newline at end of file | ... | ... |
... | ... | @@ -0,0 +1,6 @@ |
1 | +type=OLAP | |
2 | +name=i3geo | |
3 | +driver=mondrian.olap4j.MondrianOlap4jDriver | |
4 | +location=jdbc:mondrian:Jdbc=jdbc:postgresql://localhost:5432/i3geosaude;Catalog=res:/var/www/i3geo/ferramentas/saiku/esquemaxml.php;JdbcDrivers=org.postgresql.Driver; | |
5 | +username=postgres | |
6 | +password=postgres | ... | ... |
... | ... | @@ -0,0 +1,51 @@ |
1 | +Roteiro para instalação e configuração do SAIKU para uso com o i3Geo. | |
2 | + | |
3 | +Para mais informações veja em: http://docs.analytical-labs.com/ | |
4 | + | |
5 | +- Faça o download do SAIKU Server no endereço: http://meteorite.bi/saiku/download | |
6 | + | |
7 | +- Descompacte os arquivos em uma pasta em seu servidor, podendo ser a mesma pasta onde se encontra a pasta i3geo (no Linux /var/www por exemplo) | |
8 | + | |
9 | +- Edite o arquivo saiku-server/tomcat/conf/server.xml para definir a porta utilizada pelo SAIKU | |
10 | + | |
11 | + Procure por | |
12 | + | |
13 | + <Connector port="9090" protocol="HTTP/1.1" | |
14 | + | |
15 | + e modifique o valor da porta se achar necessário | |
16 | + | |
17 | +- Configure o arquivo de conexão com a fonte de dados | |
18 | + | |
19 | + Copie o arquivo "i3geo" localizado em | |
20 | + | |
21 | + /var/www/i3geo/ferramentas/saiku | |
22 | + | |
23 | + (c:\\ms4w\Apache\htdocs\i3geo\ferramentas\saiku no Windows) | |
24 | + | |
25 | + para a pasta: | |
26 | + | |
27 | + saiku-server/tomcat/webapps/saiku/WEB-INF/classes/saiku-datasources | |
28 | + | |
29 | + Esse arquivo indica qual a fonte de dados que será usada. Altere os valores conforme sua necessidade, por exemplo: | |
30 | + | |
31 | + No lugar de localhost coloque o endereço do banco de dados Postgres | |
32 | + | |
33 | + No lugar de i3geosaude coloque o nome do banco de dados onde estão as tabelas utilizadas pelo i3Geo | |
34 | + | |
35 | + No lugar de http://localhost/i3geo/ferramentas/saiku/esquemaxml.php coloque o endereço (URL) completo do arquivo i3geo/ferramentas/saiku/esquemaxml.php | |
36 | + | |
37 | + No lugar de postgres coloque os nomes de usuário e senha para conexão com o banco de dados | |
38 | + | |
39 | +- Inicialize o servidor para o SAIKU | |
40 | + | |
41 | + Procure na pasta saiku-server o programa start-saiku.bat (para Windows) ou start-saiku.sh para Linux. | |
42 | + | |
43 | + Execute esse programa. No caso do linux, digite no terminal: | |
44 | + | |
45 | + ./start-saiku.sh | |
46 | + | |
47 | + Abra o navegador e digite: | |
48 | + | |
49 | + http://localhost:9090/ | |
50 | + | |
51 | + Se tudo estiver ok, deve aparecer ua tela de login. Utilize admin como usuário e admin como senha | ... | ... |