Commit bb13277c13e7aadd46ba4e880d7d75a2abf73302
1 parent
ea5d9965
Exists in
master
and in
7 other branches
Inclusão do link para o curso de i3Geo na página inicial
Ajustes na geração do xml esquema para SAIKU
Showing
3 changed files
with
588 additions
and
518 deletions
Show diff stats
ferramentas/saiku/esquemaxml.php
| 1 | <?php | 1 | <?php |
| 2 | -//utilize output=xml para debug | 2 | +// |
| 3 | +//utilize &output=xml para ver o xml | ||
| 4 | +// | ||
| 5 | +//utilize &xmlesquema= caso o XML ja exista | ||
| 6 | +// | ||
| 7 | +//http://localhost/i3geo/ferramentas/saiku/esquemaxml.php?output=&xmlesquema=http://localhost/testemondrian.xml | ||
| 8 | +// | ||
| 3 | //quando o saiku e iniciado de fora do i3geo, e necessario inicializar um mapfile para uso como base dos mapas | 9 | //quando o saiku e iniciado de fora do i3geo, e necessario inicializar um mapfile para uso como base dos mapas |
| 4 | if(empty($_GET["g_sid"])){ | 10 | if(empty($_GET["g_sid"])){ |
| 5 | include(dirname(__FILE__)."/../../ms_criamapa.php"); | 11 | include(dirname(__FILE__)."/../../ms_criamapa.php"); |
| 6 | //reinicia a url | 12 | //reinicia a url |
| 7 | - $urln = "?g_sid=".session_id()."&locaplic=".$_GET["locaplic"]."&mapext=".$mapext."&origem=".$_GET["origem"]."&output=".$_GET["output"]; | 13 | + $urln = "?g_sid=".session_id()."&locaplic=".$_GET["locaplic"]."&mapext=".$mapext."&origem=".$_GET["origem"]."&output=".$_GET["output"]."&xmlesquema=".$_GET["xmlesquema"]; |
| 8 | header("Location:".$urln); | 14 | header("Location:".$urln); |
| 9 | exit; | 15 | exit; |
| 10 | } | 16 | } |
| @@ -22,11 +28,16 @@ session_name("i3GeoPHP"); | @@ -22,11 +28,16 @@ session_name("i3GeoPHP"); | ||
| 22 | session_id($_GET["g_sid"]); | 28 | session_id($_GET["g_sid"]); |
| 23 | session_start(); | 29 | session_start(); |
| 24 | $map_file = $_SESSION["map_file"]; | 30 | $map_file = $_SESSION["map_file"]; |
| 25 | -$urlXmlEsquema = $_SESSION["tmpurl"].basename(dirname($map_file))."/".$nomeConexao.".xml"; | 31 | +if(empty($_GET["xmlesquema"])){ |
| 32 | + $urlXmlEsquema = $_SESSION["tmpurl"].basename(dirname($map_file))."/".$nomeConexao.".xml"; | ||
| 33 | +} | ||
| 34 | +else{ | ||
| 35 | + $urlXmlEsquema = $_GET["xmlesquema"]; | ||
| 36 | +} | ||
| 26 | $arquivoXmlEsquema = dirname($map_file)."/".$nomeConexao.".xml"; | 37 | $arquivoXmlEsquema = dirname($map_file)."/".$nomeConexao.".xml"; |
| 27 | 38 | ||
| 28 | /* | 39 | /* |
| 29 | -$saikuConfigDataSource vem do ms_configura.php | 40 | + $saikuConfigDataSource vem do ms_configura.php |
| 30 | 41 | ||
| 31 | Exemplo de arquivo de fonte: | 42 | Exemplo de arquivo de fonte: |
| 32 | type=OLAP | 43 | type=OLAP |
| @@ -39,15 +50,15 @@ password=postgres | @@ -39,15 +50,15 @@ password=postgres | ||
| 39 | Array com os parametros definidos em ms_configura: | 50 | Array com os parametros definidos em ms_configura: |
| 40 | 51 | ||
| 41 | $saikuConfigDataSource = array( | 52 | $saikuConfigDataSource = array( |
| 42 | - "type"=>"OLAP", | ||
| 43 | - "driver"=>"mondrian.olap4j.MondrianOlap4jDriver", | ||
| 44 | - "location"=>"jdbc:mondrian:Jdbc=jdbc:postgresql", | ||
| 45 | - "serverdb"=>"localhost", | ||
| 46 | - "port"=>"5432", | ||
| 47 | - "database"=>"i3geosaude", | ||
| 48 | - "JdbcDrivers"=>"org.postgresql.Driver", | ||
| 49 | - "username"=>"postgres", | ||
| 50 | - "password"=>"postgres" | 53 | + "type"=>"OLAP", |
| 54 | + "driver"=>"mondrian.olap4j.MondrianOlap4jDriver", | ||
| 55 | + "location"=>"jdbc:mondrian:Jdbc=jdbc:postgresql", | ||
| 56 | + "serverdb"=>"localhost", | ||
| 57 | + "port"=>"5432", | ||
| 58 | + "database"=>"i3geosaude", | ||
| 59 | + "JdbcDrivers"=>"org.postgresql.Driver", | ||
| 60 | + "username"=>"postgres", | ||
| 61 | + "password"=>"postgres" | ||
| 51 | ); | 62 | ); |
| 52 | */ | 63 | */ |
| 53 | $stringDatasource = " | 64 | $stringDatasource = " |
| @@ -60,395 +71,415 @@ password={$saikuConfigDataSource["password"]} | @@ -60,395 +71,415 @@ password={$saikuConfigDataSource["password"]} | ||
| 60 | "; | 71 | "; |
| 61 | //salva o arquivo com a fonte | 72 | //salva o arquivo com a fonte |
| 62 | gravaDados(array($stringDatasource),$nomeDatasource); | 73 | gravaDados(array($stringDatasource),$nomeDatasource); |
| 63 | -$m = new Metaestat(); | ||
| 64 | -$selecaoRegiao = array(); | ||
| 65 | -//obtem do mapfile em uso os layers que sao do sistema metaestat, sao regioes e que possuem selecao | ||
| 66 | -$codigo_tipo_regiao = ""; | ||
| 67 | -if($map_file != ""){ | ||
| 68 | - $mapa = ms_newMapObj($map_file); | ||
| 69 | - $c = $mapa->numlayers; | ||
| 70 | - for ($i=0;$i < $c;++$i){ | ||
| 71 | - $l = $mapa->getlayer($i); | ||
| 72 | - //verifica o alias na conexao | ||
| 73 | - if (!empty($postgis_mapa)){ | ||
| 74 | - if ($l->connectiontype == MS_POSTGIS){ | ||
| 75 | - $lcon = $l->connection; | ||
| 76 | - if (($lcon == " ") || ($lcon == "") || (in_array($lcon,array_keys($postgis_mapa)))){ | ||
| 77 | - if(($lcon == " ") || ($lcon == "")) //para efeitos de compatibilidade | ||
| 78 | - {$l->set("connection",$postgis_mapa);} | ||
| 79 | - else{ | ||
| 80 | - $l->set("connection",$postgis_mapa[$lcon]); | 74 | + |
| 75 | +if(empty($_GET["xmlesquema"])){ | ||
| 76 | + $m = new Metaestat(); | ||
| 77 | + | ||
| 78 | + // | ||
| 79 | + //obtem do mapfile em uso os layers que sao do sistema metaestat, sao regioes e que possuem selecao | ||
| 80 | + // | ||
| 81 | + $selecaoRegiao = array(); | ||
| 82 | + $codigo_tipo_regiao = ""; | ||
| 83 | + if($map_file != ""){ | ||
| 84 | + $mapa = ms_newMapObj($map_file); | ||
| 85 | + $c = $mapa->numlayers; | ||
| 86 | + for ($i=0;$i < $c;++$i){ | ||
| 87 | + $l = $mapa->getlayer($i); | ||
| 88 | + //verifica o alias na conexao | ||
| 89 | + if (!empty($postgis_mapa)){ | ||
| 90 | + if ($l->connectiontype == MS_POSTGIS){ | ||
| 91 | + $lcon = $l->connection; | ||
| 92 | + if (($lcon == " ") || ($lcon == "") || (in_array($lcon,array_keys($postgis_mapa)))){ | ||
| 93 | + if(($lcon == " ") || ($lcon == "")) //para efeitos de compatibilidade | ||
| 94 | + {$l->set("connection",$postgis_mapa); | ||
| 95 | + } | ||
| 96 | + else{ | ||
| 97 | + $l->set("connection",$postgis_mapa[$lcon]); | ||
| 98 | + } | ||
| 81 | } | 99 | } |
| 82 | } | 100 | } |
| 83 | } | 101 | } |
| 84 | - } | ||
| 85 | - // | ||
| 86 | - $registros = array(); | ||
| 87 | - if($l->status == MS_DEFAULT && $l->getmetadata("METAESTAT_CODIGO_TIPO_REGIAO") != ""){ | ||
| 88 | - //verifica se tem selecao | ||
| 89 | - $qyfile = dirname($map_file)."/".$l->name.".php"; | ||
| 90 | - if(file_exists($qyfile)){ | ||
| 91 | - $codigo_tipo_regiao = $l->getmetadata("METAESTAT_CODIGO_TIPO_REGIAO"); | ||
| 92 | - //pega os registros | ||
| 93 | - $shapes = retornaShapesSelecionados($l,$map_file,$mapa); | ||
| 94 | - //pega o nome da coluna que identifica cada registro | ||
| 95 | - $regiao = $m->listaTipoRegiao($codigo_tipo_regiao); | ||
| 96 | - $item = $regiao["identificador"]; | ||
| 97 | - foreach($shapes as $shape){ | ||
| 98 | - $registros[] = $shape->values[$item]; | 102 | + // |
| 103 | + $registros = array(); | ||
| 104 | + if($l->status == MS_DEFAULT && $l->getmetadata("METAESTAT_CODIGO_TIPO_REGIAO") != ""){ | ||
| 105 | + //verifica se tem selecao | ||
| 106 | + $qyfile = dirname($map_file)."/".$l->name.".php"; | ||
| 107 | + if(file_exists($qyfile)){ | ||
| 108 | + $codigo_tipo_regiao = $l->getmetadata("METAESTAT_CODIGO_TIPO_REGIAO"); | ||
| 109 | + //pega os registros | ||
| 110 | + $shapes = retornaShapesSelecionados($l,$map_file,$mapa); | ||
| 111 | + //pega o nome da coluna que identifica cada registro | ||
| 112 | + $regiao = $m->listaTipoRegiao($codigo_tipo_regiao); | ||
| 113 | + $item = $regiao["identificador"]; | ||
| 114 | + foreach($shapes as $shape){ | ||
| 115 | + $registros[] = $shape->values[$item]; | ||
| 116 | + } | ||
| 117 | + $reg = $item." IN ('".implode("','",$registros)."') "; | ||
| 118 | + $selecaoRegiao[$codigo_tipo_regiao] = array( | ||
| 119 | + "item" => $item, | ||
| 120 | + "sql" => $reg | ||
| 121 | + ); | ||
| 122 | + break; //mantem a primeira ocorrencia de regiao que possui selecao | ||
| 123 | + } | ||
| 124 | + else{ | ||
| 125 | + $selecaoRegiao[$codigo_tipo_regiao] = ""; | ||
| 99 | } | 126 | } |
| 100 | - $reg = $item." IN ('".implode("','",$registros)."') "; | ||
| 101 | - $selecaoRegiao[$codigo_tipo_regiao] = array( | ||
| 102 | - "item" => $item, | ||
| 103 | - "sql" => $reg | ||
| 104 | - ); | ||
| 105 | - break; //mantem a primeira ocorrencia de regiao que possui selecao | ||
| 106 | - } | ||
| 107 | - else{ | ||
| 108 | - $selecaoRegiao[$codigo_tipo_regiao] = ""; | ||
| 109 | } | 127 | } |
| 110 | } | 128 | } |
| 111 | } | 129 | } |
| 112 | -} | ||
| 113 | -if($codigo_tipo_regiao == ""){ | ||
| 114 | - $regioes = $m->listaTipoRegiao(); | ||
| 115 | -} | ||
| 116 | -else{ | ||
| 117 | - $regioes = array($m->listaTipoRegiao($codigo_tipo_regiao)); | ||
| 118 | -} | ||
| 119 | -//echo "<pre>";var_dump($regioes);exit; | ||
| 120 | -$regiao = ""; | ||
| 121 | -$item = ""; | ||
| 122 | -$registros = ""; | ||
| 123 | -//echo "<pre>";var_dump($regioes);exit; | ||
| 124 | - | ||
| 125 | -$xml = "<Schema name='i3Geo Metaestat'>"; | ||
| 126 | -//cria as dimensoes de tipo temporal | ||
| 127 | -if(empty($saikuConfigDataSource['tabelaDimensaoTempo'])){ | ||
| 128 | - $saikuConfigDataSource['tabelaDimensaoTempo'] = "i3geo_metaestat.dim_tempo"; | ||
| 129 | -} | ||
| 130 | -$sqlAno = "select nu_ano from ".$saikuConfigDataSource['tabelaDimensaoTempo']." group by nu_ano order by nu_ano"; | ||
| 131 | -$sqlMes = "select nu_ano::text,nu_mes::text,ds_mes_abreviado as mes,COALESCE (nu_ano::text||'-'||nu_mes::text,nu_ano::text) as nu_anomes from ".$saikuConfigDataSource['tabelaDimensaoTempo']." group by nu_ano,nu_mes,mes,nu_anomes order by nu_ano,nu_mes"; | ||
| 132 | -//dimensoes temporais | ||
| 133 | -$xml .= " | 130 | + if($codigo_tipo_regiao == ""){ |
| 131 | + $regioes = $m->listaTipoRegiao(); | ||
| 132 | + } | ||
| 133 | + else{ | ||
| 134 | + $regioes = array($m->listaTipoRegiao($codigo_tipo_regiao)); | ||
| 135 | + } | ||
| 136 | + //echo "<pre>";var_dump($regioes);exit; | ||
| 137 | + $regiao = ""; | ||
| 138 | + $item = ""; | ||
| 139 | + $registros = ""; | ||
| 140 | + //echo "<pre>";var_dump($regioes);exit; | ||
| 141 | + | ||
| 142 | + $xml = "<Schema name='i3Geo Metaestat'>"; | ||
| 143 | + //cria as dimensoes de tipo temporal | ||
| 144 | + if(empty($saikuConfigDataSource['tabelaDimensaoTempo'])){ | ||
| 145 | + $saikuConfigDataSource['tabelaDimensaoTempo'] = "i3geo_metaestat.dim_tempo"; | ||
| 146 | + } | ||
| 147 | + $sqlAno = "select nu_ano from ".$saikuConfigDataSource['tabelaDimensaoTempo']." group by nu_ano order by nu_ano"; | ||
| 148 | + $sqlMes = "select nu_ano::text,nu_mes::text,ds_mes_abreviado as mes,COALESCE (nu_ano::text||'-'||nu_mes::text,nu_ano::text) as nu_anomes from ".$saikuConfigDataSource['tabelaDimensaoTempo']." group by nu_ano,nu_mes,mes,nu_anomes order by nu_ano,nu_mes"; | ||
| 149 | + //dimensoes temporais | ||
| 150 | + $xml .= " | ||
| 134 | <Dimension name='Anual' type='TimeDimension' caption='Tempo: Anual'> | 151 | <Dimension name='Anual' type='TimeDimension' caption='Tempo: Anual'> |
| 135 | - <Hierarchy hasAll='true' primaryKey='nu_ano'> | ||
| 136 | - <view alias='tempo_ano' ><SQL dialect='generic' >$sqlAno</SQL></view> | ||
| 137 | - <Level name='Ano' column='nu_ano' type='Numeric' uniqueMembers='true' levelType='TimeYears'/> | ||
| 138 | - </Hierarchy> | 152 | + <Hierarchy hasAll='true' primaryKey='nu_ano'> |
| 153 | + <view alias='tempo_ano' ><SQL dialect='generic' >$sqlAno</SQL></view> | ||
| 154 | + <Level name='Ano' column='nu_ano' type='Numeric' uniqueMembers='true' levelType='TimeYears'/> | ||
| 155 | + </Hierarchy> | ||
| 139 | </Dimension> | 156 | </Dimension> |
| 140 | <Dimension name='Mensal' type='TimeDimension' caption='Tempo: Mensal'> | 157 | <Dimension name='Mensal' type='TimeDimension' caption='Tempo: Mensal'> |
| 141 | - <Hierarchy hasAll='true' primaryKey='nu_anomes'> | ||
| 142 | - <view alias='tempo_ano' ><SQL dialect='generic' >$sqlMes</SQL></view> | ||
| 143 | - <Level name='Ano' column='nu_ano' type='Numeric' uniqueMembers='true' levelType='TimeYears'/> | ||
| 144 | - <Level nameColumn='mes' name='Mes' column='nu_mes' type='Numeric' uniqueMembers='false' levelType='TimeMonths'/> | ||
| 145 | - </Hierarchy> | 158 | + <Hierarchy hasAll='true' primaryKey='nu_anomes'> |
| 159 | + <view alias='tempo_ano' ><SQL dialect='generic' >$sqlMes</SQL></view> | ||
| 160 | + <Level name='Ano' column='nu_ano' type='Numeric' uniqueMembers='true' levelType='TimeYears'/> | ||
| 161 | + <Level nameColumn='mes' name='Mes' column='nu_mes' type='Numeric' uniqueMembers='false' levelType='TimeMonths'/> | ||
| 162 | + </Hierarchy> | ||
| 146 | </Dimension> | 163 | </Dimension> |
| 147 | <Dimension name='Tempo' type='TimeDimension' caption='Tempo'> | 164 | <Dimension name='Tempo' type='TimeDimension' caption='Tempo'> |
| 148 | - <Hierarchy hasAll='true' primaryKey='nu_anomes'> | ||
| 149 | - <view alias='tempo' ><SQL dialect='generic' >$sqlMes</SQL></view> | ||
| 150 | - <Level name='Ano' column='nu_ano' type='String' uniqueMembers='true' levelType='TimeYears'/> | ||
| 151 | - <Level nameColumn='mes' name='Mes' column='nu_mes' type='String' uniqueMembers='false' levelType='TimeMonths'/> | ||
| 152 | - </Hierarchy> | 165 | + <Hierarchy hasAll='true' primaryKey='nu_anomes'> |
| 166 | + <view alias='tempo' ><SQL dialect='generic' >$sqlMes</SQL></view> | ||
| 167 | + <Level name='Ano' column='nu_ano' type='String' uniqueMembers='true' levelType='TimeYears'/> | ||
| 168 | + <Level nameColumn='mes' name='Mes' column='nu_mes' type='String' uniqueMembers='false' levelType='TimeMonths'/> | ||
| 169 | + </Hierarchy> | ||
| 153 | </Dimension> | 170 | </Dimension> |
| 154 | -"; | ||
| 155 | -//dimensoes geograficas | ||
| 156 | -//as dimensoes sao duplicadas | ||
| 157 | -//uma delas contem o geocodigo que permite a geracao do mapa | ||
| 158 | - | ||
| 159 | -//guarda as regioes filhas de uma determinada regiao (chave) | ||
| 160 | -$filhosDaRegiao = array(); | ||
| 161 | -$VirtualCubeDimensionDaRegiao = array(); | ||
| 162 | -$VirtualCubeMeasureDaRegiao = array(); | ||
| 163 | -foreach($regioes as $regiao){ | ||
| 164 | - $filhosDaRegiao[$regiao["codigo_tipo_regiao"]] = array(); | ||
| 165 | - $VirtualCubeDimensionDaRegiao[$regiao["codigo_tipo_regiao"]] = array(); | ||
| 166 | - $VirtualCubeMeasureDaRegiao[$regiao["codigo_tipo_regiao"]] = array(); | ||
| 167 | -} | ||
| 168 | -$xml1 = ""; | ||
| 169 | -$xml2 = ""; | ||
| 170 | -foreach($regioes as $regiao){ | ||
| 171 | - $caminho = $m->hierarquiaPath($regiao["codigo_tipo_regiao"]); | ||
| 172 | - $xml1 .= " | ||
| 173 | - <Dimension name='codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."' caption='Onde:".converte($regiao["nome_tipo_regiao"])."'> | ||
| 174 | - <Hierarchy hasAll='true' primaryKey='codigo'> | ||
| 175 | "; | 171 | "; |
| 176 | - $xml2 .= " | 172 | + //dimensoes geograficas |
| 173 | + //as dimensoes sao duplicadas | ||
| 174 | + //uma delas contem o geocodigo que permite a geracao do mapa | ||
| 175 | + | ||
| 176 | + //guarda as regioes filhas de uma determinada regiao (chave) | ||
| 177 | + $filhosDaRegiao = array(); | ||
| 178 | + $VirtualCubeDimensionDaRegiao = array(); | ||
| 179 | + $VirtualCubeMeasureDaRegiao = array(); | ||
| 180 | + foreach($regioes as $regiao){ | ||
| 181 | + $filhosDaRegiao[$regiao["codigo_tipo_regiao"]] = array(); | ||
| 182 | + $VirtualCubeDimensionDaRegiao[$regiao["codigo_tipo_regiao"]] = array(); | ||
| 183 | + $VirtualCubeMeasureDaRegiao[$regiao["codigo_tipo_regiao"]] = array(); | ||
| 184 | + } | ||
| 185 | + $xml1 = ""; | ||
| 186 | + $xml2 = ""; | ||
| 187 | + foreach($regioes as $regiao){ | ||
| 188 | + $caminho = $m->hierarquiaPath($regiao["codigo_tipo_regiao"]); | ||
| 189 | + $xml1 .= " | ||
| 190 | + <Dimension name='codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."' caption='Onde:".converte($regiao["nome_tipo_regiao"])."'> | ||
| 191 | + <Hierarchy hasAll='true' primaryKey='{$regiao['identificador']}'> | ||
| 192 | + "; | ||
| 193 | + $xml2 .= " | ||
| 177 | <Dimension name='codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."_geocod' caption='GeoCod:".converte($regiao["nome_tipo_regiao"])."'> | 194 | <Dimension name='codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."_geocod' caption='GeoCod:".converte($regiao["nome_tipo_regiao"])."'> |
| 178 | - <Hierarchy hasAll='true' primaryKey='codigo'> | ||
| 179 | - "; | ||
| 180 | - //cria uma view juntando as tabelas da hierarquia de regioes | ||
| 181 | - $n = count($caminho); | ||
| 182 | - $colunas = array(); | ||
| 183 | - $niveis1 = array(); | ||
| 184 | - $niveis2 = array(); | ||
| 185 | - $sql = "SELECT __COLUNAS__ FROM {$regiao['esquemadb']}.{$regiao['tabela']} AS regiao "; | ||
| 186 | - $colunas[] = "regiao.{$regiao['identificador']} AS codigo "; | ||
| 187 | - $colunas[] = "regiao.{$regiao['colunanomeregiao']} AS nome"; | ||
| 188 | - //$colunas[] = "regiao".$regiao['identificador']; | ||
| 189 | - $tabelaAnt = "regiao"; | ||
| 190 | - | ||
| 191 | - for($i=0;$i<$n;$i++){ | ||
| 192 | - $r = $m->listaTipoRegiao($caminho[$i]); | ||
| 193 | - | ||
| 194 | - array_push($filhosDaRegiao[$caminho[$i]],$regiao["codigo_tipo_regiao"]); | ||
| 195 | - | ||
| 196 | - $colunas[] = "j$i.{$r['colunanomeregiao']} AS j$i{$r['colunanomeregiao']}"; | ||
| 197 | - $colunas[] = "j$i.{$r['identificador']} AS j$i{$r['identificador']}"; | ||
| 198 | - $sql .= "INNER JOIN {$r['esquemadb']}.{$r['tabela']} | ||
| 199 | - AS j$i ON j$i.{$r['identificador']}::text = {$tabelaAnt}.{$r['identificador']}::text | 195 | + <Hierarchy hasAll='true' primaryKey='{$regiao['identificador']}'> |
| 200 | "; | 196 | "; |
| 201 | - $tabelaAnt = "j".$i; | ||
| 202 | - $niveis1[] = " | 197 | + //cria uma view juntando as tabelas da hierarquia de regioes |
| 198 | + $n = count($caminho); | ||
| 199 | + $colunas = array(); | ||
| 200 | + $niveis1 = array(); | ||
| 201 | + $niveis2 = array(); | ||
| 202 | + $sql = "SELECT __COLUNAS__ FROM {$regiao['esquemadb']}.{$regiao['tabela']} AS regiao "; | ||
| 203 | + $colunas[] = "regiao.{$regiao['identificador']} as codigo "; | ||
| 204 | + $colunas[] = "regiao.{$regiao['colunanomeregiao']} AS nome"; | ||
| 205 | + //$colunas[] = "regiao".$regiao['identificador']; | ||
| 206 | + $tabelaAnt = "regiao"; | ||
| 207 | + | ||
| 208 | + for($i=0;$i<$n;$i++){ | ||
| 209 | + $r = $m->listaTipoRegiao($caminho[$i]); | ||
| 210 | + | ||
| 211 | + array_push($filhosDaRegiao[$caminho[$i]],$regiao["codigo_tipo_regiao"]); | ||
| 212 | + | ||
| 213 | + $colunas[] = "j$i.{$r['colunanomeregiao']} AS j$i{$r['colunanomeregiao']}"; | ||
| 214 | + $colunas[] = "j$i.{$r['identificador']} AS j$i{$r['identificador']}"; | ||
| 215 | + $sql .= "INNER JOIN {$r['esquemadb']}.{$r['tabela']} | ||
| 216 | + AS j$i ON j$i.{$r['identificador']}::text = {$tabelaAnt}.{$r['identificador']}::text | ||
| 217 | + "; | ||
| 218 | + $tabelaAnt = "j".$i; | ||
| 219 | + $niveis1[] = " | ||
| 203 | <Level name='".converte($r["nome_tipo_regiao"])."' | 220 | <Level name='".converte($r["nome_tipo_regiao"])."' |
| 204 | - column='{$r['identificador']}' | ||
| 205 | - nameColumn='j$i{$r["colunanomeregiao"]}' uniqueMembers='false'/> | ||
| 206 | - "; | ||
| 207 | - $niveis2[] = " | 221 | + column='j$i{$r['identificador']}' |
| 222 | + nameColumn='j$i{$r["colunanomeregiao"]}' uniqueMembers='false'/> | ||
| 223 | + "; | ||
| 224 | + $niveis2[] = " | ||
| 208 | <Level name='".converte($r["nome_tipo_regiao"])." - GeoCod #{$caminho[$i]}' | 225 | <Level name='".converte($r["nome_tipo_regiao"])." - GeoCod #{$caminho[$i]}' |
| 209 | - column='{$r['identificador']}' | ||
| 210 | - nameColumn='j$i{$r["identificador"]}' uniqueMembers='false'/> | ||
| 211 | - "; | ||
| 212 | - } | ||
| 213 | - $niveis1[] = " | 226 | + column='j$i{$r['identificador']}' |
| 227 | + nameColumn='j$i{$r["identificador"]}' uniqueMembers='false'/> | ||
| 228 | + "; | ||
| 229 | + } | ||
| 230 | + $niveis1[] = " | ||
| 214 | <Level name='".converte($regiao["nome_tipo_regiao"])."' | 231 | <Level name='".converte($regiao["nome_tipo_regiao"])."' |
| 215 | - column='codigo' | ||
| 216 | - nameColumn='nome' uniqueMembers='true' > | 232 | + column='codigo' |
| 233 | + nameColumn='nome' uniqueMembers='true' > | ||
| 217 | </Level> | 234 | </Level> |
| 218 | - "; | ||
| 219 | - $niveis2[] = " | 235 | + "; |
| 236 | + $niveis2[] = " | ||
| 220 | <Level name='".converte($regiao["nome_tipo_regiao"])." - GeoCod #{$regiao["codigo_tipo_regiao"]}' | 237 | <Level name='".converte($regiao["nome_tipo_regiao"])." - GeoCod #{$regiao["codigo_tipo_regiao"]}' |
| 221 | - column='codigo' | ||
| 222 | - nameColumn='codigo' uniqueMembers='true' /> | ||
| 223 | - "; | ||
| 224 | - //verifica outras colunas | ||
| 225 | - $vis = $regiao['colunasvisiveis']; | ||
| 226 | - if($vis != ""){ | ||
| 227 | - $vis = str_replace(";",",",$vis); | ||
| 228 | - $vis = str_replace(",,",",",$vis); | ||
| 229 | - $vis = explode(",",$vis); | ||
| 230 | - foreach($vis as $v){ | ||
| 231 | - $colunas[] = "regiao.".$v." as ".$v; | 238 | + column='codigo' |
| 239 | + nameColumn='codigo' uniqueMembers='true' /> | ||
| 240 | + "; | ||
| 241 | + //verifica outras colunas | ||
| 242 | + $vis = $regiao['colunasvisiveis']; | ||
| 243 | + if($vis != ""){ | ||
| 244 | + $vis = str_replace(";",",",$vis); | ||
| 245 | + $vis = str_replace(",,",",",$vis); | ||
| 246 | + $vis = explode(",",$vis); | ||
| 247 | + foreach($vis as $v){ | ||
| 248 | + $colunas[] = "regiao.".$v." as ".$v; | ||
| 249 | + } | ||
| 250 | + $colunas = array_unique($colunas); | ||
| 232 | } | 251 | } |
| 233 | - $colunas = array_unique($colunas); | ||
| 234 | - } | ||
| 235 | - $colunas = implode($colunas,","); | ||
| 236 | - $sql = str_replace("__COLUNAS__",$colunas,$sql); | ||
| 237 | - //inclui a selecao se houver | ||
| 238 | - if(!empty($selecaoRegiao[$regiao["codigo_tipo_regiao"]])) | ||
| 239 | - $rs = $selecaoRegiao[$regiao["codigo_tipo_regiao"]]; | ||
| 240 | - $pos = strpos($sql, "regiao.".$rs["item"]." "); | ||
| 241 | - if($rs != "" || !$pos === false){ | ||
| 242 | - $sql .= " WHERE regiao.".$rs["sql"]; | ||
| 243 | - } | ||
| 244 | - | ||
| 245 | - $xml1 .= " | ||
| 246 | - <view alias='view_codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."' ><SQL dialect='generic' >$sql</SQL></view> | ||
| 247 | - "; | ||
| 248 | - $xml2 .= " | ||
| 249 | - <view alias='view_codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."_GeoCod' ><SQL dialect='generic' >$sql</SQL></view> | ||
| 250 | - "; | ||
| 251 | - $xml1 .= implode(" ",$niveis1); | ||
| 252 | - $xml2 .= implode(" ",$niveis2); | ||
| 253 | - $xml1 .= " | ||
| 254 | - </Hierarchy> | 252 | + $colunas = implode($colunas,","); |
| 253 | + $sql = str_replace("__COLUNAS__",$colunas,$sql); | ||
| 254 | + //inclui a selecao se houver | ||
| 255 | + if(!empty($selecaoRegiao[$regiao["codigo_tipo_regiao"]])) | ||
| 256 | + $rs = $selecaoRegiao[$regiao["codigo_tipo_regiao"]]; | ||
| 257 | + $pos = strpos($sql, "regiao.".$rs["item"]." "); | ||
| 258 | + if($rs != "" || !$pos === false){ | ||
| 259 | + $sql .= " WHERE regiao.".$rs["sql"]; | ||
| 260 | + } | ||
| 261 | + | ||
| 262 | + $xml1 .= " | ||
| 263 | + <view alias='view_codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."' ><SQL dialect='generic' >$sql</SQL></view> | ||
| 264 | + "; | ||
| 265 | + $xml2 .= " | ||
| 266 | + <view alias='view_codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."_GeoCod' ><SQL dialect='generic' >$sql</SQL></view> | ||
| 267 | + "; | ||
| 268 | + $xml1 .= implode(" ",$niveis1); | ||
| 269 | + $xml2 .= implode(" ",$niveis2); | ||
| 270 | + $xml1 .= " | ||
| 271 | + </Hierarchy> | ||
| 255 | </Dimension> | 272 | </Dimension> |
| 256 | - "; | ||
| 257 | - $xml2 .= " | ||
| 258 | - </Hierarchy> | 273 | + "; |
| 274 | + $xml2 .= " | ||
| 275 | + </Hierarchy> | ||
| 259 | </Dimension> | 276 | </Dimension> |
| 260 | - "; | ||
| 261 | -} | ||
| 262 | -//echo "<pre>";var_dump($filhosDaRegiao);exit; | ||
| 263 | -//outras dimensoes definidas nos parametros e que nao sejam do tipo tempo | ||
| 264 | -$parametros = $m->listaTodosParametros(); | ||
| 265 | -$dimOutras = array(); | ||
| 266 | -foreach($parametros as $p){ | ||
| 267 | - //apenas as nao tempo | ||
| 268 | - if($p["tipo"] < 1 || $p["tipo"] > 5){ | ||
| 269 | - $k = $p["esquema"]."_".$p["tabela"]."_".$p["coluna"]; | ||
| 270 | - if(empty($tbs[$k])){ | ||
| 271 | - $dimOutras[$k] = $p; | ||
| 272 | - } | ||
| 273 | - else{ | ||
| 274 | - array_push($dimOutras[$k],$p); | 277 | + "; |
| 278 | + } | ||
| 279 | + //echo "<pre>";var_dump($filhosDaRegiao);exit; | ||
| 280 | + //outras dimensoes definidas nos parametros e que nao sejam do tipo tempo | ||
| 281 | + $parametros = $m->listaTodosParametros(); | ||
| 282 | + $dimOutras = array(); | ||
| 283 | + foreach($parametros as $p){ | ||
| 284 | + //apenas as nao tempo | ||
| 285 | + if($p["tipo"] < 1 || $p["tipo"] > 5){ | ||
| 286 | + $k = $p["esquema"]."_".$p["tabela"]."_".$p["coluna"]; | ||
| 287 | + if(empty($tbs[$k])){ | ||
| 288 | + $dimOutras[$k] = $p; | ||
| 289 | + } | ||
| 290 | + else{ | ||
| 291 | + array_push($dimOutras[$k],$p); | ||
| 292 | + } | ||
| 275 | } | 293 | } |
| 276 | } | 294 | } |
| 277 | -} | ||
| 278 | -$xml3 = ""; | ||
| 279 | -foreach($dimOutras as $d){ | ||
| 280 | - $k = $p["esquemadb"]."_".$d["tabela"]."_".$d["coluna"]; | ||
| 281 | - $xml3 .= " | 295 | + $xml3 = ""; |
| 296 | + foreach($dimOutras as $d){ | ||
| 297 | + $k = $p["esquemadb"]."_".$d["tabela"]."_".$d["coluna"]; | ||
| 298 | + $xml3 .= " | ||
| 282 | <Dimension name='".$k."' caption='".converte($d["nome"])."'> | 299 | <Dimension name='".$k."' caption='".converte($d["nome"])."'> |
| 283 | - <Hierarchy hasAll='true' primaryKey='codigo'> | ||
| 284 | - "; | ||
| 285 | - //cria uma view juntando as tabelas da hierarquia de regioes | ||
| 286 | - $colunas = "dim.{$d['coluna']} as codigo, "; | ||
| 287 | - $colunas .= "dim.{$d['coluna']} AS nome"; | ||
| 288 | - $sql = "SELECT {$colunas} FROM ".$d['esquemadb'].".".$d['tabela']." as dim group by codigo"; | ||
| 289 | - $xml3 .= "<view alias='".$k."' ><SQL dialect='generic' >$sql</SQL></view>"; | ||
| 290 | - $xml3 .= "<Level name='".converte($d["nome"])."' | ||
| 291 | - column='codigo' | ||
| 292 | - nameColumn='nome' uniqueMembers='true' /> | ||
| 293 | - "; | ||
| 294 | - $xml3 .= "</Hierarchy> | 300 | + <Hierarchy hasAll='true' primaryKey='codigo'> |
| 301 | + "; | ||
| 302 | + //cria uma view juntando as tabelas da hierarquia de regioes | ||
| 303 | + $colunas = "dim.{$d['coluna']} as codigo, "; | ||
| 304 | + $colunas .= "dim.{$d['coluna']} AS nome"; | ||
| 305 | + $sql = "SELECT {$colunas} FROM ".$d['esquemadb'].".".$d['tabela']." as dim group by codigo"; | ||
| 306 | + $xml3 .= "<view alias='".$k."' ><SQL dialect='generic' >$sql</SQL></view>"; | ||
| 307 | + $xml3 .= "<Level name='".converte($d["nome"])."' | ||
| 308 | + column='codigo' | ||
| 309 | + nameColumn='nome' uniqueMembers='true' /> | ||
| 310 | + "; | ||
| 311 | + $xml3 .= "</Hierarchy> | ||
| 295 | </Dimension>"; | 312 | </Dimension>"; |
| 296 | -} | ||
| 297 | -$xml .= $xml1.$xml2.$xml3; | ||
| 298 | -//junta as medidas conforme o nome da tabela utilizada | ||
| 299 | -$medidas = $m->listaMedidaVariavel(); | ||
| 300 | -//var_dump($medidas);exit; | ||
| 301 | -$tbs = array(); | ||
| 302 | -//echo $codigo_tipo_regiao;exit; | ||
| 303 | -foreach($medidas as $medida){ | ||
| 304 | - if($codigo_tipo_regiao == "" || $medida["codigo_tipo_regiao"] == $codigo_tipo_regiao){ | ||
| 305 | - $k = $medida["esquemadb"].$medida["tabela"]; | ||
| 306 | - //echo "<pre>".$k; | ||
| 307 | - if(empty($tbs[$k])){ | ||
| 308 | - $tbs[$k] = array($medida); | ||
| 309 | - } | ||
| 310 | - else{ | ||
| 311 | - array_push($tbs[$k],$medida); | 313 | + } |
| 314 | + $xml .= $xml1.$xml2.$xml3; | ||
| 315 | + //junta as medidas conforme o nome da tabela utilizada | ||
| 316 | + $medidas = $m->listaMedidaVariavel(); | ||
| 317 | + //var_dump($medidas);exit; | ||
| 318 | + $tbs = array(); | ||
| 319 | + //echo $codigo_tipo_regiao;exit; | ||
| 320 | + foreach($medidas as $medida){ | ||
| 321 | + if($codigo_tipo_regiao == "" || $medida["codigo_tipo_regiao"] == $codigo_tipo_regiao){ | ||
| 322 | + $k = $medida["esquemadb"].$medida["tabela"]; | ||
| 323 | + //echo "<pre>".$k; | ||
| 324 | + if(empty($tbs[$k])){ | ||
| 325 | + $tbs[$k] = array($medida); | ||
| 326 | + } | ||
| 327 | + else{ | ||
| 328 | + array_push($tbs[$k],$medida); | ||
| 329 | + } | ||
| 312 | } | 330 | } |
| 313 | } | 331 | } |
| 314 | -} | ||
| 315 | -//monta os cubos para cada esquema.tabela diferente | ||
| 316 | -$VirtualCubeDimension = array(); | ||
| 317 | -$VirtualCubeMeasure = array(); | ||
| 318 | -//echo "<pre>";var_dump($tbs)."<br>";exit; | ||
| 319 | -foreach($tbs as $tb){ | ||
| 320 | - //cabecalho de cada cubo obtido da primeira medida | ||
| 321 | - $c = $tb[0]; | ||
| 322 | - $VirtualCubeDimension[] = " | 332 | + //monta os cubos para cada esquema.tabela diferente |
| 333 | + $VirtualCubeDimension = array(); | ||
| 334 | + $VirtualCubeMeasure = array(); | ||
| 335 | + //echo "<pre>";var_dump($tbs)."<br>";exit; | ||
| 336 | + foreach($tbs as $tb){ | ||
| 337 | + //cabecalho de cada cubo obtido da primeira medida | ||
| 338 | + $c = $tb[0]; | ||
| 339 | + $VirtualCubeDimension[] = " | ||
| 323 | <VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}' /> | 340 | <VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}' /> |
| 324 | - "; | ||
| 325 | - $VirtualCubeDimension[] = " | 341 | + "; |
| 342 | + $VirtualCubeDimension[] = " | ||
| 326 | <VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}_geocod' /> | 343 | <VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}_geocod' /> |
| 327 | - "; | ||
| 328 | - array_push( | ||
| 329 | - $VirtualCubeDimensionDaRegiao[$c["codigo_tipo_regiao"]], | ||
| 330 | - "<VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}' />" | ||
| 331 | - ); | ||
| 332 | - array_push( | ||
| 333 | - $VirtualCubeDimensionDaRegiao[$c["codigo_tipo_regiao"]], | ||
| 334 | - "<VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}_geocod' />" | ||
| 335 | - ); | ||
| 336 | - //verifica as dimensoes do tipo tempo | ||
| 337 | - $dimEnsoes = array(); | ||
| 338 | - //echo "<pre>";var_dump($tb)."<br>"; | ||
| 339 | - foreach($tb as $medida){ | ||
| 340 | - //echo "<pre>";var_dump($medida)."<br>"; | ||
| 341 | - $parametros = $m->listaParametro($medida["id_medida_variavel"],"","",false,false); | ||
| 342 | - $parComposto = array(); //guarda a composicao da chave que liga com a dimensao | ||
| 343 | - $colunaAdicionais = array(); | ||
| 344 | - //parametro do tipo tempo | ||
| 345 | - if(count($parametros) > 0){ | ||
| 346 | - foreach($parametros as $parametro){ | ||
| 347 | - if($parametro["tipo"] < 5 && $parametro["tipo"] > 0){ | ||
| 348 | - $parComposto[] = $parametro["coluna"]; | 344 | + "; |
| 345 | + array_push( | ||
| 346 | + $VirtualCubeDimensionDaRegiao[$c["codigo_tipo_regiao"]], | ||
| 347 | + "<VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}' />" | ||
| 348 | + ); | ||
| 349 | + array_push( | ||
| 350 | + $VirtualCubeDimensionDaRegiao[$c["codigo_tipo_regiao"]], | ||
| 351 | + "<VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}_geocod' />" | ||
| 352 | + ); | ||
| 353 | + //verifica as dimensoes do tipo tempo | ||
| 354 | + $dimEnsoes = array(); | ||
| 355 | + //echo "<pre>";var_dump($tb)."<br>"; | ||
| 356 | + foreach($tb as $medida){ | ||
| 357 | + //echo "<pre>";var_dump($medida)."<br>"; | ||
| 358 | + $parametros = $m->listaParametro($medida["id_medida_variavel"],"","",false,false); | ||
| 359 | + $parComposto = array(); //guarda a composicao da chave que liga com a dimensao | ||
| 360 | + $colunaAdicionais = array(); | ||
| 361 | + //parametro do tipo tempo | ||
| 362 | + if(count($parametros) > 0){ | ||
| 363 | + foreach($parametros as $parametro){ | ||
| 364 | + if($parametro["tipo"] < 5 && $parametro["tipo"] > 0){ | ||
| 365 | + $parComposto[] = $parametro["coluna"]; | ||
| 366 | + } | ||
| 349 | } | 367 | } |
| 350 | - } | ||
| 351 | - $VirtualCubeDimension[] = " | 368 | + $VirtualCubeDimension[] = " |
| 352 | <VirtualCubeDimension name='Tempo' /> | 369 | <VirtualCubeDimension name='Tempo' /> |
| 353 | - "; | ||
| 354 | - $u = " | 370 | + "; |
| 371 | + $u = " | ||
| 355 | <DimensionUsage foreignKey='".implode("_",$parComposto)."_' name='Tempo' source='Tempo'/> | 372 | <DimensionUsage foreignKey='".implode("_",$parComposto)."_' name='Tempo' source='Tempo'/> |
| 356 | - "; | ||
| 357 | - $dimEnsoes[] = $u; | ||
| 358 | - array_push($VirtualCubeDimensionDaRegiao[$c["codigo_tipo_regiao"]],"<VirtualCubeDimension name='Tempo' />"); | ||
| 359 | - } | ||
| 360 | - //outros parametros | ||
| 361 | - $outrosParametros = array(); | ||
| 362 | - //TODO criar as dimensoes aqui | ||
| 363 | - //echo "<pre>";var_dump($parametros); | ||
| 364 | - foreach($parametros as $parametro){ | ||
| 365 | - $k = $parametro["esquemadb"]."_".$parametro["tabela"]."_".$parametro["coluna"]; | ||
| 366 | - if($parametro["tipo"] > 5 || $parametro["tipo"] == 0){ | ||
| 367 | - $outrosParametros[] = $k; | ||
| 368 | - $VirtualCubeDimension[] = "<VirtualCubeDimension name='{$k}' />"; | ||
| 369 | - $u = "<DimensionUsage foreignKey='{$parametro["coluna"]}' name='nome' source='{$k}'/>"; | 373 | + "; |
| 370 | $dimEnsoes[] = $u; | 374 | $dimEnsoes[] = $u; |
| 371 | - array_push($VirtualCubeDimensionDaRegiao[$c["codigo_tipo_regiao"]],"<VirtualCubeDimension name='{$k}' />"); | 375 | + array_push($VirtualCubeDimensionDaRegiao[$c["codigo_tipo_regiao"]],"<VirtualCubeDimension name='Tempo' />"); |
| 376 | + } | ||
| 377 | + //outros parametros | ||
| 378 | + $outrosParametros = array(); | ||
| 379 | + //echo "<pre>";var_dump($parametros); | ||
| 380 | + foreach($parametros as $parametro){ | ||
| 381 | + $k = $parametro["esquemadb"]."_".$parametro["tabela"]."_".$parametro["coluna"]; | ||
| 382 | + if($parametro["tipo"] > 5 || $parametro["tipo"] == 0){ | ||
| 383 | + $outrosParametros[] = $k; | ||
| 384 | + $VirtualCubeDimension[] = "<VirtualCubeDimension name='{$k}' />"; | ||
| 385 | + $u = "<DimensionUsage foreignKey='{$parametro["coluna"]}' name='nome' source='{$k}'/>"; | ||
| 386 | + $dimEnsoes[] = $u; | ||
| 387 | + array_push($VirtualCubeDimensionDaRegiao[$c["codigo_tipo_regiao"]],"<VirtualCubeDimension name='{$k}' />"); | ||
| 388 | + } | ||
| 372 | } | 389 | } |
| 373 | } | 390 | } |
| 374 | - } | ||
| 375 | - //$dimEnsoes[] = '<DimensionUsage foreignKey="coduf" name="codigo_tipo_regiao_2" source="codigo_tipo_regiao_2"/>'; | ||
| 376 | - $xml .= " | ||
| 377 | - <Cube cache='false' name='Tabela: {$c["esquemadb"]}{$c["tabela"]}'>"; | ||
| 378 | - $incluirChaves = array("*"); | ||
| 379 | - | ||
| 380 | - if(count($parComposto) > 0){ | ||
| 381 | - //$sql = "select *,".implode("||'-'||",$parComposto)."::text as ".implode("_",$parComposto)."_ from {$c["esquemadb"]}.{$c["tabela"]}"; | ||
| 382 | - $incluirChaves[] = implode("||'-'||",$parComposto)."::text as ".implode("_",$parComposto)."_"; | ||
| 383 | - } | ||
| 384 | - if(count($outrosParametros) > 0){ | ||
| 385 | - foreach($outrosParametros as $o){ | ||
| 386 | - //$incluirChaves[] = $o."::text as ".$o."_"; | ||
| 387 | - } | ||
| 388 | - } | ||
| 389 | - | ||
| 390 | - $sql = "select ".implode(",",$incluirChaves)." from {$c["esquemadb"]}.{$c["tabela"]}"; | ||
| 391 | - | ||
| 392 | - $xml .= " | ||
| 393 | - <view alias='view_{$c["esquemadb"]}{$c["tabela"]}' ><SQL dialect='generic' >$sql</SQL></view> | ||
| 394 | - <DimensionUsage foreignKey='".$c["colunaidgeo"]."' name='codigo_tipo_regiao_".$c["codigo_tipo_regiao"]."' source='codigo_tipo_regiao_".$c["codigo_tipo_regiao"]."'/> | ||
| 395 | - <DimensionUsage foreignKey='".$c["colunaidgeo"]."' name='codigo_tipo_regiao_".$c["codigo_tipo_regiao"]."_geocod' source='codigo_tipo_regiao_".$c["codigo_tipo_regiao"]."_geocod'/> | ||
| 396 | - "; | ||
| 397 | - | ||
| 398 | - $xml .= implode(" ",array_unique($dimEnsoes)); | ||
| 399 | - | ||
| 400 | - //inclui cada elemento em medida | ||
| 401 | - foreach($tb as $medida){ | ||
| 402 | - $agregador = "sum"; | ||
| 403 | - if($medida["permitesoma"] == 0 && $medida["permitemedia"] == 1){ | ||
| 404 | - $agregador = "avg"; | 391 | + //$dimEnsoes[] = '<DimensionUsage foreignKey="coduf" name="codigo_tipo_regiao_2" source="codigo_tipo_regiao_2"/>'; |
| 392 | + $xml .= " | ||
| 393 | + <Cube cache='false' name='Tabela: {$c["esquemadb"]}{$c["tabela"]}'>"; | ||
| 394 | + $incluirChaves = array("*"); | ||
| 395 | + | ||
| 396 | + if(count($parComposto) > 0){ | ||
| 397 | + //$sql = "select *,".implode("||'-'||",$parComposto)."::text as ".implode("_",$parComposto)."_ from {$c["esquemadb"]}.{$c["tabela"]}"; | ||
| 398 | + $incluirChaves[] = implode("||'-'||",$parComposto)."::text as ".implode("_",$parComposto)."_"; | ||
| 405 | } | 399 | } |
| 406 | - if($medida["permitesoma"] == 0 && $medida["permitemedia"] == 0){ | ||
| 407 | - $agregador = "count"; | 400 | + if(count($outrosParametros) > 0){ |
| 401 | + foreach($outrosParametros as $o){ | ||
| 402 | + //$incluirChaves[] = $o."::text as ".$o."_"; | ||
| 403 | + } | ||
| 408 | } | 404 | } |
| 405 | + | ||
| 406 | + $sql = "select ".implode(",",$incluirChaves)." from {$c["esquemadb"]}.{$c["tabela"]}"; | ||
| 407 | + | ||
| 409 | $xml .= " | 408 | $xml .= " |
| 410 | - <Measure name='id_medida_variavel_".$medida["id_medida_variavel"]."' caption='".converte($medida["nomemedida"])."' column='".$medida["colunavalor"]."' aggregator='".$agregador."' /> | 409 | + <view alias='view_{$c["esquemadb"]}{$c["tabela"]}' ><SQL dialect='generic' >$sql</SQL></view> |
| 410 | + <DimensionUsage foreignKey='".$c["colunaidgeo"]."' name='codigo_tipo_regiao_".$c["codigo_tipo_regiao"]."' source='codigo_tipo_regiao_".$c["codigo_tipo_regiao"]."'/> | ||
| 411 | + <DimensionUsage foreignKey='".$c["colunaidgeo"]."' name='codigo_tipo_regiao_".$c["codigo_tipo_regiao"]."_geocod' source='codigo_tipo_regiao_".$c["codigo_tipo_regiao"]."_geocod'/> | ||
| 411 | "; | 412 | "; |
| 412 | - $u = " | 413 | + |
| 414 | + $xml .= implode(" ",array_unique($dimEnsoes)); | ||
| 415 | + | ||
| 416 | + //inclui cada elemento em medida | ||
| 417 | + foreach($tb as $medida){ | ||
| 418 | + $agregador = "sum"; | ||
| 419 | + if($medida["permitesoma"] == 0 && $medida["permitemedia"] == 1){ | ||
| 420 | + $agregador = "avg"; | ||
| 421 | + } | ||
| 422 | + if($medida["permitesoma"] == 0 && $medida["permitemedia"] == 0){ | ||
| 423 | + $agregador = "count"; | ||
| 424 | + } | ||
| 425 | + $xml .= " | ||
| 426 | + <Measure name='id_medida_variavel_".$medida["id_medida_variavel"]."' caption='".converte($medida["nomemedida"])."' column='".$medida["colunavalor"]."' aggregator='".$agregador."' /> | ||
| 427 | + "; | ||
| 428 | + $u = " | ||
| 413 | <VirtualCubeMeasure cubeName='Tabela: {$c["esquemadb"]}{$c["tabela"]}' name='[Measures].[id_medida_variavel_".$medida["id_medida_variavel"]."]'/> | 429 | <VirtualCubeMeasure cubeName='Tabela: {$c["esquemadb"]}{$c["tabela"]}' name='[Measures].[id_medida_variavel_".$medida["id_medida_variavel"]."]'/> |
| 414 | - "; | ||
| 415 | - $VirtualCubeMeasure[] = $u; | ||
| 416 | - array_push($VirtualCubeMeasureDaRegiao[$c["codigo_tipo_regiao"]],$u); | ||
| 417 | - } | ||
| 418 | - $xml .= " | 430 | + "; |
| 431 | + $VirtualCubeMeasure[] = $u; | ||
| 432 | + array_push($VirtualCubeMeasureDaRegiao[$c["codigo_tipo_regiao"]],$u); | ||
| 433 | + } | ||
| 434 | + $xml .= " | ||
| 419 | </Cube> | 435 | </Cube> |
| 420 | "; | 436 | "; |
| 421 | -} | ||
| 422 | -$xml .= '<VirtualCube name="Todas as medidas" >'; | ||
| 423 | -$VirtualCubeDimension = array_unique($VirtualCubeDimension); | ||
| 424 | -$VirtualCubeMeasure = array_unique($VirtualCubeMeasure); | ||
| 425 | -$xml .= implode(" ",$VirtualCubeDimension); | ||
| 426 | -$xml .= implode(" ",$VirtualCubeMeasure); | ||
| 427 | -$xml .= '</VirtualCube>'; | ||
| 428 | -// | ||
| 429 | -//cubos por regiao | ||
| 430 | -// | ||
| 431 | -//$filhosDaRegiao = array(); | ||
| 432 | -//$VirtualCubeDimensionDaRegiao = array(); | ||
| 433 | -//$VirtualCubeMeasureDaRegiao = array(); | ||
| 434 | -foreach($regioes as $regiao){ | ||
| 435 | - $xml .= '<VirtualCube name="'.converte($regiao["nome_tipo_regiao"]).'" >'; | ||
| 436 | - $xml .= implode(" ",array_unique($VirtualCubeDimensionDaRegiao[$regiao["codigo_tipo_regiao"]])); | ||
| 437 | - $xml .= implode(" ",array_unique($VirtualCubeMeasureDaRegiao[$regiao["codigo_tipo_regiao"]])); | 437 | + } |
| 438 | + $xml .= '<VirtualCube name="Todas as medidas" >'; | ||
| 439 | + $VirtualCubeDimension = array_unique($VirtualCubeDimension); | ||
| 440 | + $VirtualCubeMeasure = array_unique($VirtualCubeMeasure); | ||
| 441 | + $xml .= implode(" ",$VirtualCubeDimension); | ||
| 442 | + $xml .= implode(" ",$VirtualCubeMeasure); | ||
| 438 | $xml .= '</VirtualCube>'; | 443 | $xml .= '</VirtualCube>'; |
| 444 | + // | ||
| 445 | + //cubos por regiao | ||
| 446 | + // | ||
| 447 | + //$filhosDaRegiao = array(); | ||
| 448 | + //$VirtualCubeDimensionDaRegiao = array(); | ||
| 449 | + //$VirtualCubeMeasureDaRegiao = array(); | ||
| 450 | + | ||
| 451 | + foreach($regioes as $regiao){ | ||
| 452 | + //inclui os parametros para a regiao de acordo com os filhos que possui | ||
| 453 | + $d = $VirtualCubeDimensionDaRegiao[$regiao["codigo_tipo_regiao"]]; | ||
| 454 | + $m = $VirtualCubeMeasureDaRegiao[$regiao["codigo_tipo_regiao"]]; | ||
| 455 | + foreach($filhosDaRegiao[$regiao["codigo_tipo_regiao"]] as $f){ | ||
| 456 | + //$d = array_merge($d,$VirtualCubeDimensionDaRegiao[$f]); | ||
| 457 | + $m = array_merge($m,$VirtualCubeMeasureDaRegiao[$f]); | ||
| 458 | + } | ||
| 459 | + if(count(array_unique($m)) > 0){ | ||
| 460 | + $xml .= '<VirtualCube name="Regi&atilde;o: '.converte($regiao["nome_tipo_regiao"]).'" >'; | ||
| 461 | + $xml .= implode(" ",array_unique($d)); | ||
| 462 | + $xml .= implode(" ",array_unique($m)); | ||
| 463 | + $xml .= '</VirtualCube>'; | ||
| 464 | + } | ||
| 465 | + } | ||
| 466 | + $xml .= "</Schema>"; | ||
| 467 | + error_reporting(0); | ||
| 468 | + ob_end_clean(); | ||
| 469 | + | ||
| 470 | + if($_GET["output"] == "xml"){ | ||
| 471 | + echo header("Content-type: application/xml"); | ||
| 472 | + echo $xml;exit; | ||
| 473 | + } | ||
| 474 | + gravaDados(array($xml),$arquivoXmlEsquema); | ||
| 439 | } | 475 | } |
| 440 | -$xml .= "</Schema>"; | ||
| 441 | -error_reporting(0); | ||
| 442 | -ob_end_clean(); | ||
| 443 | - | ||
| 444 | -if($_GET["output"] == "xml"){ | ||
| 445 | - echo header("Content-type: application/xml"); | ||
| 446 | - echo $xml;exit; | 476 | +if($_GET["output"] == "xml"){ |
| 477 | + echo header("Content-type: application/xml"); | ||
| 478 | + header("Location:".$_GET["xmlesquema"]); | ||
| 479 | +} | ||
| 480 | +else{ | ||
| 481 | + header("Location:".$saikuUrl."/?nomeConexao=".$nomeConexao."&locaplic=".$_GET["locaplic"]."&g_sid=".$_GET["g_sid"]."&mapext=".$_GET["mapext"]."&origem=".$_GET["origem"]); | ||
| 447 | } | 482 | } |
| 448 | -gravaDados(array($xml),$arquivoXmlEsquema); | ||
| 449 | - | ||
| 450 | -header("Location:".$saikuUrl."/?nomeConexao=".$nomeConexao."&locaplic=".$_GET["locaplic"]."&g_sid=".$_GET["g_sid"]."&mapext=".$_GET["mapext"]."&origem=".$_GET["origem"]); | ||
| 451 | - | ||
| 452 | function converte($texto){ | 483 | function converte($texto){ |
| 453 | $texto = str_replace("&","&",htmlentities($texto)); | 484 | $texto = str_replace("&","&",htmlentities($texto)); |
| 454 | //$texto = htmlentities($texto); | 485 | //$texto = htmlentities($texto); |
init/dicionario.js
| 1 | -g_traducao_init = { | ||
| 2 | -1: [ | ||
| 3 | -{ | ||
| 4 | -pt:"Remover essa tela de apresentação (depois você poderá ir direto para http:// localhost/i3geo/init)", | ||
| 5 | -en:"", | ||
| 6 | -es:"" | ||
| 7 | -}], | ||
| 8 | -2: [ | ||
| 9 | -{ | ||
| 10 | -pt:"Teste da instalação", | ||
| 11 | -en:"", | ||
| 12 | -es:"" | ||
| 13 | -}], | ||
| 14 | -3: [ | ||
| 15 | -{ | ||
| 16 | -pt:"Sistema de administração", | ||
| 17 | -en:"", | ||
| 18 | -es:"" | ||
| 19 | -}], | ||
| 20 | -4: [ | ||
| 21 | -{ | ||
| 22 | -pt:"Mapa com interface Openlayers", | ||
| 23 | -en:"", | ||
| 24 | -es:"" | ||
| 25 | -}], | ||
| 26 | -5: [ | ||
| 27 | -{ | ||
| 28 | -pt:"Mapa com interface Openlayers (modo debug)", | ||
| 29 | -en:"", | ||
| 30 | -es:"" | ||
| 31 | -}], | ||
| 32 | -6: [ | ||
| 33 | -{ | ||
| 34 | -pt:"Mapa com interface Google Maps", | ||
| 35 | -en:"", | ||
| 36 | -es:"" | ||
| 37 | -}], | ||
| 38 | -7: [ | ||
| 39 | -{ | ||
| 40 | -pt:"Mapa com interface Google Earth", | ||
| 41 | -en:"", | ||
| 42 | -es:"" | ||
| 43 | -}], | ||
| 44 | -8: [ | ||
| 45 | -{ | ||
| 46 | -pt:"Cartogramas (METAESTAT)", | ||
| 47 | -en:"", | ||
| 48 | -es:"" | ||
| 49 | -}], | ||
| 50 | -9: [ | ||
| 51 | -{ | ||
| 52 | -pt:"Editor de regiões (METAESTAT)", | ||
| 53 | -en:"", | ||
| 54 | -es:"" | ||
| 55 | -}], | ||
| 56 | -10: [ | ||
| 57 | -{ | ||
| 58 | -pt:"Download de dados geo", | ||
| 59 | -en:"", | ||
| 60 | -es:"" | ||
| 61 | -}], | ||
| 62 | -11: [ | ||
| 63 | -{ | ||
| 64 | -pt:"Serviços OGC (WMS e WFS)", | ||
| 65 | -en:"", | ||
| 66 | -es:"" | ||
| 67 | -}], | ||
| 68 | -12: [ | ||
| 69 | -{ | ||
| 70 | -pt:"Catálogo de temas no formato KML", | ||
| 71 | -en:"", | ||
| 72 | -es:"" | ||
| 73 | -}], | ||
| 74 | -13: [ | ||
| 75 | -{ | ||
| 76 | -pt:"Gerador de links permanentes", | ||
| 77 | -en:"", | ||
| 78 | -es:"" | ||
| 79 | -}], | ||
| 80 | -14: [ | ||
| 81 | -{ | ||
| 82 | -pt:"Exemplos de customização da interface de mapas", | ||
| 83 | -en:"", | ||
| 84 | -es:"" | ||
| 85 | -}], | ||
| 86 | -15: [ | ||
| 87 | -{ | ||
| 88 | -pt:"Manual de uso", | ||
| 89 | -en:"", | ||
| 90 | -es:"" | ||
| 91 | -}], | ||
| 92 | -16: [ | ||
| 93 | -{ | ||
| 94 | -pt:"Registro de bugs", | ||
| 95 | -en:"", | ||
| 96 | -es:"" | ||
| 97 | -}], | ||
| 98 | -17: [ | ||
| 99 | -{ | ||
| 100 | -pt:"Guia de migração", | ||
| 101 | -en:"", | ||
| 102 | -es:"" | ||
| 103 | -}], | ||
| 104 | -18: [ | ||
| 105 | -{ | ||
| 106 | -pt:"Integre mapas em outras aplicações", | ||
| 107 | -en:"", | ||
| 108 | -es:"" | ||
| 109 | -}], | ||
| 110 | -19: [ | ||
| 111 | -{ | ||
| 112 | -pt:"ATENÇÃO!!! Essa instalação está vulnerável: edite o arquivo i3geo/ms_configura.php e altere o login e senha definidos na variável $i3geomaster.<br>Ao acessar o i3Geo em um servidor que não seja o localhost os mapas ficarão bloqueados até que essa edição seja feita.", | ||
| 113 | -en:"", | ||
| 114 | -es:"" | ||
| 115 | -}], | ||
| 116 | -20: [ | ||
| 117 | -{ | ||
| 118 | -pt:"Incluia um link apenas na sua página", | ||
| 119 | -en:"", | ||
| 120 | -es:"" | ||
| 121 | -}], | ||
| 122 | -21: [ | ||
| 123 | -{ | ||
| 124 | -pt:"Manual de administração", | ||
| 125 | -en:"", | ||
| 126 | -es:"" | ||
| 127 | -}], | ||
| 128 | -22: [ | ||
| 129 | -{ | ||
| 130 | -pt:"Google Maps com aplicação de estilo", | ||
| 131 | -en:"", | ||
| 132 | -es:"" | ||
| 133 | -}], | ||
| 134 | -23: [ | ||
| 135 | -{ | ||
| 136 | -pt:"Mapa com Open Street Map (OSM)", | ||
| 137 | -en:"", | ||
| 138 | -es:"" | ||
| 139 | -}], | ||
| 140 | -24: [ | ||
| 141 | -{ | ||
| 142 | -pt:"Documentação da API", | ||
| 143 | -en:"", | ||
| 144 | -es:"" | ||
| 145 | -}], | ||
| 146 | -25: [ | ||
| 147 | -{ | ||
| 148 | -pt:"SAIKU - análise de dados estatísticos", | ||
| 149 | -en:"", | ||
| 150 | -es:"" | ||
| 151 | -}], | ||
| 152 | -26: [ | ||
| 153 | -{ | ||
| 154 | -pt:"Teste do conversor de projeto GVP para Mapfile", | ||
| 155 | -en:"", | ||
| 156 | -es:"" | ||
| 157 | -}], | ||
| 158 | -27: [ | ||
| 159 | -{ | ||
| 160 | -pt:"Lista de Atlas cadastrados", | ||
| 161 | -en:"", | ||
| 162 | -es:"" | ||
| 163 | -}] | ||
| 164 | -}; | 1 | +g_traducao_init = |
| 2 | + { | ||
| 3 | + 1 : [ | ||
| 4 | + { | ||
| 5 | + pt : "Remover essa tela de apresentação (depois você poderá ir direto para http:// localhost/i3geo/init)", | ||
| 6 | + en : "", | ||
| 7 | + es : "" | ||
| 8 | + } | ||
| 9 | + ], | ||
| 10 | + 2 : [ | ||
| 11 | + { | ||
| 12 | + pt : "Teste da instalação", | ||
| 13 | + en : "", | ||
| 14 | + es : "" | ||
| 15 | + } | ||
| 16 | + ], | ||
| 17 | + 3 : [ | ||
| 18 | + { | ||
| 19 | + pt : "Sistema de administração", | ||
| 20 | + en : "", | ||
| 21 | + es : "" | ||
| 22 | + } | ||
| 23 | + ], | ||
| 24 | + 4 : [ | ||
| 25 | + { | ||
| 26 | + pt : "Mapa com interface Openlayers", | ||
| 27 | + en : "", | ||
| 28 | + es : "" | ||
| 29 | + } | ||
| 30 | + ], | ||
| 31 | + 5 : [ | ||
| 32 | + { | ||
| 33 | + pt : "Mapa com interface Openlayers (modo debug)", | ||
| 34 | + en : "", | ||
| 35 | + es : "" | ||
| 36 | + } | ||
| 37 | + ], | ||
| 38 | + 6 : [ | ||
| 39 | + { | ||
| 40 | + pt : "Mapa com interface Google Maps", | ||
| 41 | + en : "", | ||
| 42 | + es : "" | ||
| 43 | + } | ||
| 44 | + ], | ||
| 45 | + 7 : [ | ||
| 46 | + { | ||
| 47 | + pt : "Mapa com interface Google Earth", | ||
| 48 | + en : "", | ||
| 49 | + es : "" | ||
| 50 | + } | ||
| 51 | + ], | ||
| 52 | + 8 : [ | ||
| 53 | + { | ||
| 54 | + pt : "Cartogramas (METAESTAT)", | ||
| 55 | + en : "", | ||
| 56 | + es : "" | ||
| 57 | + } | ||
| 58 | + ], | ||
| 59 | + 9 : [ | ||
| 60 | + { | ||
| 61 | + pt : "Editor de regiões (METAESTAT)", | ||
| 62 | + en : "", | ||
| 63 | + es : "" | ||
| 64 | + } | ||
| 65 | + ], | ||
| 66 | + 10 : [ | ||
| 67 | + { | ||
| 68 | + pt : "Download de dados geo", | ||
| 69 | + en : "", | ||
| 70 | + es : "" | ||
| 71 | + } | ||
| 72 | + ], | ||
| 73 | + 11 : [ | ||
| 74 | + { | ||
| 75 | + pt : "Serviços OGC (WMS e WFS)", | ||
| 76 | + en : "", | ||
| 77 | + es : "" | ||
| 78 | + } | ||
| 79 | + ], | ||
| 80 | + 12 : [ | ||
| 81 | + { | ||
| 82 | + pt : "Catálogo de temas no formato KML", | ||
| 83 | + en : "", | ||
| 84 | + es : "" | ||
| 85 | + } | ||
| 86 | + ], | ||
| 87 | + 13 : [ | ||
| 88 | + { | ||
| 89 | + pt : "Gerador de links permanentes", | ||
| 90 | + en : "", | ||
| 91 | + es : "" | ||
| 92 | + } | ||
| 93 | + ], | ||
| 94 | + 14 : [ | ||
| 95 | + { | ||
| 96 | + pt : "Exemplos de customização da interface de mapas", | ||
| 97 | + en : "", | ||
| 98 | + es : "" | ||
| 99 | + } | ||
| 100 | + ], | ||
| 101 | + 15 : [ | ||
| 102 | + { | ||
| 103 | + pt : "Manual de uso", | ||
| 104 | + en : "", | ||
| 105 | + es : "" | ||
| 106 | + } | ||
| 107 | + ], | ||
| 108 | + 16 : [ | ||
| 109 | + { | ||
| 110 | + pt : "Registro de bugs", | ||
| 111 | + en : "", | ||
| 112 | + es : "" | ||
| 113 | + } | ||
| 114 | + ], | ||
| 115 | + 17 : [ | ||
| 116 | + { | ||
| 117 | + pt : "Guia de migração", | ||
| 118 | + en : "", | ||
| 119 | + es : "" | ||
| 120 | + } | ||
| 121 | + ], | ||
| 122 | + 18 : [ | ||
| 123 | + { | ||
| 124 | + pt : "Integre mapas em outras aplicações", | ||
| 125 | + en : "", | ||
| 126 | + es : "" | ||
| 127 | + } | ||
| 128 | + ], | ||
| 129 | + 19 : [ | ||
| 130 | + { | ||
| 131 | + pt : "ATENÇÃO!!! Essa instalação está vulnerável: edite o arquivo i3geo/ms_configura.php e altere o login e senha definidos na variável $i3geomaster.<br>Ao acessar o i3Geo em um servidor que não seja o localhost os mapas ficarão bloqueados até que essa edição seja feita.", | ||
| 132 | + en : "", | ||
| 133 | + es : "" | ||
| 134 | + } | ||
| 135 | + ], | ||
| 136 | + 20 : [ | ||
| 137 | + { | ||
| 138 | + pt : "Incluia um link apenas na sua página", | ||
| 139 | + en : "", | ||
| 140 | + es : "" | ||
| 141 | + } | ||
| 142 | + ], | ||
| 143 | + 21 : [ | ||
| 144 | + { | ||
| 145 | + pt : "Manual de administração", | ||
| 146 | + en : "", | ||
| 147 | + es : "" | ||
| 148 | + } | ||
| 149 | + ], | ||
| 150 | + 22 : [ | ||
| 151 | + { | ||
| 152 | + pt : "Google Maps com aplicação de estilo", | ||
| 153 | + en : "", | ||
| 154 | + es : "" | ||
| 155 | + } | ||
| 156 | + ], | ||
| 157 | + 23 : [ | ||
| 158 | + { | ||
| 159 | + pt : "Mapa com Open Street Map (OSM)", | ||
| 160 | + en : "", | ||
| 161 | + es : "" | ||
| 162 | + } | ||
| 163 | + ], | ||
| 164 | + 24 : [ | ||
| 165 | + { | ||
| 166 | + pt : "Documentação da API", | ||
| 167 | + en : "", | ||
| 168 | + es : "" | ||
| 169 | + } | ||
| 170 | + ], | ||
| 171 | + 25 : [ | ||
| 172 | + { | ||
| 173 | + pt : "SAIKU - análise de dados estatísticos", | ||
| 174 | + en : "", | ||
| 175 | + es : "" | ||
| 176 | + } | ||
| 177 | + ], | ||
| 178 | + 26 : [ | ||
| 179 | + { | ||
| 180 | + pt : "Teste do conversor de projeto GVP para Mapfile", | ||
| 181 | + en : "", | ||
| 182 | + es : "" | ||
| 183 | + } | ||
| 184 | + ], | ||
| 185 | + 27 : [ | ||
| 186 | + { | ||
| 187 | + pt : "Lista de Atlas cadastrados", | ||
| 188 | + en : "", | ||
| 189 | + es : "" | ||
| 190 | + } | ||
| 191 | + ], | ||
| 192 | + 28 : [ | ||
| 193 | + { | ||
| 194 | + pt : "Curso de i3Geo em Gvsig-training", | ||
| 195 | + en : "", | ||
| 196 | + es : "" | ||
| 197 | + } | ||
| 198 | + ] | ||
| 199 | + }; |
init/index.php
| @@ -212,6 +212,10 @@ botoesIni.push({ | @@ -212,6 +212,10 @@ botoesIni.push({ | ||
| 212 | "href":"../documentacao", | 212 | "href":"../documentacao", |
| 213 | "titulo":$trad(24,g_traducao_init) | 213 | "titulo":$trad(24,g_traducao_init) |
| 214 | },{ | 214 | },{ |
| 215 | + "img":"accessories-dictionary.png", | ||
| 216 | + "href":"http://moodle.gvsig-training.com/course/view.php?id=11", | ||
| 217 | + "titulo":$trad(28,g_traducao_init) | ||
| 218 | + },{ | ||
| 215 | "img":"tools-report-bug.png", | 219 | "img":"tools-report-bug.png", |
| 216 | "href":"http://svn.softwarepublico.gov.br/trac/i3geo", | 220 | "href":"http://svn.softwarepublico.gov.br/trac/i3geo", |
| 217 | "titulo":$trad(16,g_traducao_init) | 221 | "titulo":$trad(16,g_traducao_init) |