From 7f7834a4e1b489e77063904cc777d631352fe57e Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Fri, 3 Aug 2012 02:44:20 +0000 Subject: [PATCH] Agrupamento de dados e definição de classes no sistema metadados estatísticos --- admin/admin.db | Bin 116736 -> 0 bytes admin/imagens/ic_zoom.png | Bin 0 -> 552 bytes admin/js/estat_variavel.js | 292 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------- admin/php/admin.php | 8 +++++++- admin/php/classe_metaestat.php | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------- admin/php/metaestat.php | 120 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---- admin/sql/metaestat.sql | 55 ++++++++++++++++++++++++++++++++++++++++++++----------- documentacao/diagramas/metaestat.erm | 1710 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 8 files changed, 1684 insertions(+), 657 deletions(-) create mode 100644 admin/imagens/ic_zoom.png diff --git a/admin/admin.db b/admin/admin.db index b2fe7e1..8b669de 100644 Binary files a/admin/admin.db and b/admin/admin.db differ diff --git a/admin/imagens/ic_zoom.png b/admin/imagens/ic_zoom.png new file mode 100644 index 0000000..b29214a Binary files /dev/null and b/admin/imagens/ic_zoom.png differ diff --git a/admin/js/estat_variavel.js b/admin/js/estat_variavel.js index 15048f9..386e7d1 100755 --- a/admin/js/estat_variavel.js +++ b/admin/js/estat_variavel.js @@ -106,7 +106,12 @@ function montaArvore(dados){ }, timeout: 25000 }; - YAHOO.util.Connect.asyncRequest('GET', sUrl, callback); + if(node.data.codigo_variavel){ + YAHOO.util.Connect.asyncRequest('GET', sUrl, callback); + } + else{ + fnLoadComplete.call(); + } } function buildTree(){ tree = new YAHOO.widget.TreeView("tabela"); @@ -130,14 +135,14 @@ Mostra os nós de uma medida */ function adicionaNosMedidas(no,dados,redesenha) { - var tempNode,i,conteudo,d,j; + var tempNode,tempNode1,tempNode2,i,conteudo,d,j; function temaIconMode(){ var newVal = parseInt(this.value); if (newVal != currentIconMode) {currentIconMode = newVal;} } function loadNodeData(node, fnLoadComplete){ - var sUrl = "../php/metaestat.php?funcao=listaDimensao&id_medida_variavel="+node.data.id_medida_variavel, + var sUrl = "../php/metaestat.php?funcao=listaDimensao&id_medida_variavel="+node.data.no_dimensoes, callback = { success: function(oResponse){ var dados = YAHOO.lang.JSON.parse(oResponse.responseText); @@ -154,12 +159,31 @@ function adicionaNosMedidas(no,dados,redesenha) timeout: 25000 }; YAHOO.util.Connect.asyncRequest('GET', sUrl, callback); - } - if(!redesenha){ + }; + function loadNodeData1(node, fnLoadComplete){ + var sUrl = "../php/metaestat.php?funcao=listaClassificacaoMedida&id_medida_variavel="+node.data.no_classificacao, + callback = { + success: function(oResponse){ + var dados = YAHOO.lang.JSON.parse(oResponse.responseText); + adicionaNosClassificacao(node,dados,false); + oResponse.argument.fnLoadComplete(); + }, + failure: function(oResponse){ + oResponse.argument.fnLoadComplete(); + }, + argument:{ + "node": node, + "fnLoadComplete": fnLoadComplete + }, + timeout: 25000 + }; + YAHOO.util.Connect.asyncRequest('GET', sUrl, callback); + }; + if(!redesenha && !(tree.getNodeByProperty("etiqueta_adiciona_variavel",no.data.codigo_variavel))){ tempNode = new YAHOO.widget.HTMLNode( { html:"Adicionar nova medida da variável", - codigo_variavel:no.data.codigo_variavel + etiqueta_adiciona_variavel:no.data.codigo_variavel }, no, false, @@ -177,18 +201,27 @@ function adicionaNosMedidas(no,dados,redesenha) else {conteudo += " Edite para definir a nova medida!!!";} d = {html:conteudo,id_medida_variavel:dados[i].id_medida_variavel,tipo:"medida"}; - tempNode = new YAHOO.widget.HTMLNode(d, no, false,true); - tempNode.isLeaf = false; - tempNode.setDynamicLoad(loadNodeData, 1); + tempNode1 = new YAHOO.widget.HTMLNode(d, no, false,true); + tempNode1.isLeaf = false; + //tempNode1.setDynamicLoad(temp, 1); + conteudo = " Dimensões"; + d = {html:conteudo,no_dimensoes:dados[i].id_medida_variavel}; + tempNode2 = new YAHOO.widget.HTMLNode(d, tempNode1, false,true); + tempNode2.isLeaf = false; + tempNode2.setDynamicLoad(loadNodeData, 1); + conteudo = " Classificações"; + d = {html:conteudo,no_classificacao:dados[i].id_medida_variavel}; + tempNode3 = new YAHOO.widget.HTMLNode(d, tempNode1, false,true); + tempNode3.isLeaf = false; + tempNode3.setDynamicLoad(loadNodeData1, 1); } + if(redesenha){tree.draw();} } /* Function: adicionaNosDimensao Mostra os nós de uma dimensao - - */ function adicionaNosDimensao(no,dados,redesenha){ var tempNode,i,j,conteudo,d; @@ -200,7 +233,7 @@ function adicionaNosDimensao(no,dados,redesenha){ if(!redesenha) { tempNode = new YAHOO.widget.HTMLNode( { - html:"Adicionar nova dimensão" + html:"Adicionar nova dimensão" }, no, false, @@ -221,6 +254,99 @@ function adicionaNosDimensao(no,dados,redesenha){ } if(redesenha){tree.draw();} } +/* +Function: adicionaNosClassificacao + +Mostra os nós de uma dimensao +*/ +function adicionaNosClassificacao(no,dados,redesenha){ + var tempNode,i,j,conteudo,d; + function temaIconMode() { + var newVal = parseInt(this.value); + if (newVal != currentIconMode) + {currentIconMode = newVal;} + } + function loadNodeData(node, fnLoadComplete){ + var sUrl = "../php/metaestat.php?funcao=listaClasseClassificacao&id_classificacao="+node.data.id_classificacao, + callback = { + success: function(oResponse){ + var dados = YAHOO.lang.JSON.parse(oResponse.responseText); + adicionaNosClasses(node,dados,false); + oResponse.argument.fnLoadComplete(); + }, + failure: function(oResponse){ + oResponse.argument.fnLoadComplete(); + }, + argument:{ + "node": node, + "fnLoadComplete": fnLoadComplete + }, + timeout: 25000 + }; + YAHOO.util.Connect.asyncRequest('GET', sUrl, callback); + }; + if(!redesenha) { + tempNode = new YAHOO.widget.HTMLNode( + { + html:"Adicionar nova classificação" + }, + no, + false, + true + ); + tempNode.isLeaf = true; + } + for (i=0, j=dados.length; i"; + conteudo += " "; + if(dados[i].nomedimensao != "") + {conteudo += " "+dados[i].nome+" id: "+dados[i].id_classificacao+"";} + else + {conteudo += " Edite para definir a nova classificação!!!";} + d = {html:conteudo,id_classificacao:dados[i].id_classificacao,tipo:"classificacao"}; + tempNode = new YAHOO.widget.HTMLNode(d, no, false,true); + tempNode.isLeaf = false; + tempNode.setDynamicLoad(loadNodeData, 1); + } + if(redesenha){tree.draw();} +} +/* +Function: adicionaNosClasses + +Mostra os nós de uma classificacao +*/ +function adicionaNosClasses(no,dados,redesenha){ + var tempNode,i,j,conteudo,d; + function temaIconMode() { + var newVal = parseInt(this.value); + if (newVal != currentIconMode) + {currentIconMode = newVal;} + } + if(!redesenha) { + tempNode = new YAHOO.widget.HTMLNode( + { + html:"Adicionar nova classe" + }, + no, + false, + true + ); + tempNode.isLeaf = true; + } + for (i=0, j=dados.length; i"; + conteudo += " "; + if(dados[i].nomedimensao != "") + {conteudo += " "+dados[i].titulo+" id: "+dados[i].id_classe+"";} + else + {conteudo += " Edite para definir a nova classe!!!";} + d = {html:conteudo,id_classe:dados[i].id_classe,tipo:"classeClassificacao"}; + tempNode = new YAHOO.widget.HTMLNode(d, no, false,true); + tempNode.isLeaf = true; + } + if(redesenha){tree.draw();} +} + function adicionaNosVariaveis(dados,redesenha){ var i,j,d,conteudo, root = tree.getRoot(); @@ -312,6 +438,32 @@ function montaDivDimensaoMedida(i){ $i("Cagregavalores").innerHTML = temp; } } +function montaDivClassificacaoMedida(i){ + var ins = "", + param = { + "linhas":[ + {titulo:"Nome:",id:"Enome",size:"50",value:i.nome,tipo:"text",div:""} + ] + }; + ins += core_geraLinhas(param); + ins += "


"; + $i("editor_bd").innerHTML = ins; +} +function montaDivClasseClassificacao(i){ + var ins = "", + param = { + "linhas":[ + {titulo:"Título:",id:"Etitulo",size:"50",value:i.titulo,tipo:"text",div:""}, + {titulo:"Expressão (no estilo Mapserver)
exemplo (([nu_farm_funcionando] > 0) and ([nu_farm_funcionando] < 5)):",id:"Eexpressao",size:"50",value:i.expressao,tipo:"text",div:""}, + {titulo:"Vermelho:",id:"Evermelho",size:"10",value:i.vermelho,tipo:"text",div:""}, + {titulo:"Verde:",id:"Everde",size:"10",value:i.verde,tipo:"text",div:""}, + {titulo:"Azul:",id:"Eazul",size:"10",value:i.azul,tipo:"text",div:""} + ] + }; + ins += core_geraLinhas(param); + ins += "


"; + $i("editor_bd").innerHTML = ins; +} /* Function: adicionarMedidaVariavel @@ -323,8 +475,7 @@ function adicionarMedidaVariavel(codigo_variavel){ var no = tree.getNodeByProperty("codigo_variavel",codigo_variavel), sUrl = "../php/metaestat.php?funcao=alteraMedidaVariavel&codigo_variavel="+codigo_variavel, callback = { - success: function(oResponse) - { + success: function(oResponse){ var dados = YAHOO.lang.JSON.parse(oResponse.responseText); adicionaNosMedidas(no,[dados],true); editar('medidaVariavel',dados.id_medida_variavel); @@ -344,7 +495,7 @@ Adiciona uma nova dimensao a uma medida de variavel function adicionarDimensaoMedida(id_medida_variavel){ var no = tree.getNodeByProperty("id_medida_variavel",id_medida_variavel), sUrl = "../php/metaestat.php?funcao=alteraDimensaoMedida&id_medida_variavel="+id_medida_variavel, - callback = { + callback = { success: function(oResponse){ var dados = YAHOO.lang.JSON.parse(oResponse.responseText); adicionaNosDimensao(no,[dados],true); @@ -356,6 +507,44 @@ function adicionarDimensaoMedida(id_medida_variavel){ core_makeRequest(sUrl,callback); } /* +Function: adicionarClassificacaoMedida + +Adiciona uma nova classificacao a uma medida de variavel +*/ +function adicionarClassificacaoMedida(id_medida_variavel){ + var no = tree.getNodeByProperty("no_classificacao",id_medida_variavel), + sUrl = "../php/metaestat.php?funcao=alteraClassificacaoMedida&id_medida_variavel="+id_medida_variavel, + callback = { + success: function(oResponse){ + var dados = YAHOO.lang.JSON.parse(oResponse.responseText); + adicionaNosClassificacao(no,[dados],true); + editar('classificacaoMedida',dados.id_classificacao); + }, + failure:core_handleFailure, + argument: { foo:"foo", bar:"bar" } + }; + core_makeRequest(sUrl,callback); +} +/* +Function: adicionarClasseClassificacao + +Adiciona uma nova classe a uma classificacao +*/ +function adicionarClasseClassificacao(id_classificacao){ + var no = tree.getNodeByProperty("id_classificacao",id_classificacao), + sUrl = "../php/metaestat.php?funcao=alteraClasseClassificacao&id_classificacao="+id_classificacao, + callback = { + success: function(oResponse){ + var dados = YAHOO.lang.JSON.parse(oResponse.responseText); + adicionaNosClasses(no,[dados],true); + editar('classeClassificacao',dados.id_classe); + }, + failure:core_handleFailure, + argument: { foo:"foo", bar:"bar" } + }; + core_makeRequest(sUrl,callback); +} +/* Function: editar Abre o editor de um nó @@ -386,6 +575,18 @@ function editar(tipo,id) { montaDivDimensaoMedida(dados); //document.getElementById("Eid_variavel").style.width = "200px"; } + if(tipo == "classificacaoMedida"){ + dados = YAHOO.lang.JSON.parse(o.responseText); + core_montaEditor("gravaDados('classificacaoMedida','"+id+"')","450px","200px","","Editor de classificação"); + montaDivClassificacaoMedida(dados); + //document.getElementById("Eid_variavel").style.width = "200px"; + } + if(tipo == "classeClassificacao"){ + dados = YAHOO.lang.JSON.parse(o.responseText); + core_montaEditor("gravaDados('classeClassificacao','"+id+"')","450px","200px","","Editor de classe"); + montaDivClasseClassificacao(dados); + //document.getElementById("Eid_variavel").style.width = "200px"; + } core_carregando("desativa"); } catch(e){core_handleFailure(e,o.responseText);} @@ -402,6 +603,12 @@ function editar(tipo,id) { if(tipo == "dimensaoMedida"){ sUrl = "../php/metaestat.php?funcao=listaDimensao&id_dimensao_medida="+id; } + if(tipo == "classificacaoMedida"){ + sUrl = "../php/metaestat.php?funcao=listaClassificacaoMedida&id_classificacao="+id; + } + if(tipo == "classeClassificacao"){ + sUrl = "../php/metaestat.php?funcao=listaClasseClassificacao&id_classe="+id; + } if(sUrl){ core_makeRequest(sUrl,callback); } @@ -421,9 +628,10 @@ function sql(tipo,id) { if(tipo == "medidaVariavel"){ var ins = "", dados = YAHOO.lang.JSON.parse(o.responseText); - core_montaEditor("","450px","200px","","SQL"); - ins = "

Select:

"+dados.sql; - ins += "

Mapserver:

"+dados.sqlmapserver; + core_montaEditor("","480px","300px","","SQL"); + ins = "

Select simples: "+dados.sql; + ins += "

Mapserver: "+dados.sqlmapserver; + ins += "

Colunas: "+dados.colunas; ins +="

Incluir todas as colunas no resultado"; ins +="

Filtro opcional (exemplo: valor = 1)
"; ins += ""; @@ -431,7 +639,9 @@ function sql(tipo,id) { ins += ""; ins +="

Tipo de layer (para o caso de mapas ou mapfiles, podendo ser point,line ou polygon)
"; ins += ""; - ins += '

'; + ins +="

Codigo da classificação que será usada para mostrar o mapa
"; + ins += ""; + ins += '

'; ins += ' '; ins += ' '; ins += ' '; @@ -444,7 +654,7 @@ function sql(tipo,id) { if($i("incluirtodascolunas").checked === true){ colunas = 1; } - window.open('../php/metaestat.php?funcao=dadosMedidaVariavel&formato=json&id_medida_variavel='+id+"&filtro="+$i("filtrosql").value+"&todasascolunas="+colunas); + window.open('../php/metaestat.php?funcao=dadosMedidaVariavel&formato=json&id_medida_variavel='+id+"&filtro="+$i("filtrosql").value+"&todasascolunas="+colunas+"&agruparpor="+$i("agruparsql").value); }; new YAHOO.widget.Button("sumarioestat"); $i("sumarioestat-button").onclick = function(){ @@ -456,11 +666,11 @@ function sql(tipo,id) { if($i("incluirtodascolunas").checked === true){ colunas = 1; } - window.open('../php/metaestat.php?funcao=mapfileMedidaVariavel&formato=json&id_medida_variavel='+id+"&filtro="+$i("filtrosql").value+"&todasascolunas="+colunas+"&tipolayer="+$i("tipolayer").value); + window.open('../php/metaestat.php?funcao=mapfileMedidaVariavel&formato=json&id_medida_variavel='+id+"&filtro="+$i("filtrosql").value+"&todasascolunas="+colunas+"&tipolayer="+$i("tipolayer").value+"&id_classificacao="+$i("classificacao").value+"&agruparpor="+$i("agruparsql").value); }; new YAHOO.widget.Button("i3geoestat"); $i("i3geoestat-button").onclick = function(){ - var callback = { + var sUrl,callback = { success: function(oResponse){ var dados = YAHOO.lang.JSON.parse(oResponse.responseText); window.open("../../ms_criamapa.php?temasa="+dados.mapfile+"&layers="+dados.layer); @@ -473,7 +683,7 @@ function sql(tipo,id) { if($i("incluirtodascolunas").checked === true){ colunas = 1; } - sUrl = '../php/metaestat.php?funcao=mapfileMedidaVariavel&formato=json&id_medida_variavel='+id+"&filtro="+$i("filtrosql").value+"&todasascolunas="+colunas+"&tipolayer="+$i("tipolayer").value; + sUrl = '../php/metaestat.php?funcao=mapfileMedidaVariavel&formato=json&id_medida_variavel='+id+"&filtro="+$i("filtrosql").value+"&todasascolunas="+colunas+"&tipolayer="+$i("tipolayer").value+"&id_classificacao="+$i("classificacao").value+"&agruparpor="+$i("agruparsql").value; core_carregando("ativa"); core_makeRequest(sUrl,callback); }; @@ -554,10 +764,7 @@ function sql(tipo,id) { }; } if(tipo == "dimensaoMedida"){ - var dados = YAHOO.lang.JSON.parse(o.responseText); - core_montaEditor("gravaDados('dimensaoMedida','"+id+"')","500px","300px","","Editor de dimens&oatilde;es"); - montaDivDimensaoMedida(dados); - //document.getElementById("Eid_variavel").style.width = "200px"; + } core_carregando("desativa"); } @@ -598,6 +805,14 @@ function excluir(tipo,id){ no = tree.getNodeByProperty("id_dimensao_medida",id); sUrl = "../php/metaestat.php?funcao=excluirDimensaoMedida&id_dimensao_medida="+id; } + if(tipo == "classificacaoMedida") { + no = tree.getNodeByProperty("id_classificacao",id); + sUrl = "../php/metaestat.php?funcao=excluirClassificacaoMedida&id_classificacao="+id; + } + if(tipo == "classeClassificacao") { + no = tree.getNodeByProperty("id_classe",id); + sUrl = "../php/metaestat.php?funcao=excluirClasseClassificacao&id_classe="+id; + } if(sUrl) {core_excluiNoTree(sUrl,no,mensagem);} } @@ -631,6 +846,17 @@ function gravaDados(tipo,id){ par = "&id_dimensao_medida="+id; prog = "../php/metaestat.php?funcao=alteraDimensaoMedida"; } + if(tipo == "classificacaoMedida"){ + campos = new Array("nome"); + par = "&id_classificacao="+id; + prog = "../php/metaestat.php?funcao=alteraClassificacaoMedida"; + } + if(tipo == "classeClassificacao"){ + campos = new Array("titulo","expressao","azul","verde","vermelho"); + par = "&id_classe="+id; + prog = "../php/metaestat.php?funcao=alteraClasseClassificacao"; + } + for (i=0;i id: "+id+""; + no.getContentEl().getElementsByTagName("span")[0].style.color = ""; + no.html = no.getContentEl().innerHTML; + } + if(tipo == "classeClassificacao"){ + no = tree.getNodeByProperty("id_classe",id); + no.getContentEl().getElementsByTagName("span")[0].innerHTML = ""+document.getElementById("Etitulo").value+" id: "+id+""; + no.getContentEl().getElementsByTagName("span")[0].style.color = ""; + no.html = no.getContentEl().innerHTML; + } core_carregando("desativa"); } YAHOO.example.container.panelEditor.destroy(); diff --git a/admin/php/admin.php b/admin/php/admin.php index bec5a99..35b5818 100644 --- a/admin/php/admin.php +++ b/admin/php/admin.php @@ -219,6 +219,12 @@ function verificaFilhos() try { $res = false; + if($tabela == "i3geoestat_classificacao") + { + $r = pegaDados("select * from ".$esquemaadmin."i3geoestat_classes where id_classificacao=$id"); + if(count($r) > 0) + $res = true; + } if($tabela == "i3geoestat_conexao") { $r = pegaDados("select * from ".$esquemaadmin."i3geoestat_medida_variavel where codigo_estat_conexao=$id"); @@ -245,7 +251,7 @@ function verificaFilhos() } if($tabela == "i3geoestat_medida_variavel") { - $r = pegaDados("select * from ".$esquemaadmin."i3geoestat_medidadimensao where id_medida_variavel=$id"); + $r = pegaDados("select * from ".$esquemaadmin."i3geoestat_dimensao_medida where id_medida_variavel=$id"); if(count($r) > 0) $res = true; } diff --git a/admin/php/classe_metaestat.php b/admin/php/classe_metaestat.php index a18786b..2f42ffa 100755 --- a/admin/php/classe_metaestat.php +++ b/admin/php/classe_metaestat.php @@ -111,6 +111,9 @@ class Metaestat{ } } function converteTexto($texto){ + if($texto == "0"){ + return "0"; + } if(empty($texto)){ return ""; } @@ -199,20 +202,29 @@ class Metaestat{ $todasascolunas - opcional */ - function sqlMedidaVariavel($id_medida_variavel,$todasascolunas){ + function sqlMedidaVariavel($id_medida_variavel,$todasascolunas,$agruparpor=""){ $filtro = false; $dados = $this->listaMedidaVariavel("",$id_medida_variavel); $dadosgeo = $this->listaTipoRegiao($dados["codigo_tipo_regiao"]); if($todasascolunas == 0){ $sql = " SELECT d.".$dados["colunavalor"].",d.".$dados["colunaidgeo"]; + if(!empty($agruparpor)){ + $sql .= ",d.".$agruparpor; + } $sqlgeo = $sql.",g.".$dadosgeo["colunageo"]; } else{ $sql = " SELECT d.* "; $sqlgeo = $sql.",g.".$dadosgeo["colunageo"]; } - $sql .= " FROM ".$dados["esquemadb"].".".$dados["tabela"]." as d "; - $sqlgeo .= " FROM ".$dados["esquemadb"].".".$dados["tabela"]." as d,".$dadosgeo["esquemadb"].".".$dadosgeo["tabela"]." as g "; + if(empty($agruparpor)){ + $sql .= " FROM ".$dados["esquemadb"].".".$dados["tabela"]." as d "; + $sqlgeo .= " FROM ".$dados["esquemadb"].".".$dados["tabela"]." as d,".$dadosgeo["esquemadb"].".".$dadosgeo["tabela"]." as g "; + } + else{ + $sqlgeo .= " FROM (SELECT sum(".$dados["colunavalor"].") as ".$dados["colunavalor"].",".$dados["colunaidgeo"].",".$agruparpor." FROM ".$dados["esquemadb"].".".$dados["tabela"] ." group by ".$agruparpor.",".$dados["colunaidgeo"].") as d, ".$dadosgeo["esquemadb"].".".$dadosgeo["tabela"]." as g"; + $sql .= " FROM (SELECT sum(".$dados["colunavalor"].") as ".$dados["colunavalor"].",".$dados["colunaidgeo"].",".$agruparpor." FROM ".$dados["esquemadb"].".".$dados["tabela"] ." group by ".$agruparpor.",".$dados["colunaidgeo"].") as d "; + } if(!empty($dados["filtro"])){ $sql .= " WHERE ".$dados["filtro"]; $sqlgeo .= " WHERE ".$dados["filtro"]; @@ -228,9 +240,10 @@ class Metaestat{ } //atencao: cuidado ao alterar essa string pois ') as foo' pode ser usado para replace em outras funcoes $sqlgeo = $dadosgeo["colunageo"]." from ($sqlgeo) as foo using unique ".$dados["colunaidgeo"]." using srid=".$dadosgeo["srid"]; - return array("sql"=>$sql,"sqlmapserver"=>$sqlgeo,"filtro"=>$filtro); + $colunas = $this->colunasTabela($dados["codigo_estat_conexao"],$dados["esquemadb"],$dados["tabela"]); + return array("sql"=>$sql,"sqlmapserver"=>$sqlgeo,"filtro"=>$filtro,"colunas"=>$colunas); } - function mapfileMedidaVariavel($id_medida_variavel,$filtro="",$todasascolunas = 0,$tipolayer="polygon",$titulolayer=""){ + function mapfileMedidaVariavel($id_medida_variavel,$filtro="",$todasascolunas = 0,$tipolayer="polygon",$titulolayer="",$id_classificacao="",$agruparpor=""){ if(empty($tipolayer)){ $tipolayer = "polygon"; } @@ -238,15 +251,19 @@ class Metaestat{ if($titulolayer == ""){ $titulolayer = $meta["nomemedida"]; } + $titulolayer = mb_convert_encoding($titulolayer,"ISO-8859-1",mb_detect_encoding($titulolayer)); $conexao = $this->listaConexao($meta["codigo_estat_conexao"],true); $conexao = "user=".$conexao["usuario"]." password=".$conexao["senha"]." dbname=".$conexao["bancodedados"]." host=".$conexao["host"]." port=".$conexao["porta"].""; //echo $conexao;exit; - $sql = $this->sqlMedidaVariavel($id_medida_variavel,$todasascolunas); + $sql = $this->sqlMedidaVariavel($id_medida_variavel,$todasascolunas,$agruparpor); $sqlf = $sql["sqlmapserver"]; if(!empty($filtro)){ - $sqlf = str_replace(") as foo"," AND ".$filtro." ) foo",$sqlf); + $sqlf = str_replace(") as foo"," AND ".$filtro." ) as foo",$sqlf); + } + $classes = ""; + if(!empty($id_classificacao)){ + $classes = $this->listaClasseClassificacao($id_classificacao); } - //echo $sqlf;exit; $rand = $this->nomeRandomico(); $arq = $this->dir_tmp."/".$rand.".map"; $dados[] = "MAP"; @@ -263,12 +280,25 @@ class Metaestat{ $dados[] = ' TEMA "'.$titulolayer.'"'; $dados[] = ' CLASSE "SIM"'; $dados[] = ' END'; - $dados[] = ' CLASS'; - $dados[] = ' NAME ""'; - $dados[] = ' STYLE'; - $dados[] = ' COLOR 200 0 0'; - $dados[] = ' END'; - $dados[] = ' END'; + if($classes == ""){ + $dados[] = ' CLASS'; + $dados[] = ' NAME ""'; + $dados[] = ' STYLE'; + $dados[] = ' COLOR 200 0 0'; + $dados[] = ' END'; + $dados[] = ' END'; + } + else{ + foreach($classes as $classe){ + $dados[] = ' CLASS'; + $dados[] = ' NAME "'.mb_convert_encoding($classe["titulo"],"ISO-8859-1",mb_detect_encoding($titulolayer)).'"'; + $dados[] = ' EXPRESSION '.$classe["expressao"]; + $dados[] = ' STYLE'; + $dados[] = ' COLOR '.$classe["vermelho"].' '.$classe["verde"].' '.$classe["azul"]; + $dados[] = ' END'; + $dados[] = ' END'; + } + } $dados[] = "END"; $dados[] = "END"; $fp = fopen($arq,"w"); @@ -277,8 +307,8 @@ class Metaestat{ } return array("mapfile"=>$arq,"layer"=>$rand,"titulolayer"=>$titulolayer); } - function dadosMedidaVariavel($id_medida_variavel,$filtro="",$todasascolunas = 0){ - $sql = $this->sqlMedidaVariavel($id_medida_variavel,$todasascolunas); + function dadosMedidaVariavel($id_medida_variavel,$filtro="",$todasascolunas = 0,$agruparpor = ""){ + $sql = $this->sqlMedidaVariavel($id_medida_variavel,$todasascolunas,$agruparpor); $sqlf = $sql["sql"]; if($sql["filtro"] == true){ if(!empty($filtro)){ @@ -503,7 +533,7 @@ class Metaestat{ } } /* - Function: alteraDimensaoMedida + Function: alteraDimensaoMedida Altera uma dimensao de uma medida ou cria uma nova */ @@ -530,7 +560,59 @@ class Metaestat{ return "Error!: " . $e->getMessage(); } } + /* + Function: alteraDimensaoMedida + Altera uma dimensao de uma medida ou cria uma nova + */ + function alteraClassificacaoMedida($id_medida_variavel,$id_classificacao="",$nome){ + try { + if($id_classificacao != ""){ + if($this->convUTF){ + $nome = utf8_encode($nome); + } + $this->dbhw->query("UPDATE ".$this->esquemaadmin."i3geoestat_classificacao SET nome = '$nome' WHERE id_classificacao = $id_classificacao"); + $retorna = $id_dimensao_medida; + } + else{ + $retorna = $this->insertId("i3geoestat_classificacao","nome","id_classificacao"); + if($retorna){ + $this->dbhw->query("UPDATE ".$this->esquemaadmin."i3geoestat_classificacao SET id_medida_variavel = $id_medida_variavel WHERE id_classificacao = $retorna"); + } + } + return $retorna; + } + catch (PDOException $e) { + return "Error!: " . $e->getMessage(); + } + } + /* + Function: alteraClasseClassificacao + + Altera uma classe de uma classificacao + */ + function alteraClasseClassificacao($id_classificacao,$id_classe="",$titulo="",$expressao="",$vermelho="",$verde="",$azul=""){ + try { + if($id_classe != ""){ + if($this->convUTF){ + $nome = utf8_encode($nome); + } + //echo "UPDATE ".$this->esquemaadmin."i3geoestat_classe SET azul = '$azul', verde = '$verde', vermelho = '$vermelho',expressao = '$expressao', titulo = '$titulo' WHERE id_classe = $id_classe";exit; + $this->dbhw->query("UPDATE ".$this->esquemaadmin."i3geoestat_classes SET azul = '$azul', verde = '$verde', vermelho = '$vermelho',expressao = '$expressao', titulo = '$titulo' WHERE id_classe = $id_classe"); + $retorna = $id_classe; + } + else{ + $retorna = $this->insertId("i3geoestat_classes","titulo","id_classe"); + if($retorna){ + $this->dbhw->query("UPDATE ".$this->esquemaadmin."i3geoestat_classes SET id_classificacao = $id_classificacao WHERE id_classe = $retorna"); + } + } + return $retorna; + } + catch (PDOException $e) { + return "Error!: " . $e->getMessage(); + } + } /* Function: listaUnidadeMedida @@ -566,6 +648,38 @@ class Metaestat{ return $this->execSQL($sql,$codigo_variavel); } /* + Function: listaClassificacaoMedida + + Lista as classificacoes de uma medida de uma variavel + + Parametros: + + $id_medida_variavel + */ + function listaClassificacaoMedida($id_medida_variavel,$id_classificacao=""){ + if(!empty($id_medida_variavel)){ + $sql = "SELECT * from ".$this->esquemaadmin."i3geoestat_classificacao WHERE id_medida_variavel = $id_medida_variavel"; + } + if(!empty($id_classificacao)){ + $sql = "SELECT * from ".$this->esquemaadmin."i3geoestat_classificacao WHERE id_classificacao = $id_classificacao"; + } + return $this->execSQL($sql,$id_classificacao); + } + /* + Function: listaClasseClassificacao + + Lista as classes de uma classificacao + */ + function listaClasseClassificacao($id_classificacao,$id_classe=""){ + if(!empty($id_classificacao)){ + $sql = "SELECT * from ".$this->esquemaadmin."i3geoestat_classes WHERE id_classificacao = $id_classificacao"; + } + if(!empty($id_classe)){ + $sql = "SELECT * from ".$this->esquemaadmin."i3geoestat_classes WHERE id_classe = $id_classe"; + } + return $this->execSQL($sql,$id_classe); + } + /* Function: listaMedidaVariavel Lista as medidas das variaveis cadastradas para uma variavel ou uma unica medida @@ -579,8 +693,6 @@ class Metaestat{ function listaMedidaVariavel($codigo_variavel,$id_medida_variavel=""){ $sql = "SELECT i3geoestat_medida_variavel.* "; $sql .= "FROM ".$this->esquemaadmin."i3geoestat_variavel "; - //$sql .= "INNER JOIN ".$this->esquemaadmin."i3geoestat_unidade_medida "; - //$sql .= "ON i3geoestat_medida_variavel.codigo_unidade_medida = i3geoestat_unidade_medida.codigo_unidade_medida "; $sql .= "INNER JOIN ".$this->esquemaadmin."i3geoestat_medida_variavel "; $sql .= "ON i3geoestat_variavel.codigo_variavel = i3geoestat_medida_variavel.codigo_variavel "; if($codigo_variavel != ""){ @@ -701,13 +813,17 @@ class Metaestat{ return $res; } function colunasTabela($codigo_estat_conexao,$nome_esquema,$nome_tabela){ + $colunas = array(); $c = $this->listaConexao($codigo_estat_conexao,true); $dbhold = $this->dbh; $dbh = new PDO('pgsql:dbname='.$c["bancodedados"].';user='.$c["usuario"].';password='.$c["senha"].';host='.$c["host"].';port='.$c["porta"]); $this->dbh = $dbh; $res = $this->execSQL("SELECT column_name as coluna FROM information_schema.columns where table_schema = '$nome_esquema' and table_name = '$nome_tabela'"); $this->dbh = $dbhold; - return $res; + foreach($res as $c){ + $colunas[] = $c["coluna"]; + } + return $colunas; } function descreveColunasTabela($codigo_estat_conexao,$nome_esquema,$nome_tabela){ $c = $this->listaConexao($codigo_estat_conexao,true); diff --git a/admin/php/metaestat.php b/admin/php/metaestat.php index 579d029..478924b 100644 --- a/admin/php/metaestat.php +++ b/admin/php/metaestat.php @@ -91,6 +91,34 @@ switch (strtoupper($funcao)) exit; break; /* + Valor: LISTACLASSIFICACAOMEDIDA + + Lista as classificacoes de uma medida de uma variavel + + Retorno: + + {JSON} + */ + case "LISTACLASSIFICACAOMEDIDA": + $m = new Metaestat(); + retornaJSON($m->listaClassificacaoMedida($id_medida_variavel,$id_classificacao)); + exit; + break; + /* + Valor: LISTACLASSECLASSIFICACAO + + Lista as classes de uma classificacoes + + Retorno: + + {JSON} + */ + case "LISTACLASSECLASSIFICACAO": + $m = new Metaestat(); + retornaJSON($m->listaClasseClassificacao($id_classificacao,$id_classe)); + exit; + break; + /* Valor: LISTAMEDIDAVARIAVEL Lista das medidas de uma variavel @@ -221,6 +249,46 @@ switch (strtoupper($funcao)) exit; break; /* + Valor: ALTERACLASSIFICACAOMEDIDA + + Altera os dados de uma classificacao de uma medida + + Retorno: + + {JSON} + */ + case "ALTERACLASSIFICACAOMEDIDA": + $m = new Metaestat(); + if(empty($id_classificacao)){ + $id_classificacao = $m->alteraClassificacaoMedida($id_medida_variavel); + } + else{ + $m->alteraClassificacaoMedida("",$id_classificacao,$nome); + } + retornaJSON($m->listaClassificacaoMedida($id_medida_variavel,$id_classificacao)); + exit; + break; + /* + Valor: ALTERACLASSECLASSIFICACAO + + Altera os dados de uma classe de uma classificacao + + Retorno: + + {JSON} + */ + case "ALTERACLASSECLASSIFICACAO": + $m = new Metaestat(); + if(empty($id_classe)){ + $id_classe = $m->alteraClasseClassificacao($id_classificacao); + } + else{ + $m->alteraClasseClassificacao("",$id_classe,$titulo,$expressao,$vermelho,$verde,$azul); + } + retornaJSON($m->listaClasseClassificacao($id_classificacao,$id_classe)); + exit; + break; + /* Valor: ALTERARUNIDADEMEDIDA Altera a tabela de unidades de medida @@ -431,6 +499,7 @@ switch (strtoupper($funcao)) $tabela = "i3geoestat_medida_variavel"; $id = $id_medida_variavel; $f = verificaFilhos(); + if(!$f){ $m = new Metaestat(); retornaJSON($m->excluirRegistro("i3geoestat_medida_variavel","id_medida_variavel",$id)); @@ -440,13 +509,13 @@ switch (strtoupper($funcao)) exit; break; /* - Valor: EXCLUIRDIMENSAOMEDIDA + Valor: EXCLUIRDIMENSAOMEDIDA Exclui uma medida da variavel Parametros: - codigo_variavel + id_dimensao_medida Retorno: @@ -458,6 +527,49 @@ switch (strtoupper($funcao)) exit; break; /* + Valor: EXCLUIRCLASSIFICACAOMEDIDA + + Exclui uma classificacao de uma medida da variavel + + Parametros: + + id_dimensao_medida + + Retorno: + + {JSON} + */ + case "EXCLUIRCLASSIFICACAOMEDIDA": + $tabela = "i3geoestat_classificacao"; + $id = $id_classificacao; + $f = verificaFilhos(); + if(!$f){ + $m = new Metaestat(); + retornaJSON($m->excluirRegistro("i3geoestat_classificacao","id_classificacao",$id)); + } + else + retornaJSON("erro"); + exit; + break; + /* + Valor: EXCLUIRCLASSECLASSIFICACAO + + Exclui uma classe de uma classificacao + + Parametros: + + id_classe + + Retorno: + + {JSON} + */ + case "EXCLUIRCLASSECLASSIFICACAO": + $m = new Metaestat(); + retornaJSON($m->excluirRegistro("i3geoestat_classes","id_classe",$id_classe)); + exit; + break; + /* Valor: LISTADADOSTABELASAUXILIARES Lista os valores das tabelas auxiliares @@ -511,7 +623,7 @@ switch (strtoupper($funcao)) case "DADOSMEDIDAVARIAVEL": $m = new Metaestat(); if($formato == "json"){ - retornaJSON($m->dadosMedidaVariavel($id_medida_variavel,$filtro,$todasascolunas)); + retornaJSON($m->dadosMedidaVariavel($id_medida_variavel,$filtro,$todasascolunas,$agruparpor)); } exit; break; @@ -537,7 +649,7 @@ switch (strtoupper($funcao)) case "MAPFILEMEDIDAVARIAVEL": $m = new Metaestat(); if($formato == "json"){ - retornaJSON($m->mapfileMedidaVariavel($id_medida_variavel,$filtro,$todasascolunas,$tipolayer,$titulolayer)); + retornaJSON($m->mapfileMedidaVariavel($id_medida_variavel,$filtro,$todasascolunas,$tipolayer,$titulolayer,$id_classificacao,$agruparpor)); } exit; break; diff --git a/admin/sql/metaestat.sql b/admin/sql/metaestat.sql index 67e6191..7eebfc0 100644 --- a/admin/sql/metaestat.sql +++ b/admin/sql/metaestat.sql @@ -1,6 +1,8 @@ /* drop tables */ +drop table i3geoestat_classes; +drop table i3geoestat_classificacao; drop table i3geoestat_dimensao_medida; drop table i3geoestat_medida_variavel; drop table i3geoestat_tipo_regiao; @@ -14,6 +16,15 @@ drop table i3geoestat_variavel; /* create tables */ +-- lista controlada de tipos de período de tempo +create table i3geoestat_tipo_periodo +( + codigo_tipo_periodo integer not null unique primary key autoincrement, + nome text, + descricao text +); + + -- lista controlada dos parâmetros de conexão com o banco de dados onde residem dados create table i3geoestat_conexao ( @@ -57,15 +68,6 @@ create table i3geoestat_tipo_regiao ); --- lista controlada de tipos de período de tempo -create table i3geoestat_tipo_periodo -( - codigo_tipo_periodo integer not null unique primary key autoincrement, - nome text, - descricao text -); - - -- tabela com o nome e descrição de uma variável variável create table i3geoestat_variavel ( @@ -108,10 +110,10 @@ create table i3geoestat_medida_variavel filtro text, -- titulo da medida nomemedida text, - foreign key (codigo_tipo_regiao) - references i3geoestat_tipo_regiao (codigo_tipo_regiao), foreign key (codigo_tipo_periodo) references i3geoestat_tipo_periodo (codigo_tipo_periodo), + foreign key (codigo_tipo_regiao) + references i3geoestat_tipo_regiao (codigo_tipo_regiao), foreign key (codigo_estat_conexao) references i3geoestat_conexao (codigo_estat_conexao), foreign key (codigo_variavel) @@ -121,6 +123,37 @@ create table i3geoestat_medida_variavel ); +-- lista de classificacoes de uma medida de variável +create table i3geoestat_classificacao +( + id_classificacao integer not null unique primary key autoincrement, + nome text, + id_medida_variavel integer, + foreign key (id_medida_variavel) + references i3geoestat_medida_variavel (id_medida_variavel) +); + + +-- classes pertencentes a uma classificação +create table i3geoestat_classes +( + id_classe integer not null unique primary key autoincrement, + -- expressao no formato válido do mapserver que define os componentes da classe + expressao text, + -- título da classe + titulo text, + -- componente r da cor utilizada para representar a classe + vermelho text, + -- componente g da cor utilizada para representar a classe + verde text, + -- componente b da cor utilizada para representar a classe + azul text, + id_classificacao integer, + foreign key (id_classificacao) + references i3geoestat_classificacao (id_classificacao) +); + + create table i3geoestat_dimensao_medida ( id_dimensao_medida integer not null unique primary key autoincrement, diff --git a/documentacao/diagramas/metaestat.erm b/documentacao/diagramas/metaestat.erm index 3fdc204..fd89c25 100644 --- a/documentacao/diagramas/metaestat.erm +++ b/documentacao/diagramas/metaestat.erm @@ -11,7 +11,7 @@ 0 1.0 - -362 + 0 -2 230 @@ -47,7 +47,7 @@ false false - false + true true true true @@ -110,7 +110,7 @@ false 2012-07-17 15:03:53 - 2012-07-27 00:16:43 + 2012-08-02 11:58:33 Project Name @@ -164,13 +164,26 @@ null false + componente B da cor utilizada para representar a classe + azul + azul + text + + + 2 + null + null + false + null + false + Nome do banco de dados bancodedados bancodedados text - 2 + 3 null null false @@ -183,7 +196,7 @@ integer - 3 + 4 null null false @@ -196,7 +209,7 @@ integer - 4 + 5 null null false @@ -209,7 +222,7 @@ integer - 5 + 6 null null false @@ -222,7 +235,7 @@ integer - 6 + 7 null null false @@ -235,7 +248,7 @@ integer - 7 + 8 null null false @@ -248,7 +261,7 @@ text - 8 + 9 null null false @@ -261,7 +274,7 @@ text - 9 + 10 null null false @@ -274,7 +287,7 @@ text - 10 + 11 null null false @@ -287,7 +300,7 @@ text - 11 + 12 null null false @@ -300,7 +313,7 @@ text - 12 + 13 null null false @@ -313,7 +326,7 @@ text - 13 + 14 null null false @@ -326,7 +339,7 @@ text - 14 + 15 null null false @@ -339,7 +352,7 @@ text - 15 + 16 null null false @@ -352,7 +365,7 @@ text - 16 + 17 null null false @@ -365,7 +378,7 @@ text - 17 + 18 null null false @@ -378,7 +391,7 @@ text - 18 + 19 null null false @@ -391,7 +404,20 @@ text - 19 + 20 + null + null + false + null + false + + Expressao no formato válido do Mapserver que define os componentes da classe + expressao + expressao + text + + + 21 null null false @@ -404,7 +430,7 @@ text - 20 + 22 null null false @@ -417,7 +443,7 @@ text - 21 + 23 null null false @@ -430,7 +456,33 @@ integer - 22 + 24 + null + null + false + null + false + + + id_classe + id_classe + integer + + + 25 + null + null + false + null + false + + + id_classificacao + id_classificacao + integer + + + 26 null null false @@ -443,7 +495,7 @@ integer - 23 + 27 null null false @@ -456,7 +508,7 @@ integer - 24 + 28 null null false @@ -469,7 +521,7 @@ text - 25 + 29 null null false @@ -482,7 +534,7 @@ text - 26 + 30 null null false @@ -495,7 +547,20 @@ text - 27 + 31 + null + null + false + null + false + + + nome + nome + text + + + 32 null null false @@ -508,7 +573,7 @@ text - 28 + 33 null null false @@ -521,7 +586,7 @@ text - 29 + 34 null null false @@ -534,7 +599,7 @@ text - 30 + 35 null null false @@ -547,7 +612,7 @@ integer - 31 + 36 null null false @@ -560,7 +625,7 @@ integer - 32 + 37 null null false @@ -573,7 +638,7 @@ text - 33 + 38 null null false @@ -586,7 +651,7 @@ text - 34 + 39 null null false @@ -599,7 +664,7 @@ text - 35 + 40 null null false @@ -612,7 +677,7 @@ text - 36 + 41 null null false @@ -625,7 +690,7 @@ text - 37 + 42 null null false @@ -638,7 +703,20 @@ text - 38 + 43 + null + null + false + null + false + + Título da classe + titulo + titulo + text + + + 44 null null false @@ -650,6 +728,32 @@ usuario text + + 45 + null + null + false + null + false + + componente G da cor utilizada para representar a classe + verde + verde + text + + + 46 + null + null + false + null + false + + componente R da cor utilizada para representar a classe + vermelho + vermelho + text + @@ -705,25 +809,8 @@ Os nomes de colunas podem receber funções, por exemplo, pode-se agregar as geometrias de COLUNAGEO ou somar valores de COLUNAVALOR - - 3 - 111 - 188 - Ubuntu - 9 - 754 - 522 - - 255 - 255 - 255 - - - - As colunas obtidas da junção de medida_variavel com tipo_regiao podem ser utilizadas para definir uma dimensão - - 4 + 3107242Ubuntu @@ -745,7 +832,7 @@ - 5 + 6 0 @@ -777,7 +864,7 @@ - 25 + 29 1 @@ -809,7 +896,7 @@ - 34 + 39 2 @@ -841,7 +928,7 @@ - 31 + 36 3 @@ -873,7 +960,7 @@ - 30 + 35 4 @@ -914,23 +1001,28 @@
- 5 - 149 + 4 + 275292Ubuntu9 - 711 - 273 + -336 + 236 - 160 - 32 - 240 + 255 + 165 + 0 - + 0 - 10 - 5 + 0 + 4 + + + 1 + 6 + 4 1..n 1 true @@ -944,21 +1036,16 @@ null null - - 1 - 3 - 5 - - i3geoestat_dimensao_medida - i3geoestat_dimensao_medida - + i3geoestat_tipo_regiao + i3geoestat_tipo_regiao + Identifica as tabelas que possuem colunas com geometrias de determinado local ou região - 22 + 5 5 @@ -990,7 +1077,7 @@ - 7 + 34 6 @@ -1022,7 +1109,7 @@ - 27 + 17 7 @@ -1054,17 +1141,18 @@ - 14 8 + 19 + 1 - text + integer false - false + true false false false @@ -1086,15 +1174,15 @@ - 0 + 19 9 - integer + text - 0 + false false false @@ -1118,18 +1206,17 @@ + 42 10 - 34 - 0 - integer + text false - true + false false false false @@ -1150,74 +1237,21 @@ 0 - - - - - - - - -
- - 6 - 275 - 292 - Ubuntu - 9 - -336 - 236 - - 255 - 165 - 0 - - - - 2 - 0 - 6 - - - 3 - 8 - 6 - 1..n - 1 - true - - RESTRICT - RESTRICT - -1 - -1 - -1 - -1 - null - null - - - i3geoestat_tipo_regiao - i3geoestat_tipo_regiao - Identifica as tabelas que possuem colunas com geometrias de determinado local ou região - - - - - 4 + 9 11 - integer + text - true + false false - true - true - true + false + false + false @@ -1236,7 +1270,7 @@ - 29 + 13 12 @@ -1268,13 +1302,13 @@ - 16 + 23 13 - text + integer false @@ -1300,18 +1334,17 @@ + 11 14 - 25 - 3 - integer + text false - true + false false false false @@ -1333,7 +1366,7 @@ - 18 + 40 15 @@ -1341,7 +1374,7 @@ text - + 4326 false false false @@ -1364,21 +1397,52 @@ 0 + + + + + + + + +
+ + 5 + 107 + 280 + Ubuntu + 9 + 1 + 188 + + 255 + 165 + 0 + + + + i3geoestat_tipo_periodo + i3geoestat_tipo_periodo + Lista controlada de tipos de período de tempo + + + + - 37 + 4 16 - text + integer - false + true false - false - false - false + true + true + true @@ -1397,7 +1461,7 @@ - 8 + 28 17 @@ -1429,7 +1493,7 @@ - 12 + 16 18 @@ -1460,8 +1524,39 @@ 0 + + + + + + + + +
+ + 6 + 170 + 292 + Ubuntu + 9 + 7 + 453 + + 255 + 165 + 0 + + + + i3geoestat_conexao + i3geoestat_conexao + Lista controlada dos parâmetros de conexão com o banco de dados onde residem dados + + + + - 21 + 3 19 @@ -1470,11 +1565,11 @@ integer - false + true false - false - false - false + true + true + true @@ -1493,7 +1588,7 @@ - 10 + 2 20 @@ -1525,7 +1620,7 @@ - 35 + 22 21 @@ -1533,7 +1628,7 @@ text - 4326 + false false false @@ -1556,52 +1651,21 @@ 0 - - - - - - - - -
- - 7 - 107 - 280 - Ubuntu - 9 - 1 - 188 - - 255 - 165 - 0 - - - - i3geoestat_tipo_periodo - i3geoestat_tipo_periodo - Lista controlada de tipos de período de tempo - - - - - 3 + 37 22 - integer + text - true + false false - true - true - true + false + false + false @@ -1620,7 +1684,7 @@ - 24 + 44 23 @@ -1652,7 +1716,7 @@ - 13 + 38 24 @@ -1693,29 +1757,29 @@
- 8 - 170 - 292 + 7 + 107 + 250Ubuntu9 - 7 - 453 + 373 + -2 - 255 - 165 - 0 + 160 + 32 + 240 - i3geoestat_conexao - i3geoestat_conexao - Lista controlada dos parâmetros de conexão com o banco de dados onde residem dados + i3geoestat_variavel + i3geoestat_variavel + Tabela com o nome e descrição de uma variável variável - 2 + 7 25 @@ -1747,7 +1811,7 @@ - 1 + 30 26 @@ -1779,7 +1843,7 @@ - 20 + 15 27 @@ -1810,44 +1874,602 @@ 0 - - 32 - 28 - - - - - text - - - false - false - false - false - false - - - - - - - - - - - false - false - - - 0 - - - - 38 - 29 - - - + + + + + + + + +
+ + 8 + 339 + 292 + Ubuntu + 9 + 353 + 155 + + 160 + 32 + 240 + + + + 2 + 5 + 8 + 1..n + 1 + true + + RESTRICT + RESTRICT + -1 + -1 + -1 + -1 + null + null + + + 3 + 4 + 8 + 1..n + 1 + true + + RESTRICT + RESTRICT + -1 + -1 + -1 + -1 + null + null + + + 4 + 6 + 8 + 1..n + 1 + true + + RESTRICT + RESTRICT + -1 + -1 + -1 + -1 + null + null + + + 5 + 7 + 8 + 1..n + 1 + true + + RESTRICT + RESTRICT + -1 + -1 + -1 + -1 + null + null + + + 6 + 3 + 8 + 1..n + 1 + true + + RESTRICT + RESTRICT + -1 + -1 + -1 + -1 + null + null + + + i3geoestat_medida_variavel + i3geoestat_medida_variavel + Descreve as colunas que contém valores de algum tipo de medida, por exemplo população residente + + + + + + 27 + 28 + + + + + integer + + + true + false + true + true + true + + + + + + + + + + + false + false + + + 0 + + + + 29 + 0 + 6 + + + + + integer + + + false + true + false + false + false + + + + + + + + + + + false + false + + + 0 + + + + 30 + 16 + 2 + + + + + integer + + + false + true + false + false + false + + + + + + + + + + + false + false + + + 0 + + + + 31 + 25 + 5 + + + + + integer + + + false + true + false + false + false + + + + + + + + + + + false + false + + + 0 + + + + 32 + 5 + 3 + + + + + integer + + + false + true + false + false + false + + + + + + + + + + + false + false + + + 0 + + + + 33 + 19 + 4 + + + + + integer + + + false + true + false + false + false + + + + + + + + + + + false + false + + + 0 + + + + 18 + 34 + + + + + text + + + false + false + false + false + false + + + + + + + + + + + false + false + + + 0 + + + + 41 + 35 + + + + + text + + + false + false + false + false + false + + + + + + + + + + + false + false + + + 0 + + + + 12 + 36 + + + + + text + + + false + false + false + false + false + + + + + + + + + + + false + false + + + 0 + + + + 10 + 37 + + + + + text + + + false + false + false + false + false + + + + + + + + + + + false + false + + + 0 + + + + 21 + 38 + + + + + text + + + false + false + false + false + false + + + + + + + + + + + false + false + + + 0 + + + + 33 + 39 + + + + + text + + + false + false + false + false + false + + + + + + + + + + + false + false + + + 0 + + + + + + + + + + +
+ + 9 + 170 + 292 + Ubuntu + 9 + 387 + 533 + + 160 + 32 + 240 + + + + 7 + 10 + 9 + + + 8 + 8 + 9 + 1..n + 1 + true + + RESTRICT + RESTRICT + -1 + -1 + -1 + -1 + null + null + + + i3geoestat_dimensao_medida + i3geoestat_dimensao_medida + + + + + + + 26 + 40 + + + + + integer + + + true + false + true + true + true + + + + + + + + + + + false + false + + + 0 + + + + 8 + 41 + + + text @@ -1875,8 +2497,8 @@ - 33 - 30 + 32 + 42 @@ -1906,52 +2528,21 @@ 0 - - - - - - - - -
- - 9 - 107 - 250 - Ubuntu - 9 - 373 - -2 - - 160 - 32 - 240 - - - - i3geoestat_variavel - i3geoestat_variavel - Tabela com o nome e descrição de uma variável variável - - - - - 6 - 31 + 14 + 43 - integer + text - true + false false - true - true - true + false + false + false @@ -1970,15 +2561,15 @@ - 26 - 32 + 0 + 44 - text + integer - + 0 false false false @@ -2002,17 +2593,18 @@ - 15 - 33 + 45 + 28 + 8 - text + integer false - false + true false false false @@ -2042,92 +2634,41 @@
- + 10 - 339 - 292 + 111 + 188 Ubuntu 9 - 353 - 155 + 748 + 594 - 160 - 32 - 240 + 255 + 255 + 255 + + + + As colunas obtidas da junção de medida_variavel com tipo_regiao podem ser utilizadas para definir uma dimensão + +
+ 11 + 75 + 120 + Ubuntu + 9 + 746 + 144 + + 230 + 230 + 250 - 4 - 6 - 10 - 1..n - 1 - true - - RESTRICT - RESTRICT - -1 - -1 - -1 - -1 - null - null - - - 5 - 7 - 10 - 1..n - 1 - true - - RESTRICT - RESTRICT - -1 - -1 - -1 - -1 - null - null - - - 6 + 9 8 - 10 - 1..n - 1 - true - - RESTRICT - RESTRICT - -1 - -1 - -1 - -1 - null - null - - - 7 - 9 - 10 - 1..n - 1 - true - - RESTRICT - RESTRICT - -1 - -1 - -1 - -1 - null - null - - - 8 - 4 - 10 + 11 1..n 1 true @@ -2142,16 +2683,16 @@ null - i3geoestat_medida_variavel - i3geoestat_medida_variavel - Descreve as colunas que contém valores de algum tipo de medida, por exemplo população residente + i3geoestat_classificacao + i3geoestat_classificacao + Lista de classificacoes de uma medida de variável - 23 - 34 + 25 + 46 @@ -2182,84 +2723,17 @@ - 35 - 0 - 8 - - - - - integer - - - false - true - false - false - false - - - - - - - - - - - false - false - - - 0 - - - - 36 - 22 - 5 - - - - - integer - - - false - true - false - false - false - - - - - - - - - - - false - false - - - 0 - - - - 37 - 31 - 7 + 31 + 47 - integer + text false - true + false false false false @@ -2281,9 +2755,9 @@ - 38 - 11 - 4 + 48 + 28 + 9 @@ -2313,10 +2787,57 @@ 0 + + + + + + + + +
+ + 12 + 75 + 120 + Ubuntu + 9 + 771 + 314 + + 230 + 230 + 250 + + + + 10 + 11 + 12 + 1..n + 1 + true + + RESTRICT + RESTRICT + -1 + -1 + -1 + -1 + null + null + + + i3geoestat_classes + i3geoestat_classes + Classes pertencentes a uma classificação + + + + - 39 - 25 - 6 + 24 + 49 @@ -2324,11 +2845,11 @@ integer - false - true - false - false - false + true + false + true + true + true @@ -2347,8 +2868,8 @@ - 17 - 40 + 20 + 50 @@ -2379,8 +2900,8 @@ - 36 - 41 + 43 + 51 @@ -2411,8 +2932,8 @@ - 11 - 42 + 46 + 52 @@ -2443,8 +2964,8 @@ - 9 - 43 + 45 + 53 @@ -2475,8 +2996,8 @@ - 19 - 44 + 1 + 54 @@ -2507,17 +3028,18 @@ - 28 - 45 + 55 + 46 + 10 - text + integer false - false + true false false false @@ -2555,31 +3077,31 @@ metaestat_basededados 0 - 8 + 6 - 25 + 19 1 - 26 + 20 dbspo - 27 + 21 localhost - 28 + 22 5432 - 29 + 23 postgres - 30 + 24 postgres @@ -2588,7 +3110,7 @@ 0 - 25 + 19 Format 1 @@ -2603,7 +3125,7 @@ - 26 + 20 Format 1 @@ -2618,7 +3140,7 @@ - 27 + 21 Format 1 @@ -2633,7 +3155,7 @@ - 28 + 22 Format 1 @@ -2648,7 +3170,7 @@ - 29 + 23 Format 1 @@ -2663,7 +3185,7 @@ - 30 + 24 Format 1 @@ -2681,33 +3203,33 @@ - 7 + 5 - 22 + 16 1 - 23 + 17 Anual - 24 + 18 - 22 + 16 2 - 23 + 17 Mensal - 24 + 18 @@ -2716,7 +3238,7 @@ 0 - 22 + 16 Format 1 @@ -2731,7 +3253,7 @@ - 23 + 17 Format 1 @@ -2746,7 +3268,7 @@ - 24 + 18 Format 1 @@ -2764,51 +3286,51 @@ - 6 + 4 - 11 + 5 1 - 12 + 6 Município - 13 + 7 Limites municipais - 14 + 8 1 - 15 + 9 public - 16 + 10 tb_ibge - 17 + 11 the_geom - 18 + 12 - 19 + 13 ibge - 20 + 14 no_cidade - 21 + 15 4326 @@ -2817,7 +3339,7 @@ 0 - 11 + 5 Format 1 @@ -2832,7 +3354,7 @@ - 12 + 6 Format 1 @@ -2847,7 +3369,7 @@ - 13 + 7 Format 1 @@ -2862,7 +3384,7 @@ - 14 + 8 Foreign Key 1 @@ -2877,7 +3399,7 @@ - 15 + 9 Format 1 @@ -2892,7 +3414,7 @@ - 16 + 10 Format 1 @@ -2907,7 +3429,7 @@ - 17 + 11 Format 1 @@ -2922,7 +3444,7 @@ - 18 + 12 Format 1 @@ -2937,7 +3459,7 @@ - 19 + 13 Format 1 @@ -2952,7 +3474,7 @@ - 20 + 14 Format 1 @@ -2967,7 +3489,7 @@ - 21 + 15 Format 1 @@ -2985,7 +3507,7 @@ - 4 + 3 @@ -3092,55 +3614,55 @@ - 10 + 8 - 34 + 28 1 - 35 + 29 1 - 36 + 30 2 - 37 + 31 1 - 38 + 32 1 - 39 + 33 1 - 40 + 34 dbacoes_saude - 41 + 35 tb_farmacia_pop - 42 + 36 nu_farm_funcionando - 43 + 37 co_ibge - 44 + 38 - 45 + 39 Número de farmácias em funcionamento por mês e ano @@ -3149,7 +3671,7 @@ 0 - 34 + 28 Format 1 @@ -3164,7 +3686,7 @@ - 35 + 29 Foreign Key 1 @@ -3179,7 +3701,7 @@ - 36 + 30 Foreign Key 1 @@ -3194,7 +3716,7 @@ - 37 + 31 Foreign Key 1 @@ -3209,7 +3731,7 @@ - 38 + 32 Foreign Key 1 @@ -3224,7 +3746,7 @@ - 39 + 33 Foreign Key 1 @@ -3239,7 +3761,7 @@ - 40 + 34 Format 1 @@ -3254,7 +3776,7 @@ - 41 + 35 Format 1 @@ -3269,7 +3791,7 @@ - 42 + 36 Format 1 @@ -3284,7 +3806,7 @@ - 43 + 37 Format 1 @@ -3299,7 +3821,7 @@ - 44 + 38 Format 1 @@ -3314,7 +3836,7 @@ - 45 + 39 Format 1 @@ -3332,57 +3854,57 @@ - 5 + 9 - 5 + 40 1 - 6 + 41 to_date(mes_farm_pop||' '||ano_farm,'MM YYYY') as mes - 7 + 42 mês e ano - 8 + 43 - 9 + 44 0 - 10 + 45 1 - 5 + 40 2 - 6 + 41 ano_farm - 7 + 42 ano - 8 + 43 - 9 + 44 1 - 10 + 45 1 @@ -3391,7 +3913,7 @@ 0 - 5 + 40 Format 1 @@ -3406,7 +3928,7 @@ - 6 + 41 Format 1 @@ -3421,7 +3943,7 @@ - 7 + 42 Format 1 @@ -3436,7 +3958,7 @@ - 8 + 43 Format 1 @@ -3451,7 +3973,7 @@ - 9 + 44 Format 1 @@ -3466,7 +3988,7 @@ - 10 + 45 Foreign Key 1 @@ -3484,19 +4006,19 @@ - 9 + 7 - 31 + 25 1 - 32 + 26 Farmácias populares existentes - 33 + 27 Quantidade de farmácias populares existentes @@ -3505,7 +4027,7 @@ 0 - 31 + 25 Format 1 @@ -3520,7 +4042,7 @@ - 32 + 26 Format 1 @@ -3535,7 +4057,7 @@ - 33 + 27 Format 1 -- libgit2 0.21.2