Commit fa64b543997625246607ea9953130df9142fd0f5

Authored by Edmar Moretti
1 parent 8321bc97

correção na listagem de camadas do web service ogc

admin/php/classe_arvore.php
@@ -59,7 +59,7 @@ class Arvore @@ -59,7 +59,7 @@ class Arvore
59 $status = "fechado"; 59 $status = "fechado";
60 if(strtolower($reg["aberto"]) == "sim") 60 if(strtolower($reg["aberto"]) == "sim")
61 $status = "aberto"; 61 $status = "aberto";
62 - $url = "";//$this->urli3geo."/admin/xmlmenutemas.php?id_menu=".$reg["id_menu"]; 62 + //$url = $this->urli3geo."/admin/xmlmenutemas.php?id_menu=".$reg["id_menu"];
63 $resultado[] = array("desc"=>$this->converte($reg["desc_menu"]),"publicado"=>$reg["publicado_menu"],"nomemenu"=>$this->converte($reg["nome_menu"]),"idmenu"=>$reg["id_menu"],"arquivo"=>"","status"=>$status,"url"=>$url); 63 $resultado[] = array("desc"=>$this->converte($reg["desc_menu"]),"publicado"=>$reg["publicado_menu"],"nomemenu"=>$this->converte($reg["nome_menu"]),"idmenu"=>$reg["id_menu"],"arquivo"=>"","status"=>$status,"url"=>$url);
64 } 64 }
65 } 65 }
@@ -188,7 +188,7 @@ class Arvore @@ -188,7 +188,7 @@ class Arvore
188 if (strtolower($tema["ogc_tema"]) == "sim") 188 if (strtolower($tema["ogc_tema"]) == "sim")
189 {$ogc = "sim";$grupoogc = "sim";} 189 {$ogc = "sim";$grupoogc = "sim";}
190 } 190 }
191 - $subgrupos[] = array("publicado"=>($sgrupo["publicado"]),"nome"=>$this->converte($sgrupo["nome_subgrupo"]),"download"=>$down,"ogc"=>$ogc); 191 + $subgrupos[] = array("id_n2"=>$sgrupo["id_n2"],"publicado"=>($sgrupo["publicado"]),"nome"=>$this->converte($sgrupo["nome_subgrupo"]),"download"=>$down,"ogc"=>$ogc);
192 } 192 }
193 } 193 }
194 } 194 }
@@ -324,9 +324,10 @@ class Arvore @@ -324,9 +324,10 @@ class Arvore
324 } 324 }
325 function converte($texto){ 325 function converte($texto){
326 if($this->convUTF == true) 326 if($this->convUTF == true)
327 - $texto = mb_convert_encoding($texto,mb_detect_encoding($texto),"UTF8"); 327 + $texto = mb_convert_encoding($texto,mb_detect_encoding($texto),"UTF-8");
328 else 328 else
329 $texto = mb_convert_encoding($texto,mb_detect_encoding($texto),"ISO-8859-1"); 329 $texto = mb_convert_encoding($texto,mb_detect_encoding($texto),"ISO-8859-1");
  330 +
330 return $texto; 331 return $texto;
331 } 332 }
332 } 333 }
classesphp/classe_menutemas.php
@@ -409,7 +409,7 @@ array @@ -409,7 +409,7 @@ array
409 {$ogc = "sim";} 409 {$ogc = "sim";}
410 } 410 }
411 $nome = ixml($sgrupo,"SDTIPO"); 411 $nome = ixml($sgrupo,"SDTIPO");
412 - $subgrupos[] = array("nome"=>$nome,"ogc"=>$ogc,"download"=>$down,"ogc"=>$ogc); 412 + $subgrupos[] = array("nome"=>$nome,"ogc"=>$ogc,"download"=>$down);
413 } 413 }
414 } 414 }
415 } 415 }
menutemas/admin.db
No preview for this file type
@@ -53,7 +53,10 @@ ogc.php?tema=bioma @@ -53,7 +53,10 @@ ogc.php?tema=bioma
53 53
54 ogc.php?intervalo=0,50 54 ogc.php?intervalo=0,50
55 */ 55 */
56 -error_reporting(0); 56 +
  57 +//
  58 +//validações e includes
  59 +//
