From 3c414ef7b4a6873e3e323067e7d296dddee3ec30 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Mon, 17 May 2010 16:51:21 +0000 Subject: [PATCH] Correção na rotina do OpenLayers que tenta descobrir o endereço da aplicação. Eliminação de cookies na inicialização. Adaptação da ferramenta de filtro de imagem para a interface openlayers --- aplicmap/openlayers.htm | 3 +-- classesjs/classe_interface.js | 49 +++++++++++++++++++++++++++++++++++-------------- classesphp/classe_imagem.php | 2 ++ classesphp/classe_mapa.php | 6 +++--- classesphp/mapa_openlayers.php | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- ferramentas/tipoimagem/index.js.php | 3 ++- guia_de_migracao.txt | 7 ++++++- ms_criamapa.php | 9 +++++++++ pacotes/openlayers/OpenLayers29.js.php | 14 +++++++++++--- 9 files changed, 130 insertions(+), 27 deletions(-) diff --git a/aplicmap/openlayers.htm b/aplicmap/openlayers.htm index bc01dda..16fe49b 100644 --- a/aplicmap/openlayers.htm +++ b/aplicmap/openlayers.htm @@ -4,9 +4,8 @@ i3Geo - Mapa interativo - + - diff --git a/classesjs/classe_interface.js b/classesjs/classe_interface.js index 1617869..566f688 100644 --- a/classesjs/classe_interface.js +++ b/classesjs/classe_interface.js @@ -226,6 +226,25 @@ i3GEO.Interface = { {i3GEO.Interface.flamingo.inicia();} }, /* + Function: alteraLayers + + Altera todos os layers do mapa modificando um determinado parâmetro + */ + alteraParametroLayers: function(parametro,valor){ + if(typeof(console) !== 'undefined'){console.info("i3GEO.Interface.inicia()");} + if(i3GEO.Interface.ATUAL === "padrao") + {i3GEO.atualiza();} + if(i3GEO.Interface.ATUAL === "openlayers") + {i3GEO.Interface.openlayers.alteraParametroLayers(parametro,valor);} + if(i3GEO.Interface.ATUAL === "googlemaps") + {i3GEO.atualiza();} + if(i3GEO.Interface.ATUAL === "googleearth") + {i3GEO.atualiza();} + if(i3GEO.Interface.ATUAL === "flamingo") + {i3GEO.atualiza();} + }, + + /* Function: ativaBotoes Ativa os botões de ferramentas @@ -660,9 +679,8 @@ i3GEO.Interface = { i3GEO.arvoreDeCamadas.cria("",i3GEO.arvoreDeCamadas.CAMADAS,i3GEO.configura.sid,i3GEO.configura.locaplic); }, criaLayers: function(){ - //var url = window.location.protocol+"//"+window.location.host+i3GEO.parametros.cgi+"?map="+i3GEO.parametros.mapfile+"&mode=map", - var url = i3GEO.configura.locaplic+"/classesphp/mapa_openlayers.php?map="+i3GEO.parametros.mapfile, - urlfundo = i3GEO.configura.locaplic+"/classesphp/mapa_openlayers.php?layer=&map="+i3GEO.parametros.mapfile.replace(".map","fundo.map"), + var url = i3GEO.configura.locaplic+"/classesphp/mapa_openlayers.php?map="+i3GEO.parametros.mapfile+"&tipoimagem="+i3GEO.configura.tipoimagem, + urlfundo = i3GEO.configura.locaplic+"/classesphp/mapa_openlayers.php?layer=&map="+i3GEO.parametros.mapfile.replace(".map","fundo.map")+"&tipoimagem="+i3GEO.configura.tipoimagem, nlayers = i3GEO.arvoreDeCamadas.CAMADAS.length, layer, camada, @@ -670,8 +688,6 @@ i3GEO.Interface = { opcoes, i; - - if(i3geoOL.getLayersByName("Fundo").length == 0){ layer = new OpenLayers.Layer.WMS( "Fundo", urlfundo,{map_imagetype:i3GEO.Interface.OUTPUTFORMAT},{ratio: 1,singleTile:true,isBaseLayer:true, opacity: 1}); i3geoOL.addLayer(layer); @@ -710,7 +726,20 @@ i3GEO.Interface = { {layer.setVisibility(true);} } i3geoOL.addLayers(i3GEO.Interface.openlayers.LAYERSADICIONAIS); - + }, + alteraParametroLayers: function(parametro,valor){ + var layers = i3geoOL.layers, + nlayers = layers.length, + i, + url, + reg; + for(i=0;iarquivoimg = $arquivo; $this->img = imagecreatefrompng($arquivo); + imagealphablending($this->img, false); + imagesavealpha($this->img, true); } else {return null;} diff --git a/classesphp/classe_mapa.php b/classesphp/classe_mapa.php index a7211ea..7607015 100644 --- a/classesphp/classe_mapa.php +++ b/classesphp/classe_mapa.php @@ -187,8 +187,8 @@ string - javascript com os parametros $escondido = $oLayer->getmetadata("escondido"); if($escondido == "") {$escondido = "nao";} - //if ( (strtoupper($oLayer->getmetadata("tema")) != "NAO") ) - //{ + if ( (strtoupper($oLayer->getmetadata("tema")) != "NAO") ) + { $escala = $oLayer->getmetadata("escala"); if ($escala == ""){$escala = 0;} $down = $oLayer->getmetadata("download"); @@ -250,7 +250,7 @@ string - javascript com os parametros "escondido"=>strtolower($escondido), "iconetema"=>($oLayer->getmetadata("iconetema")) ); - //} + } } //apaga o arquivo qy se não for necessário //if (!$existesel && $qy) diff --git a/classesphp/mapa_openlayers.php b/classesphp/mapa_openlayers.php index 1dcfa1b..a207d32 100644 --- a/classesphp/mapa_openlayers.php +++ b/classesphp/mapa_openlayers.php @@ -35,7 +35,7 @@ Arquivo: i3geo/classesphp/mapa_openlayers.php */ -error_reporting(E_ALL); +//error_reporting(E_ALL); if (!function_exists('ms_GetVersion')) { $s = PHP_SHLIB_SUFFIX; @@ -52,11 +52,13 @@ if(isset($_GET["BBOX"])) if (($postgis_mapa != "") || ($postgis_mapa != " ")) {substituiCon($_GET["map"],$postgis_mapa);} + $mapa = ms_newMapObj($_GET["map"]); $qyfile = str_replace(".map",".qy",$_GET["map"]); $qy = file_exists($qyfile); if($qy) {$mapa->loadquery($qyfile);} + $layersNames = $mapa->getalllayernames(); foreach ($layersNames as $layerName) { @@ -74,18 +76,46 @@ foreach ($layersNames as $layerName) } $map_size = explode(" ",$_GET["map_size"]); $mapa->setsize($map_size[0],$map_size[1]); + $mapext = explode(" ",$_GET["mapext"]); $mapa->setExtent($mapext[0],$mapext[1],$mapext[2],$mapext[3]); + $o = $mapa->outputformat; $o->set("imagemode",MS_IMAGEMODE_RGBA); + if(!$qy) {$img = $mapa->draw();} else {$img = $mapa->drawQuery();} + if (($postgis_mapa != "") || ($postgis_mapa != " ")) {restauraCon($_GET["map"],$postgis_mapa);} -echo header("Content-type: " . $o->mimetype . "\n\n"); -$img->saveImage(""); + +if (!function_exists('imagepng')) +{ + $s = PHP_SHLIB_SUFFIX; + @dl( 'php_gd.'.$s ); + if (!function_exists('imagepng')) + {@dl( 'php_gd2.'.$s );} + if (!function_exists('imagepng')) + {$_GET["TIPOIMAGEM"] = "";} +} + +if($_GET["TIPOIMAGEM"] != "" && $_GET["TIPOIMAGEM"] != "nenhum") +{ + $nomer = ($img->imagepath)."filtroimgtemp".nomeRandomico(); + $img->saveImage($nomer); + filtraImagem($nomer,$_GET["TIPOIMAGEM"]); + $img = imagecreatefrompng($nomer); + imagealphablending($img, false); + imagesavealpha($img, true); + echo header("Content-type: " . $o->mimetype . "\n\n"); + imagepng($img); +} +else{ + echo header("Content-type: " . $o->mimetype . "\n\n"); + $img->saveImage(""); +} function nomeRandomico($n=10) { $nomes = ""; @@ -160,4 +190,32 @@ function restauraCon($map_file,$postgis_mapa) } } +function filtraImagem($nomer,$tipoimagem) +{ + include_once("classe_imagem.php"); + $tiposImagem = explode(" ",$tipoimagem); + foreach ($tiposImagem as $tipoimagem){ + $m = new Imagem($nomer); + if ($tipoimagem == "cinza") + {imagepng($m->cinzaNormal(),str_replace("\\","/",$nomer));} + if ($tipoimagem == "sepiaclara") + {imagepng($m->sepiaClara(),str_replace("\\","/",$nomer));} + if ($tipoimagem == "sepianormal") + {imagepng($m->sepiaNormal(),str_replace("\\","/",$nomer));} + if ($tipoimagem == "negativo") + {imagepng($m->negativo(),str_replace("\\","/",$nomer));} + if ($tipoimagem == "detectaBordas") + {imagepng($m->detectaBordas(),str_replace("\\","/",$nomer));} + if ($tipoimagem == "embassa") + {imagepng($m->embassa(),str_replace("\\","/",$nomer));} + if ($tipoimagem == "gaussian_blur") + {imagepng($m->gaussian_blur(),str_replace("\\","/",$nomer));} + if ($tipoimagem == "selective_blur") + {imagepng($m->selective_blur(),str_replace("\\","/",$nomer));} + if ($tipoimagem == "mean_removal") + {imagepng($m->mean_removal(),str_replace("\\","/",$nomer));} + if ($tipoimagem == "pixelate") + {imagepng($m->pixelate(),str_replace("\\","/",$nomer));} + } +} ?> \ No newline at end of file diff --git a/ferramentas/tipoimagem/index.js.php b/ferramentas/tipoimagem/index.js.php index e90fb0e..9a0ef62 100644 --- a/ferramentas/tipoimagem/index.js.php +++ b/ferramentas/tipoimagem/index.js.php @@ -181,7 +181,8 @@ i3GEOF.tipoimagem = { {filtro = 'nenhum';} i3GEO.configura.tipoimagem = filtro; g_operacao = "outras"; - i3GEO.atualiza(); + //i3GEO.atualiza(); + i3GEO.Interface.alteraParametroLayers("tipoimagem",filtro); }, /* Function: adicionar diff --git a/guia_de_migracao.txt b/guia_de_migracao.txt index da17138..471c654 100644 --- a/guia_de_migracao.txt +++ b/guia_de_migracao.txt @@ -7,7 +7,12 @@ Para a versão 4.4 allow_call_time_pass_reference = On Foi acrescentado um novo LAYER em i3geo/aplicmpa/geral1.map e geral1windows.map com dados do Open Street Map. Caso vc não - queira que essas camadas novas apareçam, basta removê-las desses arquivos. + queira que essa camada nova apareça, basta removê-las desses arquivos. + + Foi incluida a remoção de cookies no ms_criamapa.php, que inicializa o i3geo ($_COOKIE = array();). Se vc precisa definir cookies, + considere a necessidade de comentar a linha de código do ms_criamapa.php. + + Por default, o i3Geo passou a usar a interface openlayers.htm. Se vc quiser modificar isso, altere o ms_configura.php. ------------------------------------------------------------------------------------------------- Para a versão 4.3 diff --git a/ms_criamapa.php b/ms_criamapa.php index 7fe56dc..01b72b1 100644 --- a/ms_criamapa.php +++ b/ms_criamapa.php @@ -19,8 +19,15 @@ http://localhost/i3geo/ms_criamapa.php?temasa=estadosl bioma&layers=estadosl bio Caso a inicialização do i3geo ocorra por um outro programa PHP, o ms_criamapa.php deve ser executado via include. Nesse caso, os parâmetros devem ser especificados como variáveis, p.e., $temasa=bioma; + include("ms_criamapa.php"); +Os cookies passados ao servidor são eliminados com a linha: + +$_COOKIE = array(); + +Se a sua aplicação precisa de cookies, comente essa linha do programa. + Link: http://localhost/i3geo/ms_criamapa.php @@ -110,6 +117,8 @@ Indica onde está o diretório i3geo para que os includes seguintes possam ser loc $caminho é sempre colocada antes do nome dos arquivos que serão incçuídos, p.e., require_once ($caminho."classesphp/carrega_ext.php"); */ +$_COOKIE = array(); + if (!isset($caminho)){$caminho = "";} if (!file_exists($caminho."classesphp/carrega_ext.php")) {echo " Nao foi possivel localizar o diretório classephp. Provavelmente vc precisara definir a variavel $camino";exit;} diff --git a/pacotes/openlayers/OpenLayers29.js.php b/pacotes/openlayers/OpenLayers29.js.php index 77ba756..b631621 100644 --- a/pacotes/openlayers/OpenLayers29.js.php +++ b/pacotes/openlayers/OpenLayers29.js.php @@ -92,9 +92,17 @@ * issues. Applications that use the code below will continue to work seamlessly * when that happens. */ -var OpenLayers={singleFile:true};(function(){var singleFile=(typeof OpenLayers=="object"&&OpenLayers.singleFile);var scriptLocation;window.OpenLayers={_scriptName:(!singleFile)?"lib/OpenLayers.js":"OpenLayers.js",_getScriptLocation:function(){if(scriptLocation!=undefined){return scriptLocation;} -scriptLocation="";var isOL=new RegExp("(^|(.*?\\/))("+OpenLayers._scriptName+")(\\?|$)");var scripts=document.getElementsByTagName('script');for(var i=0,len=scripts.length;i";}else{var s=document.createElement("script");s.src=host+jsfiles[i];var h=document.getElementsByTagName("head").length?document.getElementsByTagName("head")[0]:document.body;h.appendChild(s);}} if(docWrite){document.write(allScriptTags.join(""));}}})();OpenLayers.VERSION_NUMBER="$Revision: 10129 $";OpenLayers.String={startsWith:function(str,sub){return(str.indexOf(sub)==0);},contains:function(str,sub){return(str.indexOf(sub)!=-1);},trim:function(str){return str.replace(/^\s\s*/,'').replace(/\s\s*$/,'');},camelize:function(str){var oStringList=str.split('-');var camelizedString=oStringList[0];for(var i=1,len=oStringList.length;i