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