From f515c49cc9b3539f95aba9227b64db4fdddbce54 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Fri, 8 Aug 2014 03:33:10 +0000 Subject: [PATCH] Inclusão de opção para filtrar dados nos mashups. --- admin/admin.db | Bin 263168 -> 0 bytes mashups/index.html | 12 ++++++++++++ mashups/openlayers.php | 26 ++++++++++++++++++++++++++ mashups/osm.php | 16 ++++++++++++++++ ogc.php | 31 +++++++++++++++++++++++++------ 5 files changed, 79 insertions(+), 6 deletions(-) diff --git a/admin/admin.db b/admin/admin.db index 63a2ad2..f37b2a5 100644 Binary files a/admin/admin.db and b/admin/admin.db differ diff --git a/mashups/index.html b/mashups/index.html index a29abcd..6d317bb 100644 --- a/mashups/index.html +++ b/mashups/index.html @@ -60,6 +60,18 @@ body,td {

+

Filtro - cada tema pode receber filtros seguindo-se a sintaxe &map_layer_{codigo do tema}_filter=
+ Em camadas com origem em arquivos shapefile o valor do filtro segue o padrão (('[nome_da_coluna]'='valor_do_registro'))
+ Camadas baseadas em Postgis seguem o padrão nome_da_coluna=valor_do_registro. +

+

+ Windows: openlayers.php?map_layer__lbiomashp_filter=(('[CD_LEGENDA]'='CAATINGA'))&temas=_wbiomashp&layers=_wbiomashp +

+

+ Linux: openlayers.php?map_layer__lbiomashp_filter=(('[CD_LEGENDA]'='CAATINGA'))&temas=_lbiomashp&layers=_lbiomashp +

+
+

Todas as opções e um tema adicionado

Windows: openlayers.php?temas=_wbiomashp&largura=800&altura=500 diff --git a/mashups/openlayers.php b/mashups/openlayers.php index f740441..ffe765a 100644 --- a/mashups/openlayers.php +++ b/mashups/openlayers.php @@ -283,6 +283,14 @@ if($temas != ""){ if($layern->type != 2 && $layern->type != 3){ $opacidade = 1; } + // + //verifica se deve aplicar filtro + // + $filtro = $_GET["map_layer_".$layern->name."_filter"]; + if(!empty($filtro)){ + $DESLIGACACHE = "sim"; + $nocache = "map_layer_".$layern->name."_filter=".$filtro."&".$nocache; + } // nesse caso o layer e adicionado como TMS // tms leva os parametros do TMS $objOpenLayers[] = 'new OpenLayers.Layer.TMS("'.$tituloLayer.'", "../ogc.php?'.$nocache.'tema='.$tema.'&DESLIGACACHE='.$DESLIGACACHE.'",{tileOrigin: new OpenLayers.LonLat(-180, -90),opacity:'.$opacidade.',serviceVersion:"&tms=",visibility:'.$visivel.',isBaseLayer:'.$ebase.',layername:"'.$nomeLayer.'",type:"png"})'; @@ -300,6 +308,14 @@ if($temas != ""){ if($l->type != 2 && $l->type != 3){ $opacidade = 1; } + // + //verifica se deve aplicar filtro + // + $filtro = $_GET["map_layer_".$l->name."_filter"]; + if(!empty($filtro)){ + $DESLIGACACHE = "sim"; + $nocache = "map_layer_".$l->name."_filter=".$filtro."&".$nocache; + } if($tituloLayer != ""){ $objOpenLayers[] = 'new OpenLayers.Layer.WMS( "'.$tituloLayer.'", "../ogc.php?'.$nocache.'tema='.$tema.'&DESLIGACACHE='.$DESLIGACACHE.'&",{opacity:'.$opacidade.',layers:"'.$nomeLayer.'",transparent: "true", format: "image/png"},{singleTile:true,visibility:'.$visivel.',isBaseLayer:'.$ebase.'})'; } @@ -354,6 +370,16 @@ function ajuda(){ desligacache (sim|nao) - desativa o uso do cache de imagens em disco do lado do servidor, forçando a renderização dos tiles de cada camada em cada requisição nocache (sim) - evita o uso de imagens em cache existentes no navegador do usuário + Filtros + + filtros podem ser adicionados incluindo o parametro da seguinte forma: &map_layer__filter= + + Exemplo de filtro + + ?map_layer__lbiomashp_filter=(('[CD_LEGENDA]'='CAATINGA')) + + no caso de camadas Postgis basta usar map_layer__lbiomashp_filter=cd_legenda='CAATINGA' + fundo - lista com os nomes, separados por ',' dos layers que serão usados como fundo para o mapa. Se não for definido, será usado o default. O primeiro da lista será o fundo ativo. Se na lista de temas de fundo estiver algum tema incluido com o parametro 'temas', esses serão incluídos como temas de fundo. diff --git a/mashups/osm.php b/mashups/osm.php index 721cace..c56b2c5 100755 --- a/mashups/osm.php +++ b/mashups/osm.php @@ -283,6 +283,14 @@ if($temas != ""){ if($layern->type != 2 && $layern->type != 3){ $opacidade = 1; } + // + //verifica se deve aplicar filtro + // + $filtro = $_GET["map_layer_".$layern->name."_filter"]; + if(!empty($filtro)){ + $DESLIGACACHE = "sim"; + $nocache = "map_layer_".$layern->name."_filter=".$filtro."&".$nocache; + } // nesse caso o layer e adicionado como TMS // tms leva os parametros do TMS $objOpenLayers[] = 'new OpenLayers.Layer.XYZ("'.$tituloLayer.'", "../ogc.php?Z=${z}&X=${x}&Y=${y}&'.$nocache.'tema='.$tema.'&DESLIGACACHE='.$DESLIGACACHE.'&SRS=EPSG:3857", @@ -301,6 +309,14 @@ if($temas != ""){ if($l->type != 2 && $l->type != 3){ $opacidade = 1; } + // + //verifica se deve aplicar filtro + // + $filtro = $_GET["map_layer_".$l->name."_filter"]; + if(!empty($filtro)){ + $DESLIGACACHE = "sim"; + $nocache = "map_layer_".$l->name."_filter=".$filtro."&".$nocache; + } if($tituloLayer != ""){ $objOpenLayers[] = 'new OpenLayers.Layer.WMS( "'.$tituloLayer.'", "../ogc.php?'.$nocache.'tema='.$tema.'&DESLIGACACHE='.$DESLIGACACHE.'&",{opacity:'.$opacidade.',layers:"'.$nomeLayer.'",transparent: "true", format: "image/png"},{singleTile:true,visibility:'.$visivel.',isBaseLayer:'.$ebase.'})'; } diff --git a/ogc.php b/ogc.php index 0bd0c93..6e6af06 100644 --- a/ogc.php +++ b/ogc.php @@ -56,6 +56,14 @@ id_medida_variavel - id da medida de variavel - utilizado apenas quando a fonte restauramapa - ID de um mapa salvo no sistema de administracao. O mapa e restaurado e tratado como WMS DESLIGACACHE (opcional) {sim|nao} - forca a nao usar o cache de imagens qd definido como "sim", do contrário, o uso ou não do cache será definido automaticamente + +filtros - filtros podem ser adicionados incluindo o parametro da seguinte forma: &map_layer__filter= + + Exemplo de filtro + + http://localhost/i3geo/ogc.php?map_layer__lbiomashp_filter=(('[CD_LEGENDA]'='CAATINGA'))&tema=_lbiomashp&SRS=EPSG:4618&WIDTH=500&HEIGHT=500&BBOX=-76.5125927,-39.3925675209,-29.5851853,9.49014852081&FORMAT=image/png&service=wms&version=1.1.0&request=getmap&layers=_lbiomashp + + no caso de camadas Postgis basta usar map_layer__lbiomashp_filter=cd_legenda='CAATINGA' Exemplos: @@ -230,14 +238,15 @@ if(isset($_GET["Z"]) && isset($_GET["X"])){ } // //se o outputformat for definido, evita o cahce de arquivo +//o mesmo se existir filtro para o layer // -if(isset($_GET["OUTPUTFORMAT"])){ +if(isset($_GET["OUTPUTFORMAT"]) || !empty($_GET["map_layer_".$tema."_filter"])){ $_GET["DESLIGACACHE"] = "sim"; } if(isset($_GET["DESLIGACACHE"]) && $_GET["DESLIGACACHE"] == "sim"){ $agora = time(); $cache = false; -} +} $nomeMapfileTmp = $dir_tmp."/ogc_".md5($tema)."_".$agora.".map"; $nomeMapfileTmp = str_replace(",","",$nomeMapfileTmp); $nomeMapfileTmp = str_replace(" ","",$nomeMapfileTmp); @@ -274,8 +283,7 @@ else{ $oMap->setmetadata("wms_attribution_title",$tituloInstituicao); $oMap->setmetadata("ows_enable_request","*"); $e = $oMap->extent; - $extensaoMap = ($e->minx)." ".($e->miny)." ".($e->maxx)." ".($e->maxy); - + $extensaoMap = ($e->minx)." ".($e->miny)." ".($e->maxx)." ".($e->maxy); //gera o mapa if ($tipo == "" || $tipo == "metadados"){ $tema = explode(" ",$tema); @@ -395,7 +403,17 @@ else{ if($versao > 5){ $l->setprocessing("LABEL_NO_CLIP=True"); $l->setprocessing("POLYLINE_NO_CLIP=True"); - } + } + // + //verifica se existem parametros de substituicao passados via url + // + $parametro = $_GET["map_layer_".$l->name."_filter"]; + //echo $parametro;exit; + if(!empty($parametro)){ + $l->setfilter($parametro); + $cache = false; + } + ms_newLayerObj($oMap, $l); //$req->setParameter("LAYERS", "mundo"); } @@ -487,7 +505,8 @@ else{ } //echo "

";
 		//var_dump($codigosTema);
-		//exit;
+		//exit;
+
 		foreach($codigosTema as $c){
 			$codigoTema = $c["tema"];
 			if(file_exists($locaplic."/temas/".$codigoTema.".map")){
--
libgit2 0.21.2