From 6df7b18fbd762db83584f6c082dc5558ccbd53a1 Mon Sep 17 00:00:00 2001
From: Edmar Moretti
Date: Fri, 31 Aug 2012 04:04:48 +0000
Subject: [PATCH] Inclusão das telas da interface do mapa interativo que usa o sistema de metadados estatÃsticos
---
admin/admin.db | Bin 131072 -> 0 bytes
admin/php/classe_metaestat.php | 145 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------------------------------
classesjs/classe_arvoredecamadas.js | 13 ++++++++-----
classesjs/classe_cartograma.js | 223 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------
classesjs/classe_php.js | 18 ++++++++++++++++++
classesjs/dicionario.js | 21 +++++++++++++++++++++
6 files changed, 332 insertions(+), 88 deletions(-)
diff --git a/admin/admin.db b/admin/admin.db
index 45923fa..628246d 100644
Binary files a/admin/admin.db and b/admin/admin.db differ
diff --git a/admin/php/classe_metaestat.php b/admin/php/classe_metaestat.php
index 6e0953f..7e6fc8d 100755
--- a/admin/php/classe_metaestat.php
+++ b/admin/php/classe_metaestat.php
@@ -41,6 +41,7 @@ class Metaestat{
protected $dbhw;
protected $convUTF;
public $dir_tmp;
+ public $nomecache;
/*
Function: __construct
@@ -63,10 +64,14 @@ class Metaestat{
if(!empty($esquemaadmin)){
$this->esquemaadmin = $esquemaadmin.".";
}
+ $this->nomecache = $this->nomeCache();
}
function __destruct(){
$this->fechaConexao;
}
+ function nomeCache(){
+ return md5(implode("x",$_REQUEST));
+ }
function nomeRandomico($n=10){
$nomes = "";
$a = 'azertyuiopqsdfghjklmwxcvbnABCDEFGHIJKLMNOPQRSTUVWXYZ';
@@ -262,81 +267,83 @@ class Metaestat{
return array("sqlagrupamento"=>$sqlagrupamento,"sql"=>$sql,"sqlmapserver"=>$sqlgeo,"filtro"=>$filtro,"colunas"=>$colunas);
}
function mapfileMedidaVariavel($id_medida_variavel,$filtro="",$todasascolunas = 0,$tipolayer="polygon",$titulolayer="",$id_classificacao="",$agruparpor=""){
- if(empty($tipolayer)){
- $tipolayer = "polygon";
- }
- $meta = $this->listaMedidaVariavel("",$id_medida_variavel);
- 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,$agruparpor,$tipolayer);
- $sqlf = $sql["sqlmapserver"];
- if(!empty($filtro)){
- $sqlf = str_replace(") as foo"," AND ".$filtro." ) as foo",$sqlf);
- }
- $classes = "";
- if(!empty($id_classificacao)){
- $classes = $this->listaClasseClassificacao($id_classificacao);
- }
- $rand = $this->nomeRandomico();
- $arq = $this->dir_tmp."/".$rand.".map";
- $dados[] = "MAP";
- $dados[] = 'SYMBOLSET "'.$this->locaplic.'/symbols/simbolosv6.sym"';
- $dados[] = 'FONTSET "'.$this->locaplic.'/symbols/fontes.txt"';
- $dados[] = "LAYER";
- $dados[] = ' NAME "'.$rand.'"';
- $dados[] = " TYPE $tipolayer";
- $dados[] = ' DATA "'.$sqlf.'"';
- $dados[] = ' CONNECTION "'.$conexao.'"';
- $dados[] = ' CONNECTIONTYPE POSTGIS';
- $dados[] = ' STATUS OFF';
- $dados[] = ' METADATA';
- $dados[] = ' TEMA "'.$titulolayer.'"';
- $dados[] = ' CLASSE "SIM"';
- $dados[] = ' END';
- if($classes == ""){
- $dados[] = ' CLASS';
- $dados[] = ' NAME ""';
- $dados[] = ' STYLE';
- $dados[] = ' COLOR 200 0 0';
- $dados[] = ' END';
- $dados[] = ' END';
- }
- else{
- foreach($classes as $classe){
- //var_dump($classe);exit;
+ //$rand = $this->nomeRandomico();
+ $arq = $this->dir_tmp."/".$this->nomecache.".map";
+ if(!file_exists($arq)){
+ if(empty($tipolayer)){
+ $tipolayer = "polygon";
+ }
+ $meta = $this->listaMedidaVariavel("",$id_medida_variavel);
+ 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,$agruparpor,$tipolayer);
+ $sqlf = $sql["sqlmapserver"];
+ if(!empty($filtro)){
+ $sqlf = str_replace(") as foo"," AND ".$filtro." ) as foo",$sqlf);
+ }
+ $classes = "";
+ if(!empty($id_classificacao)){
+ $classes = $this->listaClasseClassificacao($id_classificacao);
+ }
+ $dados[] = "MAP";
+ $dados[] = 'SYMBOLSET "'.$this->locaplic.'/symbols/simbolosv6.sym"';
+ $dados[] = 'FONTSET "'.$this->locaplic.'/symbols/fontes.txt"';
+ $dados[] = "LAYER";
+ $dados[] = ' NAME "'.$this->nomecache.'"';
+ $dados[] = " TYPE $tipolayer";
+ $dados[] = ' DATA "'.$sqlf.'"';
+ $dados[] = ' CONNECTION "'.$conexao.'"';
+ $dados[] = ' CONNECTIONTYPE POSTGIS';
+ $dados[] = ' STATUS OFF';
+ $dados[] = ' METADATA';
+ $dados[] = ' TEMA "'.$titulolayer.'"';
+ $dados[] = ' CLASSE "SIM"';
+ $dados[] = ' END';
+ if($classes == ""){
$dados[] = ' CLASS';
- $dados[] = ' NAME "'.mb_convert_encoding($classe["titulo"],"ISO-8859-1",mb_detect_encoding($titulolayer)).'"';
- $dados[] = ' EXPRESSION '.$classe["expressao"];
+ $dados[] = ' NAME ""';
$dados[] = ' STYLE';
- $dados[] = ' COLOR '.$classe["vermelho"].' '.$classe["verde"].' '.$classe["azul"];
- if(!empty($classe["tamanho"])){
- $dados[] = ' SIZE '.$classe["tamanho"];
- }
- if(!empty($classe["simbolo"])){
- $dados[] = ' SYMBOL '.$classe["simbolo"];
- }
- if(!empty($classe["otamanho"])){
- $dados[] = ' OUTLINEWIDTH '.$classe["otamanho"];
- }
- if(!empty($classe["overmelho"]) || $classe["overmelho"] == "0"){
- $dados[] = ' OUTLINECOLOR '.$classe["overmelho"].' '.$classe["overde"].' '.$classe["oazul"];
- }
+ $dados[] = ' COLOR 200 0 0';
$dados[] = ' END';
$dados[] = ' END';
}
+ else{
+ foreach($classes as $classe){
+ //var_dump($classe);exit;
+ $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"];
+ if(!empty($classe["tamanho"])){
+ $dados[] = ' SIZE '.$classe["tamanho"];
+ }
+ if(!empty($classe["simbolo"])){
+ $dados[] = ' SYMBOL '.$classe["simbolo"];
+ }
+ if(!empty($classe["otamanho"])){
+ $dados[] = ' OUTLINEWIDTH '.$classe["otamanho"];
+ }
+ if(!empty($classe["overmelho"]) || $classe["overmelho"] == "0"){
+ $dados[] = ' OUTLINECOLOR '.$classe["overmelho"].' '.$classe["overde"].' '.$classe["oazul"];
+ }
+ $dados[] = ' END';
+ $dados[] = ' END';
+ }
+ }
+ $dados[] = "END";
+ $dados[] = "END";
+ $fp = fopen($arq,"w");
+ foreach ($dados as $dado){
+ fwrite($fp,$dado."\n");
+ }
}
- $dados[] = "END";
- $dados[] = "END";
- $fp = fopen($arq,"w");
- foreach ($dados as $dado){
- fwrite($fp,$dado."\n");
- }
- return array("mapfile"=>$arq,"layer"=>$rand,"titulolayer"=>$titulolayer);
+ return array("mapfile"=>$arq,"layer"=>$this->nomecache,"titulolayer"=>$titulolayer);
}
function mapfileCompleto($mapfile){
$f = $this->base;
diff --git a/classesjs/classe_arvoredecamadas.js b/classesjs/classe_arvoredecamadas.js
index 6f210d5..424703c 100644
--- a/classesjs/classe_arvoredecamadas.js
+++ b/classesjs/classe_arvoredecamadas.js
@@ -745,11 +745,14 @@ i3GEO.arvoreDeCamadas = {
n = lista.length;
for(i=0;i 0){
+ i3GEO.arvoreDeCamadas.ligaDesligaTemas(i3GEO.cartograma.CAMADAS.join(","),false);
+ }
+ },
+ adicionaCamada: function(){
+ //function mapfileMedidaVariavel($id_medida_variavel,$filtro="",$todasascolunas = 0,$tipolayer="polygon",$titulolayer="",$id_classificacao="",$agruparpor=""){
+ var v = i3GEO.cartograma.verificaParametros(),
+ temp = function(retorno){
+ if(i3GEO.arvoreDeCamadas.pegaTema(retorno.layer) == ""){
+ i3GEO.cartograma.desligaCamadas();
+ i3GEO.php.adtema(i3GEO.atualiza,retorno.mapfile);
+ i3GEO.cartograma.CAMADAS.push(retorno.layer);
+ }
+ };
+ if(v != true){
+ alert("erro: "+v);
+ }
+ i3GEO.php.mapfileMedidaVariavel(
+ temp,
+ $i("i3geoCartoComboMedidasVariavel").value,
+ i3GEO.cartograma.defineFiltro(),
+ 0,
+ $i("i3geoCartoComboTipoRep").value,
+ i3GEO.cartograma.defineTitulo(),
+ $i("i3geoCartoComboTipoClassificacao").value,
+ i3GEO.cartograma.defineAgruparPor()
+ );
+ },
+ defineTitulo: function(){
+ //se nao tiver parametros, filtro e vazio
+ if(i3GEO.cartograma.parametros.dados.length == 0){
+ return "";
+ }
+ //se tiver parametro e todos estiverem vazios, aborta
+ var i,n,c,titulo,
+ t=[],
+ dados = i3GEO.cartograma.parametros.dados;
+ titulo = $i("i3geoCartoComboVariavel").options[$i("i3geoCartoComboVariavel").selectedIndex].label +" - "+
+ $i("i3geoCartoComboMedidasVariavel").options[$i("i3geoCartoComboMedidasVariavel").selectedIndex].label +" - "+
+ $i("i3geoCartoComboTipoRep").options[$i("i3geoCartoComboTipoRep").selectedIndex].label +" - "+
+ $i("i3geoCartoComboTipoClassificacao").options[$i("i3geoCartoComboTipoClassificacao").selectedIndex].label;
+ n = dados.length;
+ for(i=0;i 0){
+ return titulo+" - "+t.join(", ");
+ }
+ else{
+ return titulo;
+ }
+ },
+ defineFiltro: function(){
+ //se nao tiver parametros, filtro e vazio
+ if(i3GEO.cartograma.parametros.dados.length == 0){
+ return "";
+ }
+ //se tiver parametro e todos estiverem vazios, aborta
+ var i,n,c,
+ t=[],
+ dados = i3GEO.cartograma.parametros.dados;
+ n = dados.length;
+ for(i=0;i 0){
+ return t.join(" and ");
}
- if(i3GEO.cartograma.INTERFACE == "flutuante"){
- i3GEO.cartograma.principal.abreJanela();
+ else{
+ return "";
}
- $i(iddiv).innerHTML = i3GEO.cartograma.principal.html();
- i3GEO.cartograma.principal.comboVariaveis();
+ },
+ defineAgruparPor: function(){
+ //se nao tiver parametros, filtro e vazio
+ if(i3GEO.cartograma.parametros.dados.length == 0){
+ return "";
+ }
+ //se tiver parametro e todos estiverem vazios, aborta
+ var i,n,c,
+ t=[],
+ dados = i3GEO.cartograma.parametros.dados;
+ n = dados.length;
+ for(i=0;i 0){
+ return t.join(",");
+ }
+ else{
+ return "";
+ }
+ },
+ verificaParametros: function(){
+ var ok = true,
+ combos = ["i3geoCartoComboVariavel","i3geoCartoComboMedidasVariavel","i3geoCartoComboTipoRep","i3geoCartoComboTipoClassificacao"],
+ n = combos.length,
+ i,temp;
+ for(i=0;i
'+$trad("x58")+'
',
+ ins = '
'+$trad("x58")+'
',
i;
ins += "