From 68336200876c8adca56ded9774073fff2af54d73 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Mon, 12 Nov 2012 03:23:02 +0000 Subject: [PATCH] Novas funcionalidades no menu de análise do METAESTAT --- classesphp/mapa_googlemaps.php | 27 +++++++++++++++++++++++++++ classesphp/mapa_openlayers.php | 32 +++++++++++++++++++------------- ferramentas/metaestat/alterarep.js | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ferramentas/metaestat/analise.php | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ ferramentas/metaestat/index.js | 13 +++++++++++-- ferramentas/metaestat/mostraregiao.js | 3 +-- interface/carto_ol.htm | 2 +- 7 files changed, 265 insertions(+), 18 deletions(-) create mode 100644 ferramentas/metaestat/alterarep.js diff --git a/classesphp/mapa_googlemaps.php b/classesphp/mapa_googlemaps.php index 1fd06d4..5ace35e 100644 --- a/classesphp/mapa_googlemaps.php +++ b/classesphp/mapa_googlemaps.php @@ -299,6 +299,7 @@ if(trim($_GET["TIPOIMAGEM"]) != "" && trim($_GET["TIPOIMAGEM"]) != "nenhum") imagepng($img); } else{ + /* if($cache == true) {$nomer = salvaCacheImagem($cachedir,$_GET["BBOX"],$nomecache,$map_fileX,$_GET["WIDTH"],$_GET["HEIGHT"]);} else{ @@ -311,6 +312,32 @@ else{ header('Content-Type: image/png'); fpassthru(fopen($nomer, 'rb')); exit; + */ + if($cache == true){ + $nomer = salvaCacheImagem($cachedir,$_GET["BBOX"],$nomecache,$map_fileX,$_GET["WIDTH"],$_GET["HEIGHT"]); + header('Content-Length: '.filesize($nomer)); + header('Content-Type: image/png'); + header('Cache-Control: max-age=3600, must-revalidate'); + header('Expires: ' . gmdate('D, d M Y H:i:s', time()+24*60*60) . ' GMT'); + header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($nomer)).' GMT', true, 200); + //$etag = md5_file($nomer); + //header('Etag: '.$etag); + fpassthru(fopen($nomer, 'rb')); + } + else{ + if($img->imagepath == "") + {echo "Erro IMAGEPATH vazio";exit;} + /* + $nomer = ($img->imagepath)."imgtemp".nomeRand().".png"; + $img->saveImage($nomer); + header('Content-Length: '.filesize($nomer)); + header('Content-Type: image/png'); + fpassthru(fopen($nomer, 'rb')); + */ + header('Content-Type: image/png'); + $img->saveImage(); + } + exit; } function salvaCacheImagem($cachedir,$bbox,$layer,$map,$w,$h){ global $img,$map_size; diff --git a/classesphp/mapa_openlayers.php b/classesphp/mapa_openlayers.php index 4fce158..8621564 100644 --- a/classesphp/mapa_openlayers.php +++ b/classesphp/mapa_openlayers.php @@ -265,24 +265,30 @@ if(trim($_GET["TIPOIMAGEM"]) != "" && trim($_GET["TIPOIMAGEM"]) != "nenhum") imagedestroy($img); } else{ - if($cache == true) - {$nomer = salvaCacheImagem($cachedir,$_GET["BBOX"],$nomecache,$map_fileX,$_GET["WIDTH"],$_GET["HEIGHT"]);} - else{ - if($img->imagepath == "") - {echo "Erro IMAGEPATH vazio";exit;} - $nomer = ($img->imagepath)."imgtemp".nomeRand().".png"; - $img->saveImage($nomer); - } - header('Content-Length: '.filesize($nomer)); - header('Content-Type: image/png'); if($cache == true){ + $nomer = salvaCacheImagem($cachedir,$_GET["BBOX"],$nomecache,$map_fileX,$_GET["WIDTH"],$_GET["HEIGHT"]); + header('Content-Length: '.filesize($nomer)); + header('Content-Type: image/png'); header('Cache-Control: max-age=3600, must-revalidate'); header('Expires: ' . gmdate('D, d M Y H:i:s', time()+24*60*60) . ' GMT'); header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($nomer)).' GMT', true, 200); - $etag = md5_file($nomer); - header('Etag: '.$etag); + //$etag = md5_file($nomer); + //header('Etag: '.$etag); + fpassthru(fopen($nomer, 'rb')); + } + else{ + if($img->imagepath == "") + {echo "Erro IMAGEPATH vazio";exit;} + /* + $nomer = ($img->imagepath)."imgtemp".nomeRand().".png"; + $img->saveImage($nomer); + header('Content-Length: '.filesize($nomer)); + header('Content-Type: image/png'); + fpassthru(fopen($nomer, 'rb')); + */ + header('Content-Type: image/png'); + $img->saveImage(); } - fpassthru(fopen($nomer, 'rb')); exit; } function salvaCacheImagem($cachedir,$bbox,$layer,$map,$w,$h){ diff --git a/ferramentas/metaestat/alterarep.js b/ferramentas/metaestat/alterarep.js new file mode 100644 index 0000000..c182763 --- /dev/null +++ b/ferramentas/metaestat/alterarep.js @@ -0,0 +1,156 @@ +/* + Title: Ferramenta que mostra opcoes adicionais de analise do módulo METAESTAT + + Arquivo: + + i3geo/ferramentas/metaestat/alterarep.js + +Licenca: + +GPL2 + + i3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet + + Direitos Autorais Reservados (c) 2006 Ministério do Meio Ambiente Brasil + Desenvolvedor: Edmar Moretti edmar.moretti@gmail.com + +Esse programa utiliza parcialmente os codigos da aplicacao calculadora de carbono desenvolvido pelo +IPAM - Instituto de Pesquisa Ambiental da Amazonia + +Este programa e software livre; voce pode redistribui-lo +e/ou modifica-lo sob os termos da Licenca Publica Geral +GNU conforme publicada pela Free Software Foundation; + +Este programa e distribuido na expectativa de que seja util, +porem, SEM NENHUMA GARANTIA; nem mesmo a garantia implicita +de COMERCIABILIDADE OU ADEQUACAO A UMA FINALIDADE ESPECIFICA. +Consulte a Licenca Publica Geral do GNU para mais detalhes. +Voce deve ter recebido uma copia da Licenca Publica Geral do +GNU junto com este programa; se nao, escreva para a +Free Software Foundation, Inc., no endereco +59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. +*/ +if(typeof(i3GEOF) === 'undefined'){ + var i3GEOF = {}; +} +/* + Classe: i3GEOF.alterarep + */ +i3GEOF.alterarep = { + aguarde: function(obj){ + if(!obj){ + return ""; + } + var i = $i(obj.id+"_imagem"); + if(!i){ + obj.innerHTML = ""; + } + else{ + if(i.style.display == "block"){ + i.style.display = "none"; + } + else{ + i.style.display = "block"; + } + } + }, + //para efeitos de compatibilidade + criaJanelaFlutuante: function(){ + i3GEOF.alterarep.iniciaDicionario(); + }, + inicia: function(divid){ + $i(divid).innerHTML = i3GEOF.alterarep.html(); + new YAHOO.widget.Button( + "i3geoalterarepCirculos", + {onclick:{fn: function(){i3GEOF.alterarep.circulos("variatamanho");}}} + ); + $i("i3geoalterarepCirculos-button").style.width = 230 + "px"; + new YAHOO.widget.Button( + "i3geoalterarepCirculos1", + {onclick:{fn: function(){i3GEOF.alterarep.circulos("variacor");}}} + ); + $i("i3geoalterarepCirculos1-button").style.width = 230 + "px"; + }, + //utiliza o dicionario compartilhado + iniciaDicionario: function(){ + if(typeof(i3GEOF.metaestat.dicionario) === 'undefined'){ + i3GEO.util.scriptTag( + i3GEO.configura.locaplic+"/ferramentas/metaestat/dicionario.js", + "i3GEOF.alterarep.iniciaJanelaFlutuante()", + "i3GEOF.metaestat.dicionario_script" + ); + } + else{ + i3GEOF.alterarep.iniciaJanelaFlutuante(); + } + }, + iniciaJanelaFlutuante: function(){ + if($i("i3GEOF.alterarep_corpo")){ + return; + } + var minimiza,cabecalho,janela,divid,titulo; + cabecalho = function(){ + }; + minimiza = function(){ + i3GEO.janela.minimiza("i3GEOF.alterarep"); + }; + //cria a janela flutuante + titulo = "Representação      "; + janela = i3GEO.janela.cria( + "250px", + "", + "", + "", + "", + titulo, + "i3GEOF.alterarep", + false, + "hd", + cabecalho, + minimiza + ); + divid = janela[2].id; + $i("i3GEOF.alterarep_corpo").style.backgroundColor = "white"; + i3GEOF.alterarep.inicia(divid); + i3GEO.janela.tempoMsg("Utilize a guia lateral para ligar/desligar camadas que já estejam no mapa"); + }, + html: function(){ + var ins = "" + + '
'+ + ' Círculos representando os valores'+ + '

