Commit 98095dc90ca73cf5010f3ed858c2118a004da911

Authored by Edmar Moretti
1 parent 7178a511

#538

Showing 2 changed files with 50 additions and 19 deletions   Show diff stats
mashups/openlayers.php
@@ -105,11 +105,11 @@ if(isset($fundo) && $fundo != ""){ @@ -105,11 +105,11 @@ if(isset($fundo) && $fundo != ""){
105 $fundo = str_replace(","," ",$fundo); 105 $fundo = str_replace(","," ",$fundo);
106 $fundo = explode(" ",$fundo); 106 $fundo = explode(" ",$fundo);
107 } 107 }
  108 +
108 // 109 //
109 //define quais os layers que comporão o mapa 110 //define quais os layers que comporão o mapa
110 // 111 //
111 if(isset($temas)){ 112 if(isset($temas)){
112 - $layers = array();  
113 $objOpenLayers = array(); 113 $objOpenLayers = array();
114 } 114 }
115 if($temas != "") 115 if($temas != "")
@@ -124,22 +124,43 @@ if($temas != "") @@ -124,22 +124,43 @@ if($temas != "")
124 $visiveis = strtolower($visiveis); 124 $visiveis = strtolower($visiveis);
125 $visiveis = explode(",",$visiveis); 125 $visiveis = explode(",",$visiveis);
126 } 126 }
127 - $layers = array();  
128 $objOpenLayers = array(); 127 $objOpenLayers = array();
129 if(isset($servidor) && $servidor != "../ogc.php"){ 128 if(isset($servidor) && $servidor != "../ogc.php"){
130 $layers = $temas; 129 $layers = $temas;
131 foreach($temas as $tema){ 130 foreach($temas as $tema){
132 - $objOpenLayers[] = 'new OpenLayers.Layer.WMS( "'.$tema.'", "'.$servidor.'?tema='.$tema.'&",{layers:"'.$tema.'",transparent: "true", format: "image/png"},{isBaseLayer:false})'; 131 + $nomeLayer = str_replace(".map","",basename($tema));
  132 + $nomeLayer = str_replace(".php","",$nomeLayer);
  133 + $objOpenLayers[] = 'new OpenLayers.Layer.WMS( "'.$tema.'", "'.$servidor.'?tema='.$tema.'&",{layers:"'.$nomeLayer.'",transparent: "true", format: "image/png"},{isBaseLayer:false})';
133 } 134 }
134 } 135 }
135 else{ 136 else{
136 foreach($temas as $tema){ 137 foreach($temas as $tema){
  138 + $nomeMap = "";
137 if(file_exists($locaplic."/temas/".$tema.".map")){ 139 if(file_exists($locaplic."/temas/".$tema.".map")){
138 - $maptemp = @ms_newMapObj($locaplic."/temas/".$tema.".map");  
139 - for($i=0;$i<($maptemp->numlayers);++$i)  
140 - {  
141 - $layern = $maptemp->getLayer($i);  
142 - $layers[] = $layern->name; 140 + $nomeMap = $locaplic."/temas/".$tema.".map";
  141 + }
  142 + else{
  143 + if(file_exists($tema)){
  144 + $nomeMap = $tema;
  145 + }
  146 + }
  147 + if($nomeMap != ""){
  148 + if(empty($layers)){
  149 + $layers = array();
  150 + $maptemp = @ms_newMapObj($nomeMap);
  151 + for($i=0;$i<($maptemp->numlayers);++$i) {
  152 + $layern = $maptemp->getLayer($i);
  153 + $layers[] = $layern->name;
  154 + }
  155 + $nomeLayer = implode(",",$layers);
  156 + $tituloLayer = $layern->getmetadata("tema");
  157 + }
  158 + else{
  159 + $nomeLayer = str_replace(" ",",",$layers);
  160 + $maptemp = @ms_newMapObj($nomeMap);
  161 + $temp = explode(",",$layers);
  162 + $layern = $maptemp->getLayerByName($temp[0]);
  163 + $tituloLayer = $layern->getmetadata("tema");
143 } 164 }
144 $ebase = "false"; 165 $ebase = "false";
145 if(isset($fundo) && in_array($tema,$fundo)) 166 if(isset($fundo) && in_array($tema,$fundo))
@@ -147,11 +168,10 @@ if($temas != &quot;&quot;) @@ -147,11 +168,10 @@ if($temas != &quot;&quot;)
147 $visivel = "false"; 168 $visivel = "false";
148 if(in_array($tema,$visiveis)) 169 if(in_array($tema,$visiveis))
149 {$visivel = "true";} 170 {$visivel = "true";}
150 - $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.'})'; 171 + $objOpenLayers[] = 'new OpenLayers.Layer.WMS( "'.$tituloLayer.'", "../ogc.php?tema='.$tema.'&",{layers:"'.$nomeLayer.'",transparent: "true", format: "image/png"},{singleTile:true,visibility:'.$visivel.',isBaseLayer:'.$ebase.'})';
151 } 172 }
152 else 173 else
153 {echo $tema." não foi encontrado.<br>";} 174 {echo $tema." não foi encontrado.<br>";}
154 - $layers = array();  
155 } 175 }
156 } 176 }
157 } 177 }
@@ -162,7 +182,7 @@ Mashup OpenLayers @@ -162,7 +182,7 @@ Mashup OpenLayers
162 Parâmetros: 182 Parâmetros:
163 kml - lista de endereços (url) de um arquivos kml que serão adicionados ao mapa. Separado por ',' 183 kml - lista de endereços (url) de um arquivos kml que serão adicionados ao mapa. Separado por ','
164 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' 184 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'
165 - temas - lista com os temas (mapfiles) do i3Geo que serão incluídos no mapa 185 + 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
166 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. 186 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.
167 numzoomlevels - número de níveis de zoom, default=6 187 numzoomlevels - número de níveis de zoom, default=6
168 maxextent - extensão geográfica máxima do mapa (xmin,ymin,xmax,ymax) 188 maxextent - extensão geográfica máxima do mapa (xmin,ymin,xmax,ymax)
@@ -360,7 +380,7 @@ else @@ -360,7 +380,7 @@ else
360 echo "i3GEO.editorOL.mapext = new OpenLayers.Bounds(".$mapext.");"; 380 echo "i3GEO.editorOL.mapext = new OpenLayers.Bounds(".$mapext.");";
361 } 381 }
362 ?> 382 ?>
363 -i3GEO.editorOL.mapa = new OpenLayers.Map('i3geoMapa',{controls:[]}) 383 +i3GEO.editorOL.mapa = new OpenLayers.Map('i3geoMapa',{controls:[]});
364 i3GEO.editorOL.inicia(); 384 i3GEO.editorOL.inicia();
365 </script> 385 </script>
366 </body> 386 </body>
@@ -35,7 +35,7 @@ lista - se for igual a &quot;temas&quot;, mostra uma lista dos temas disponíveis @@ -35,7 +35,7 @@ lista - se for igual a &quot;temas&quot;, mostra uma lista dos temas disponíveis
35 35
36 ajuda - se for definida na URL, mostra uma ajuda ao usuário 36 ajuda - se for definida na URL, mostra uma ajuda ao usuário
37 37
38 -tema - nome do tema do serviço. Se for definido, o web service conterá apenas o tema. 38 +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.
39 39
40 intervalo - valor inicial e final com o número de temas que serão mostrados no serviço 40 intervalo - valor inicial e final com o número de temas que serão mostrados no serviço
41 41
@@ -52,6 +52,8 @@ ogc.php?lista=temas @@ -52,6 +52,8 @@ ogc.php?lista=temas
52 52
53 ogc.php?tema=bioma 53 ogc.php?tema=bioma
54 54
  55 +ogc.php?tema=/var/www/i3geo/aplicmap/geral1debianv6.map&layers=mundo
  56 +
