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,7 +54,7 @@ class Metaestat{ | ||
| 54 | /** | 54 | /** |
| 55 | * Indica se e necessario converter para UTF strings obtidas do banco de administracao | 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 | * Pasta temporaria utilizada pelo mapserver | 59 | * Pasta temporaria utilizada pelo mapserver |
| 60 | */ | 60 | */ |
| @@ -513,7 +513,7 @@ class Metaestat{ | @@ -513,7 +513,7 @@ class Metaestat{ | ||
| 513 | * @param chegar na regiao | 513 | * @param chegar na regiao |
| 514 | * @return array lista de ids de regioes sequenciais do filho ate chegar ao pai indicado | 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 | //echo $codigo_tipo_regiao." ".$codigo_tipo_regiao_pai; | 517 | //echo $codigo_tipo_regiao." ".$codigo_tipo_regiao_pai; |
| 518 | $pais = $this->listaAgregaRegiao($codigo_tipo_regiao); | 518 | $pais = $this->listaAgregaRegiao($codigo_tipo_regiao); |
| 519 | $caminho = array($codigo_tipo_regiao); | 519 | $caminho = array($codigo_tipo_regiao); |
| @@ -530,11 +530,15 @@ class Metaestat{ | @@ -530,11 +530,15 @@ class Metaestat{ | ||
| 530 | return array("caminho"=>$caminho,"colunas"=>$colunas); | 530 | return array("caminho"=>$caminho,"colunas"=>$colunas); |
| 531 | } | 531 | } |
| 532 | $testaPai = $this->regiaoFilhaAoPai($pai["codigo_tipo_regiao_pai"],$codigo_tipo_regiao_pai); | 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 | if(count($testaPai) == 0){ | 536 | if(count($testaPai) == 0){ |
| 534 | $caminho = array(); | 537 | $caminho = array(); |
| 535 | $colunas = array(); | 538 | $colunas = array(); |
| 536 | } | 539 | } |
| 537 | } | 540 | } |
| 541 | + | ||
| 538 | } | 542 | } |
| 539 | /** | 543 | /** |
| 540 | * Cria um arquivo mapfile para uma medida de variavel | 544 | * Cria um arquivo mapfile para uma medida de variavel |
| @@ -0,0 +1,97 @@ | @@ -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 | \ No newline at end of file | 98 | \ No newline at end of file |
| @@ -0,0 +1,6 @@ | @@ -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 @@ | @@ -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 |