'+ + ' '+ + '

'; + return ins; + }, + circulos: function(tipo){ + if($i("i3geoCartoAnaliseCamadasCombo").value == ""){ + i3GEO.janela.tempoMsg("Ative uma camada primeiro"); + return; + } + i3GEO.mapa.ativaTema($i("i3geoCartoAnaliseCamadasCombo").value); + var p = i3GEO.configura.locaplic+"/ferramentas/metaestat/analise.php?g_sid="+i3GEO.configura.sid + + "&tema="+$i("i3geoCartoAnaliseCamadasCombo").value, + temp = function(retorno){ + i3GEO.janela.fechaAguarde("alterarep1"); + var atualiza = function(){ + i3GEO.atualiza(); + i3GEOF.metaestat.CAMADAS.push(retorno.layer); + i3GEO.mapa.ativaTema(retorno.layer); + i3GEOF.metaestat.analise.comboCamadas(); + }; + i3GEO.php.adtema(atualiza,retorno.mapfile); + }; + i3GEO.janela.abreAguarde("alterarep1","Aguarde..."); + if(tipo == "variatamanho"){ + p += "&funcao=classes2circulos"; + } + if(tipo == "variacor"){ + p += "&funcao=classes2circulos1"; + } + i3GEO.util.ajaxGet(p,temp); + }, + corj: function(obj){ + i3GEO.util.abreCor("",obj); + } +}; \ No newline at end of file diff --git a/ferramentas/metaestat/analise.php b/ferramentas/metaestat/analise.php index 7443beb..9bcb812 100644 --- a/ferramentas/metaestat/analise.php +++ b/ferramentas/metaestat/analise.php @@ -80,6 +80,12 @@ switch (strtoupper($funcao)){ break; case "ALTERACONTORNO": $retorno = alteraContorno($map_file,$tema); + break; + case "CLASSES2CIRCULOS": + $retorno = classes2circulos($map_file,$tema,"variatamanho"); + break; + case "CLASSES2CIRCULOS1": + $retorno = classes2circulos($map_file,$tema,"variacor"); break; } if (!connection_aborted()){ @@ -87,6 +93,50 @@ if (!connection_aborted()){ } else {exit();} +function classes2circulos($map_file,$tema,$tipo){ + $mapa = ms_newMapObj($map_file); + $l = $mapa->getlayerbyname($tema); + $layer = ms_newLayerObj($mapa,$l); + $l->set("status",MS_OFF); + $layer->set("status",MS_DEFAULT); + $layer->set("opacity",50); + $nome = $layer->name.nomeRandomico(4); + $layer->set("name",$nome); + if($layer->type != MS_LAYER_POINT){ + $layer->set("type",0); + $m = new Metaestat(); + $regiao = $m->listaTipoRegiao($layer->getmetadata("METAESTAT_CODIGO_TIPO_REGIAO")); + //repare que existe uma virgula apos o nome da coluna com a geometria, isso e necessario para substituir a string correta + if($regiao["colunacentroide"] != ""){ + $stringgeo = "g.".$regiao["colunageo"].","; + $data = str_replace($stringgeo,"g.".$regiao["colunacentroide"].",",$layer->data); + } + else{ + $stringgeo = 'st_setsrid(g.".'.$regiao["colunageo"].'.",".'.$regiao["srid"].'.")'; + $data = str_replace($stringgeo,"st_centroid($stringgeo)",$layer->data); + } + $layer->set("data",$data); + } + $layer->setmetadata("tema",$layer->getmetadata("tema")." - circ"); + $numclasses = $layer->numclasses; + if($tipo == "variatamanho" || $tipo == "variacor"){ + if ($numclasses > 0){ + for ($i=0; $i < $numclasses; ++$i) { + $classe = $layer->getClass($i); + $estilo = $classe->getstyle(0); + $estilo->set("symbolname","ponto"); + if($tipo == "variatamanho"){ + $estilo->set("size",$i * 6); + } + if($tipo == "variacor"){ + $estilo->set("size",12); + } + } + } + } + $mapa->save($map_file); + return $nome; +} function alteraContorno($map_file,$tema){ $mapa = ms_newMapObj($map_file); $layer = $mapa->getlayerbyname($tema); diff --git a/ferramentas/metaestat/index.js b/ferramentas/metaestat/index.js index 026277f..91a1d16 100644 --- a/ferramentas/metaestat/index.js +++ b/ferramentas/metaestat/index.js @@ -146,7 +146,7 @@ i3GEOF.metaestat = { var temas = retorno.data, n = temas.length, i,t,ins; - ins = "

Ativar a camada:

"; for(i=0;i ' + @@ -173,5 +172,5 @@ i3GEOF.mostraregiao = { }, corj: function(obj){ i3GEO.util.abreCor("",obj); - }, + } }; \ No newline at end of file diff --git a/interface/carto_ol.htm b/interface/carto_ol.htm index fc66eab..4946739 100644 --- a/interface/carto_ol.htm +++ b/interface/carto_ol.htm @@ -98,7 +98,7 @@ /* Title: Interface para geração de cartogramas com Openlayers -Utiliza o módulo de metadados estatísticos para geração de cartogramas +Utiliza o modulo de metadados estatisticos para geracao de cartogramas File: i3geo/interface/carto_ol.htm */ -- libgit2 0.21.2