55 ogc.php?intervalo=0,50 57 ogc.php?intervalo=0,50
56 */ 58 */
57 // 59 //
@@ -198,7 +200,8 @@ if(!isset($tema)){ @@ -198,7 +200,8 @@ if(!isset($tema)){
198 if ($tipo == "" || $tipo == "metadados") 200 if ($tipo == "" || $tipo == "metadados")
199 { 201 {
200 $tema = explode(" ",$tema); 202 $tema = explode(" ",$tema);
201 - //para o caso do tema ser um arquivo mapfile existente em uma pasta 203 + //para o caso do tema ser um arquivo mapfile existente em uma pasta qualquer
  204 + //$temai3geo = true indica que o layer será buscado na pasta i3geo/temas
202 $temai3geo = true; 205 $temai3geo = true;
203 if(file_exists($_GET["tema"])){ 206 if(file_exists($_GET["tema"])){
204 $nmap = ms_newMapobj($_GET["tema"]); 207 $nmap = ms_newMapobj($_GET["tema"]);
@@ -216,12 +219,19 @@ if ($tipo == &quot;&quot; || $tipo == &quot;metadados&quot;) @@ -216,12 +219,19 @@ if ($tipo == &quot;&quot; || $tipo == &quot;metadados&quot;)
216 $nmap = ms_newMapobj($locaplic."/temas/".$tx.".map"); 219 $nmap = ms_newMapobj($locaplic."/temas/".$tx.".map");
217 $nmap->setmetadata("ows_enable_request","*"); 220 $nmap->setmetadata("ows_enable_request","*");
218 } 221 }
219 - $ts = $nmap->getalllayernames(); 222 + if($temai3geo == false || empty($layers))
  223 + {$ts = $nmap->getalllayernames();}
  224 + else{
  225 + $ts = explode(",",str_replace(" ",",",$layers));
  226 + }
220 foreach ($ts as $t) 227 foreach ($ts as $t)
221 { 228 {
222 $l = $nmap->getlayerbyname($t); 229 $l = $nmap->getlayerbyname($t);
223 - if($cache == true && strtolower($l->getmetadata("cache")) == "sim" && $tipo == "" && count($tema) == 1){  
224 - carregaCacheImagem($_GET["BBOX"],$tx,$_GET["WIDTH"],$_GET["HEIGHT"],$cachedir); 230 + //necessário pq o mapfile pode ter todos os layers como default
  231 + if($temai3geo == false)
  232 + {$l->set("status",MS_OFF);}
  233 + if($cache == true && strtolower($l->getmetadata('cache')) == 'sim' && $tipo == '' && count($tema) == 1){
  234 + carregaCacheImagem($_GET['BBOX'],$tx,$_GET['WIDTH'],$_GET['HEIGHT'],$cachedir);
225 } 235 }
226 $l->setmetadata("ows_title",pegaNome($l)); 236 $l->setmetadata("ows_title",pegaNome($l));
227 $l->setmetadata("ows_srs",$listaepsg); 237 $l->setmetadata("ows_srs",$listaepsg);
@@ -408,8 +418,9 @@ function ogc_imprimeAjuda() @@ -408,8 +418,9 @@ function ogc_imprimeAjuda()
408 echo "Para escolher um tema, utilize:<br>"; 418 echo "Para escolher um tema, utilize:<br>";
409 echo "ogc.php?lista=temas - para listar os temas disponíveis<br>"; 419 echo "ogc.php?lista=temas - para listar os temas disponíveis<br>";
410 echo "Para usar esse web service, além dos parâmetros normais, vc deverá incluir o parâmetro &tema=,<br>"; 420 echo "Para usar esse web service, além dos parâmetros normais, vc deverá incluir o parâmetro &tema=,<br>";
411 - echo "ou seja,http://[host]/i3geo/ogc.php?tema=[código do tema]<br><br>";  
412 - echo "Utilize o sistema de administração do i3Geo para configurar quais os temas podem ser utilizados."; 421 + echo "ou seja,http://[host]/i3geo/ogc.php?tema=[código do tema]<br>";
  422 + 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<br><br>";
  423 + echo "Utilize o sistema de administração do i3Geo para configurar quais os temas da pasta i3geo/temas podem ser utilizados.";
413 echo "Utilize o parametro &intervalo=0,20 para definir o número de temas desejado na função getcapabilities."; 424 echo "Utilize o parametro &intervalo=0,20 para definir o número de temas desejado na função getcapabilities.";
414 } 425 }
415 function ogc_imprimeListaDeTemas() 426 function ogc_imprimeListaDeTemas()