57 if (!function_exists('ms_GetVersion')) 60 if (!function_exists('ms_GetVersion'))
58 { 61 {
59 if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) 62 if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN'))
@@ -69,6 +72,7 @@ include("ms_configura.php"); @@ -69,6 +72,7 @@ include("ms_configura.php");
69 include("classesphp/pega_variaveis.php"); 72 include("classesphp/pega_variaveis.php");
70 include("classesphp/classe_menutemas.php"); 73 include("classesphp/classe_menutemas.php");
71 74
  75 +error_reporting(0);
72 // 76 //
73 //pega os endereços para compor a url de chamada do gerador de web services 77 //pega os endereços para compor a url de chamada do gerador de web services
74 //ogc.php 78 //ogc.php
@@ -79,78 +83,20 @@ $protocolo1 = strtolower($protocolo) . '://'.$_SERVER['SERVER_NAME']; @@ -79,78 +83,20 @@ $protocolo1 = strtolower($protocolo) . '://'.$_SERVER['SERVER_NAME'];
79 $protocolo = strtolower($protocolo) . '://'.$_SERVER['SERVER_NAME'] .":". $_SERVER['SERVER_PORT']; 83 $protocolo = strtolower($protocolo) . '://'.$_SERVER['SERVER_NAME'] .":". $_SERVER['SERVER_PORT'];
80 $urli3geo = str_replace("/ogc.php","",$protocolo.$_SERVER["PHP_SELF"]); 84 $urli3geo = str_replace("/ogc.php","",$protocolo.$_SERVER["PHP_SELF"]);
81 // 85 //
82 -//pega a lista de menus que será processada  
83 -//se a variável definida em ms_configura for = "", a busca é feita  
84 -//pelo método Menutemas 86 +//imprime na tela a ajuda
85 // 87 //
86 -  
87 -if(!isset($perfil)){$perfil = "";}  
88 -if($menutemas != "" || is_array($menutemas))  
89 -{  
90 - foreach($menutemas as $m)  
91 - {  
92 - $menus[] = $m["arquivo"];  
93 - }  
94 -  
95 -}  
96 -else 88 +if (isset($ajuda))
97 { 89 {
98 - $m = new Menutemas("",$perfil,$locsistemas,$locaplic,"",$urli3geo);  
99 - foreach($m->pegaListaDeMenus() as $menu)  
100 - {  
101 - $menus[] = $menu["url"];  
102 - } 90 + ogc_imprimeAjuda();
  91 + exit;
103 } 92 }
104 -if(!isset($menus))  
105 -$menus = array("menutemas/menutemas.xml");  
106 -//pega a lista de grupos  
107 -if ($lista == "temas")  
108 -{  
109 - echo '<html><head><title>WMS</title><meta name="description" content="OGC"><meta name="keywords" content="WMS OGC mapa sig gis webmapping geo geoprocessamento interativo meio ambiente MMA cartografia geografia"> <meta name="robots" content="index,follow">';  
110 - echo "<body><b>Lista de temas por grupos e subgrupos e endereços de acesso aos dados por meio de Web Services WMS (os códigos dos temas estão em vermelho)</b><br><br>";  
111 - $imprimir = "";  
112 - foreach ($menus as $menu)  
113 - {  
114 - $xml = simplexml_load_file($menu);  
115 - foreach($xml->GRUPO as $grupo)  
116 - {  
117 - $imprimegrupo = "<i>".mb_convert_encoding($grupo->GTIPO,"HTML-ENTITIES","auto")."</i>";  
118 - foreach($grupo->SGRUPO as $sgrupo)  
119 - {  
120 - $imprimesubgrupo = mb_convert_encoding($sgrupo->SDTIPO,"HTML-ENTITIES","auto");  
121 - foreach($sgrupo->TEMA as $tema)  
122 - {  
123 - if (mb_convert_encoding($tema->OGC,"HTML-ENTITIES","auto") == "")  
124 - {  
125 - $imprimir .= $imprimegrupo."->".$imprimesubgrupo."<br>";  
126 - $imprimir .= "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";  
127 - $id = mb_convert_encoding($tema->TID,"HTML-ENTITIES","auto");  
128 - $imprimir .= "<span style=color:red >".$id."</span>";  
129 - $imprimir .= "&nbsp;-&nbsp;".mb_convert_encoding($tema->TNOME,"HTML-ENTITIES","auto")."&nbsp";  
130 - $imprimir .= "&nbsp;<a href='".$urli3geo."/ogc.php?tema=".$id."&service=wms&request=getcapabilities' >Getcapabilities</a>";  
131 - $imprimir .= "&nbsp;<a href='".$urli3geo."/ogc.php?tema=".$id."&SRS=EPSG:4291&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=".$id."' >GetMap </a>";  
132 - if (mb_convert_encoding($tema->TLINK,"HTML-ENTITIES","auto") != "")  
133 - {$imprimir .= "&nbsp;&nbsp;<a href='".mb_convert_encoding($tema->TLINK,"HTML-ENTITIES","auto")."' >fonte</a>";}  
134 - $imprimir .= "<br>";  
135 - }  
136 - }  
137 - }  
138 - }  
139 - }  
140 - echo $imprimir."</body></html>";  
141 - return;  
142 -}  
143 -if (isset($ajuda)) 93 +//
  94 +//imprime na tela a lista de temas disponíveis
  95 +//
  96 +if($lista == "temas")
144 { 97 {
145 - echo "<pre><b>Construtor de web services do I3Geo.</b><br><br>";  
146 - echo "Esse utilitário usa o arquivo menutemas.xml para gerar web services no padrão OGC.";  
147 - echo "Para escolher um tema, utilize:<br>";  
148 - echo "ogc.php?lista=temas - para listar os temas disponíveis<br>";  
149 - echo "Para usar esse web service, além dos parâmetros normais, vc deverá incluir o parâmetro &tema=,<br>";  
150 - echo "ou seja,http://[host]/i3geo/ogc.php?tema=[código do tema obtido do menutemas.xml]<br><br>";  
151 - echo "Se não for desejado que um tema apareça na lista, é necessário incluir a tag <OGC>nao</OGC> no registro do tema no arquivo menutemas.xml.<br>";  
152 - echo "Utilize o parametro &intervalo=0,20 para definir o número de temas.";  
153 - return; 98 + ogc_imprimeListaDeTemas();
  99 + exit;
154 } 100 }
155 // 101 //
156 //cria o web service 102 //cria o web service
@@ -167,10 +113,7 @@ foreach ($_GET as $k=&gt;$v) @@ -167,10 +113,7 @@ foreach ($_GET as $k=&gt;$v)
167 {$tema = $v;} 113 {$tema = $v;}
168 if(strtolower($k) == "layer") 114 if(strtolower($k) == "layer")
169 {$tema = $v;} 115 {$tema = $v;}
170 - //if(strtolower($k) == "srs")  
171 - //{$SRS = $v;}  
172 } 116 }
173 -  
174 if(count($_GET) == 0){ 117 if(count($_GET) == 0){
175 $tipo="intervalo"; 118 $tipo="intervalo";
176 $req->setParameter("REQUEST", "getCapabilities"); 119 $req->setParameter("REQUEST", "getCapabilities");
@@ -204,7 +147,6 @@ if(!isset($tema)){ @@ -204,7 +147,6 @@ if(!isset($tema)){
204 $intervalo = "0,5000"; 147 $intervalo = "0,5000";
205 $tipo = "intervalo"; 148 $tipo = "intervalo";
206 } 149 }
207 -  
208 if ($tipo == "" || $tipo == "metadados") 150 if ($tipo == "" || $tipo == "metadados")
209 { 151 {
210 $tema = explode(" ",$tema); 152 $tema = explode(" ",$tema);
@@ -269,52 +211,63 @@ else @@ -269,52 +211,63 @@ else
269 $conta = 0; 211 $conta = 0;
270 $int = explode(",",$intervalo); 212 $int = explode(",",$intervalo);
271 $codigosTema = array(); 213 $codigosTema = array();
272 - //var_dump($menus);exit; 214 + $m = new Menutemas("",$perfil,$locsistemas,$locaplic,"",$urli3geo);
  215 + $menus = $m->pegaListaDeMenus();
273 foreach ($menus as $menu) 216 foreach ($menus as $menu)
274 { 217 {
275 - $xml = simplexml_load_file($menu);  
276 - foreach($xml->GRUPO as $grupo) 218 + $grupos = $m->pegaListaDeGrupos($menu["idmenu"],$listasistemas="nao",$listasgrupos="sim");
  219 + foreach($grupos as $grupo)
277 { 220 {
278 - foreach($grupo->SGRUPO as $sgrupo) 221 + if($grupo["ogc"] == "sim")
279 { 222 {
280 - foreach($sgrupo->TEMA as $tm) 223 + foreach($grupo["subgrupos"] as $sgrupo)
281 { 224 {
282 - if (mb_convert_encoding($tm->OGC,"HTML-ENTITIES","auto") == "") 225 + if($sgrupo["ogc"] == "sim")
283 { 226 {
284 - $codigosTema[] = mb_convert_encoding($tm->TID,"HTML-ENTITIES","auto"); 227 + $temas = $m->pegaListaDeTemas($grupo["id_n1"],$sgrupo["id_n2"],$menu["idmenu"]);
  228 + foreach($temas as $tema)
  229 + {
  230 + if($tema["ogc"] == "sim")
  231 + {
  232 + $codigosTema[] = array("tema"=>$tema["tid"],"fonte"=>$tema["link"]);
  233 + }
  234 + }
285 } 235 }
286 } 236 }
287 - } 237 + }
288 } 238 }
289 } 239 }
290 - foreach($codigosTema as $codigoTema) 240 + foreach($codigosTema as $c)
291 { 241 {
292 - if(!file_exists("temas/".$codigoTema.".map")){break;}  
293 - if (@ms_newMapobj("temas/".$codigoTema.".map")) 242 + $codigoTema = $c["tema"];
  243 + if(file_exists("temas/".$codigoTema.".map"))
294 { 244 {
295 - $nmap = ms_newMapobj("temas/".$codigoTema.".map");  
296 - $ts = $nmap->getalllayernames();  
297 - if (count($ts) == 1)  
298 - {  
299 - foreach ($ts as $t)  
300 - {  
301 - if ($oMap->getlayerbyname($t) == "") 245 + if (@ms_newMapobj("temas/".$codigoTema.".map"))
  246 + {
  247 + $nmap = ms_newMapobj("temas/".$codigoTema.".map");
  248 + $ts = $nmap->getalllayernames();
  249 + if (count($ts) == 1)
  250 + {
  251 + foreach ($ts as $t)
302 { 252 {
303 - $conta++;  
304 - if (($conta >= $int[0]) && ($conta <= $int[1])) 253 + if ($oMap->getlayerbyname($t) == "")
305 { 254 {
306 - $l = $nmap->getlayerbyname($t);  
307 - $l->setmetadata("ows_title",pegaNome($l));  
308 - $l->setmetadata("ows_srs","EPSG:4291 EPSG:4326");  
309 - $l->set("status",MS_OFF);  
310 - $l->setmetadata("gml_include_items","all");  
311 - $l->set("dump",MS_TRUE);  
312 - $l->setmetadata("WMS_INCLUDE_ITEMS","all");  
313 - $l->setmetadata("WFS_INCLUDE_ITEMS","all");  
314 - $l->setmetadata("ows_metadataurl_href",mb_convert_encoding($tm->TLINK,"HTML-ENTITIES","auto"));  
315 - $l->setmetadata("ows_metadataurl_type","TC211");  
316 - $l->setmetadata("ows_metadataurl_format","text/html");  
317 - ms_newLayerObj($oMap, $l); 255 + $conta++;
  256 + if (($conta >= $int[0]) && ($conta <= $int[1]))
  257 + {
  258 + $l = $nmap->getlayerbyname($t);
  259 + $l->setmetadata("ows_title",pegaNome($l));
  260 + $l->setmetadata("ows_srs","EPSG:4291 EPSG:4326");
  261 + $l->set("status",MS_OFF);
  262 + $l->setmetadata("gml_include_items","all");
  263 + $l->set("dump",MS_TRUE);
  264 + $l->setmetadata("WMS_INCLUDE_ITEMS","all");
  265 + $l->setmetadata("WFS_INCLUDE_ITEMS","all");
  266 + $l->setmetadata("ows_metadataurl_href",$c["fonte"]);
  267 + $l->setmetadata("ows_metadataurl_type","TC211");
  268 + $l->setmetadata("ows_metadataurl_format","text/html");
  269 + ms_newLayerObj($oMap, $l);
  270 + }
318 } 271 }
319 } 272 }
320 } 273 }
@@ -329,4 +282,81 @@ $contenttype = ms_iostripstdoutbuffercontenttype(); @@ -329,4 +282,81 @@ $contenttype = ms_iostripstdoutbuffercontenttype();
329 header("Content-type: $contenttype"); 282 header("Content-type: $contenttype");
330 ms_iogetStdoutBufferBytes(); 283 ms_iogetStdoutBufferBytes();
331 ms_ioresethandlers(); 284 ms_ioresethandlers();
  285 +//
  286 +//funções
  287 +//
  288 +function ogc_pegaListaDeMenus()
  289 +{
  290 + global $perfil,$menutemas,$locsistemas,$locaplic,$urli3geo;
  291 + if(!isset($perfil)){$perfil = "";}
  292 + if($menutemas != "" || is_array($menutemas))
  293 + {
  294 + foreach($menutemas as $m)
  295 + {$menus[] = $m["arquivo"]; }
  296 + }
  297 + else
  298 + {
  299 + $m = new Menutemas("",$perfil,$locsistemas,$locaplic,"",$urli3geo);
  300 + foreach($m->pegaListaDeMenus() as $menu)
  301 + {$menus[] = $urli3geo."/admin/xmlmenutemas.php?id_menu=".$menu["idmenu"];}
  302 + }
  303 + if(!isset($menus))
  304 + {$menus = array("menutemas/menutemas.xml");}
  305 + return $menus;
  306 +}
  307 +function ogc_imprimeAjuda()
  308 +{
  309 + echo "<pre><b>Construtor de web services do I3Geo.</b><br><br>";
  310 + echo "Esse utilitário usa o arquivo menutemas.xml para gerar web services no padrão OGC.";
  311 + echo "Para escolher um tema, utilize:<br>";
  312 + echo "ogc.php?lista=temas - para listar os temas disponíveis<br>";
  313 + echo "Para usar esse web service, além dos parâmetros normais, vc deverá incluir o parâmetro &tema=,<br>";
  314 + echo "ou seja,http://[host]/i3geo/ogc.php?tema=[código do tema]<br><br>";
  315 + echo "Utilize o sistema de administração do i3Geo para configurar quais os temas podem ser utilizados.";
  316 + echo "Utilize o parametro &intervalo=0,20 para definir o número de temas desejado na função getcapabilities.";
  317 +}
  318 +function ogc_imprimeListaDeTemas()
  319 +{
  320 + global $urli3geo,$perfil,$locsistemas,$locaplic,$menutemas;
  321 + $m = new Menutemas("",$perfil,$locsistemas,$locaplic,$menutemas,$urli3geo);
  322 + $menus = $m->pegaListaDeMenus();
  323 + echo '<html><head><title>WMS</title><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1"><meta name="description" content="OGC"><meta name="keywords" content="WMS OGC mapa sig gis webmapping geo geoprocessamento interativo meio ambiente MMA cartografia geografia"> <meta name="robots" content="index,follow">';
  324 + echo "<body><b>Lista de temas por grupos e subgrupos e endereços de acesso aos dados por meio de Web Services WMS (os códigos dos temas estão em vermelho)</b><br><br>";
  325 + $imprimir = "";
  326 + foreach ($menus as $menu)
  327 + {
  328 + $grupos = $m->pegaListaDeGrupos($menu["idmenu"],$listasistemas="nao",$listasgrupos="sim");
  329 + foreach($grupos as $grupo)
  330 + {
  331 + if($grupo["ogc"] == "sim")
  332 + {
  333 + $imprimegrupo = "<i>".$grupo["nome"]."</i>";
  334 + foreach($grupo["subgrupos"] as $sgrupo)
  335 + {
  336 + if($sgrupo["ogc"] == "sim")
  337 + {
  338 + $imprimesubgrupo = $sgrupo["nome"];
  339 + $temas = $m->pegaListaDeTemas($grupo["id_n1"],$sgrupo["id_n2"],$menu["idmenu"]);
  340 + foreach($temas as $tema)
  341 + {
  342 + if($tema["ogc"] == "sim")
  343 + {
  344 + $imprimir .= $imprimegrupo."->".$imprimesubgrupo."<br>";
  345 + $imprimir .= "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
  346 + $imprimir .= "<span style=color:red >".$tema["tid"]."</span>";
  347 + $imprimir .= "&nbsp;-&nbsp;".$tema["nome"]."&nbsp";
  348 + $imprimir .= "&nbsp;<a href='".$urli3geo."/ogc.php?tema=".$tema["tid"]."&service=wms&request=getcapabilities' >Getcapabilities</a>";
  349 + $imprimir .= "&nbsp;<a href='".$urli3geo."/ogc.php?tema=".$tema["tid"]."&SRS=EPSG:4291&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=".$tema["tid"]."' >GetMap </a>";
  350 + if($tema["link"] != " ")
  351 + $imprimir .= "&nbsp;&nbsp;<a href='".$tema["link"]."' >fonte</a>";
  352 + $imprimir .= "<br>";
  353 + }
  354 + }
  355 + }
  356 + }
  357 + }
  358 + }
  359 + }
  360 + echo $imprimir."</body></html>";
  361 +}
332 ?> 362 ?>
333 \ No newline at end of file 363 \ No newline at end of file
temas/biomashp.map
1 MAP 1 MAP
2 -  
3 -  
4 SYMBOLSET ../symbols/simbolos.sym 2 SYMBOLSET ../symbols/simbolos.sym
5 FONTSET "../symbols/fontes.txt" 3 FONTSET "../symbols/fontes.txt"
6 LAYER 4 LAYER