From 98095dc90ca73cf5010f3ed858c2118a004da911 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Tue, 12 Jun 2012 01:55:55 +0000 Subject: [PATCH] #538 --- mashups/openlayers.php | 44 ++++++++++++++++++++++++++++++++------------ ogc.php | 25 ++++++++++++++++++------- 2 files changed, 50 insertions(+), 19 deletions(-) diff --git a/mashups/openlayers.php b/mashups/openlayers.php index f9fb256..dbc9960 100644 --- a/mashups/openlayers.php +++ b/mashups/openlayers.php @@ -105,11 +105,11 @@ if(isset($fundo) && $fundo != ""){ $fundo = str_replace(","," ",$fundo); $fundo = explode(" ",$fundo); } + // //define quais os layers que comporão o mapa // if(isset($temas)){ - $layers = array(); $objOpenLayers = array(); } if($temas != "") @@ -124,22 +124,43 @@ if($temas != "") $visiveis = strtolower($visiveis); $visiveis = explode(",",$visiveis); } - $layers = array(); $objOpenLayers = array(); if(isset($servidor) && $servidor != "../ogc.php"){ $layers = $temas; foreach($temas as $tema){ - $objOpenLayers[] = 'new OpenLayers.Layer.WMS( "'.$tema.'", "'.$servidor.'?tema='.$tema.'&",{layers:"'.$tema.'",transparent: "true", format: "image/png"},{isBaseLayer:false})'; + $nomeLayer = str_replace(".map","",basename($tema)); + $nomeLayer = str_replace(".php","",$nomeLayer); + $objOpenLayers[] = 'new OpenLayers.Layer.WMS( "'.$tema.'", "'.$servidor.'?tema='.$tema.'&",{layers:"'.$nomeLayer.'",transparent: "true", format: "image/png"},{isBaseLayer:false})'; } } else{ foreach($temas as $tema){ + $nomeMap = ""; if(file_exists($locaplic."/temas/".$tema.".map")){ - $maptemp = @ms_newMapObj($locaplic."/temas/".$tema.".map"); - for($i=0;$i<($maptemp->numlayers);++$i) - { - $layern = $maptemp->getLayer($i); - $layers[] = $layern->name; + $nomeMap = $locaplic."/temas/".$tema.".map"; + } + else{ + if(file_exists($tema)){ + $nomeMap = $tema; + } + } + if($nomeMap != ""){ + if(empty($layers)){ + $layers = array(); + $maptemp = @ms_newMapObj($nomeMap); + for($i=0;$i<($maptemp->numlayers);++$i) { + $layern = $maptemp->getLayer($i); + $layers[] = $layern->name; + } + $nomeLayer = implode(",",$layers); + $tituloLayer = $layern->getmetadata("tema"); + } + else{ + $nomeLayer = str_replace(" ",",",$layers); + $maptemp = @ms_newMapObj($nomeMap); + $temp = explode(",",$layers); + $layern = $maptemp->getLayerByName($temp[0]); + $tituloLayer = $layern->getmetadata("tema"); } $ebase = "false"; if(isset($fundo) && in_array($tema,$fundo)) @@ -147,11 +168,10 @@ if($temas != "") $visivel = "false"; if(in_array($tema,$visiveis)) {$visivel = "true";} - $objOpenLayers[] = 'new OpenLayers.Layer.WMS( "'.($layern->getmetadata("tema")).'", "../ogc.php?tema='.$tema.'&",{layers:"'.implode(",",$layers).'",transparent: "true", format: "image/png"},{singleTile:true,visibility:'.$visivel.',isBaseLayer:'.$ebase.'})'; + $objOpenLayers[] = 'new OpenLayers.Layer.WMS( "'.$tituloLayer.'", "../ogc.php?tema='.$tema.'&",{layers:"'.$nomeLayer.'",transparent: "true", format: "image/png"},{singleTile:true,visibility:'.$visivel.',isBaseLayer:'.$ebase.'})'; } else {echo $tema." não foi encontrado.
";} - $layers = array(); } } } @@ -162,7 +182,7 @@ Mashup OpenLayers Parâmetros: kml - lista de endereços (url) de um arquivos kml que serão adicionados ao mapa. Separado por ',' servidor - por default é ../ogc.php o que força o uso do i3geo local. Esse é o programa que será utilizado em conjunto com a lista definida no parâmetro 'temas' - temas - lista com os temas (mapfiles) do i3Geo que serão incluídos no mapa + temas - lista com os temas (mapfiles) do i3Geo que serão incluídos no mapa. Pode ser incluído um arquivo mapfile que esteja fora da pasta i3geo/temas. Nesse caso, deve-se definir o caminho completo do arquivo e também o parâmetro &layers visiveis - lista de temas (mesmos nomes do parâmetro temas) que iniciarão como visíveis no mapa. Se não for definido, todos os temas serão visíveis. numzoomlevels - número de níveis de zoom, default=6 maxextent - extensão geográfica máxima do mapa (xmin,ymin,xmax,ymax) @@ -360,7 +380,7 @@ else echo "i3GEO.editorOL.mapext = new OpenLayers.Bounds(".$mapext.");"; } ?> -i3GEO.editorOL.mapa = new OpenLayers.Map('i3geoMapa',{controls:[]}) +i3GEO.editorOL.mapa = new OpenLayers.Map('i3geoMapa',{controls:[]}); i3GEO.editorOL.inicia(); diff --git a/ogc.php b/ogc.php index 3624d51..0d32615 100644 --- a/ogc.php +++ b/ogc.php @@ -35,7 +35,7 @@ lista - se for igual a "temas", mostra uma lista dos temas disponíveis ajuda - se for definida na URL, mostra uma ajuda ao usuário -tema - nome do tema do serviço. Se for definido, o web service conterá apenas o tema. +tema - nome do tema do serviço. Se for definido, o web service conterá apenas esse tema. O tema é o nome do mapfile existente em i3geo/temas, mas pode ser especificado um mapfile existente em outra pasta. Nesse caso, deve-se especificar o caminho completo para o arquivo. intervalo - valor inicial e final com o número de temas que serão mostrados no serviço @@ -52,6 +52,8 @@ ogc.php?lista=temas ogc.php?tema=bioma +ogc.php?tema=/var/www/i3geo/aplicmap/geral1debianv6.map&layers=mundo + ogc.php?intervalo=0,50 */ // @@ -198,7 +200,8 @@ if(!isset($tema)){ if ($tipo == "" || $tipo == "metadados") { $tema = explode(" ",$tema); - //para o caso do tema ser um arquivo mapfile existente em uma pasta + //para o caso do tema ser um arquivo mapfile existente em uma pasta qualquer + //$temai3geo = true indica que o layer será buscado na pasta i3geo/temas $temai3geo = true; if(file_exists($_GET["tema"])){ $nmap = ms_newMapobj($_GET["tema"]); @@ -216,12 +219,19 @@ if ($tipo == "" || $tipo == "metadados") $nmap = ms_newMapobj($locaplic."/temas/".$tx.".map"); $nmap->setmetadata("ows_enable_request","*"); } - $ts = $nmap->getalllayernames(); + if($temai3geo == false || empty($layers)) + {$ts = $nmap->getalllayernames();} + else{ + $ts = explode(",",str_replace(" ",",",$layers)); + } foreach ($ts as $t) { $l = $nmap->getlayerbyname($t); - if($cache == true && strtolower($l->getmetadata("cache")) == "sim" && $tipo == "" && count($tema) == 1){ - carregaCacheImagem($_GET["BBOX"],$tx,$_GET["WIDTH"],$_GET["HEIGHT"],$cachedir); + //necessário pq o mapfile pode ter todos os layers como default + if($temai3geo == false) + {$l->set("status",MS_OFF);} + if($cache == true && strtolower($l->getmetadata('cache')) == 'sim' && $tipo == '' && count($tema) == 1){ + carregaCacheImagem($_GET['BBOX'],$tx,$_GET['WIDTH'],$_GET['HEIGHT'],$cachedir); } $l->setmetadata("ows_title",pegaNome($l)); $l->setmetadata("ows_srs",$listaepsg); @@ -408,8 +418,9 @@ function ogc_imprimeAjuda() echo "Para escolher um tema, utilize:
"; echo "ogc.php?lista=temas - para listar os temas disponíveis
"; echo "Para usar esse web service, além dos parâmetros normais, vc deverá incluir o parâmetro &tema=,
"; - echo "ou seja,http://[host]/i3geo/ogc.php?tema=[código do tema]

"; - echo "Utilize o sistema de administração do i3Geo para configurar quais os temas podem ser utilizados."; + echo "ou seja,http://[host]/i3geo/ogc.php?tema=[código do tema]
"; + echo "no lugar do código pode ser especificado também um arquivo mapfile qualquer. Nesse caso, deve ser digitado o caminho completo no servidor

"; + echo "Utilize o sistema de administração do i3Geo para configurar quais os temas da pasta i3geo/temas podem ser utilizados."; echo "Utilize o parametro &intervalo=0,20 para definir o número de temas desejado na função getcapabilities."; } function ogc_imprimeListaDeTemas() -- libgit2 0.21.2