From fa64b543997625246607ea9953130df9142fd0f5 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Thu, 6 Aug 2009 14:29:09 +0000 Subject: [PATCH] correção na listagem de camadas do web service ogc --- admin/php/classe_arvore.php | 7 ++++--- classesphp/classe_menutemas.php | 2 +- menutemas/admin.db | Bin 53248 -> 0 bytes ogc.php | 240 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------------------------------------------------------- temas/biomashp.map | 2 -- 5 files changed, 140 insertions(+), 111 deletions(-) diff --git a/admin/php/classe_arvore.php b/admin/php/classe_arvore.php index a58eddf..0770827 100644 --- a/admin/php/classe_arvore.php +++ b/admin/php/classe_arvore.php @@ -59,7 +59,7 @@ class Arvore $status = "fechado"; if(strtolower($reg["aberto"]) == "sim") $status = "aberto"; - $url = "";//$this->urli3geo."/admin/xmlmenutemas.php?id_menu=".$reg["id_menu"]; + //$url = $this->urli3geo."/admin/xmlmenutemas.php?id_menu=".$reg["id_menu"]; $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); } } @@ -188,7 +188,7 @@ class Arvore if (strtolower($tema["ogc_tema"]) == "sim") {$ogc = "sim";$grupoogc = "sim";} } - $subgrupos[] = array("publicado"=>($sgrupo["publicado"]),"nome"=>$this->converte($sgrupo["nome_subgrupo"]),"download"=>$down,"ogc"=>$ogc); + $subgrupos[] = array("id_n2"=>$sgrupo["id_n2"],"publicado"=>($sgrupo["publicado"]),"nome"=>$this->converte($sgrupo["nome_subgrupo"]),"download"=>$down,"ogc"=>$ogc); } } } @@ -324,9 +324,10 @@ class Arvore } function converte($texto){ if($this->convUTF == true) - $texto = mb_convert_encoding($texto,mb_detect_encoding($texto),"UTF8"); + $texto = mb_convert_encoding($texto,mb_detect_encoding($texto),"UTF-8"); else $texto = mb_convert_encoding($texto,mb_detect_encoding($texto),"ISO-8859-1"); + return $texto; } } diff --git a/classesphp/classe_menutemas.php b/classesphp/classe_menutemas.php index fb0fb3e..f0cb0dd 100644 --- a/classesphp/classe_menutemas.php +++ b/classesphp/classe_menutemas.php @@ -409,7 +409,7 @@ array {$ogc = "sim";} } $nome = ixml($sgrupo,"SDTIPO"); - $subgrupos[] = array("nome"=>$nome,"ogc"=>$ogc,"download"=>$down,"ogc"=>$ogc); + $subgrupos[] = array("nome"=>$nome,"ogc"=>$ogc,"download"=>$down); } } } diff --git a/menutemas/admin.db b/menutemas/admin.db index 8a5cb80..1a4e396 100644 Binary files a/menutemas/admin.db and b/menutemas/admin.db differ diff --git a/ogc.php b/ogc.php index 67dd307..76a1570 100644 --- a/ogc.php +++ b/ogc.php @@ -53,7 +53,10 @@ ogc.php?tema=bioma ogc.php?intervalo=0,50 */ -error_reporting(0); + +// +//validações e includes +// if (!function_exists('ms_GetVersion')) { if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) @@ -69,6 +72,7 @@ include("ms_configura.php"); include("classesphp/pega_variaveis.php"); include("classesphp/classe_menutemas.php"); +error_reporting(0); // //pega os endereços para compor a url de chamada do gerador de web services //ogc.php @@ -79,78 +83,20 @@ $protocolo1 = strtolower($protocolo) . '://'.$_SERVER['SERVER_NAME']; $protocolo = strtolower($protocolo) . '://'.$_SERVER['SERVER_NAME'] .":". $_SERVER['SERVER_PORT']; $urli3geo = str_replace("/ogc.php","",$protocolo.$_SERVER["PHP_SELF"]); // -//pega a lista de menus que será processada -//se a variável definida em ms_configura for = "", a busca é feita -//pelo método Menutemas +//imprime na tela a ajuda // - -if(!isset($perfil)){$perfil = "";} -if($menutemas != "" || is_array($menutemas)) -{ - foreach($menutemas as $m) - { - $menus[] = $m["arquivo"]; - } - -} -else +if (isset($ajuda)) { - $m = new Menutemas("",$perfil,$locsistemas,$locaplic,"",$urli3geo); - foreach($m->pegaListaDeMenus() as $menu) - { - $menus[] = $menu["url"]; - } + ogc_imprimeAjuda(); + exit; } -if(!isset($menus)) -$menus = array("menutemas/menutemas.xml"); -//pega a lista de grupos -if ($lista == "temas") -{ - echo 'WMS '; - echo "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)

"; - $imprimir = ""; - foreach ($menus as $menu) - { - $xml = simplexml_load_file($menu); - foreach($xml->GRUPO as $grupo) - { - $imprimegrupo = "".mb_convert_encoding($grupo->GTIPO,"HTML-ENTITIES","auto").""; - foreach($grupo->SGRUPO as $sgrupo) - { - $imprimesubgrupo = mb_convert_encoding($sgrupo->SDTIPO,"HTML-ENTITIES","auto"); - foreach($sgrupo->TEMA as $tema) - { - if (mb_convert_encoding($tema->OGC,"HTML-ENTITIES","auto") == "") - { - $imprimir .= $imprimegrupo."->".$imprimesubgrupo."
"; - $imprimir .= "      "; - $id = mb_convert_encoding($tema->TID,"HTML-ENTITIES","auto"); - $imprimir .= "".$id.""; - $imprimir .= " - ".mb_convert_encoding($tema->TNOME,"HTML-ENTITIES","auto")." "; - $imprimir .= " Getcapabilities"; - $imprimir .= " GetMap "; - if (mb_convert_encoding($tema->TLINK,"HTML-ENTITIES","auto") != "") - {$imprimir .= "  fonte";} - $imprimir .= "
"; - } - } - } - } - } - echo $imprimir.""; - return; -} -if (isset($ajuda)) +// +//imprime na tela a lista de temas disponíveis +// +if($lista == "temas") { - echo "
Construtor de web services do I3Geo.

"; - echo "Esse utilitário usa o arquivo menutemas.xml para gerar web services no padrão OGC."; - 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 obtido do menutemas.xml]

"; - echo "Se não for desejado que um tema apareça na lista, é necessário incluir a tag nao no registro do tema no arquivo menutemas.xml.
"; - echo "Utilize o parametro &intervalo=0,20 para definir o número de temas."; - return; + ogc_imprimeListaDeTemas(); + exit; } // //cria o web service @@ -167,10 +113,7 @@ foreach ($_GET as $k=>$v) {$tema = $v;} if(strtolower($k) == "layer") {$tema = $v;} - //if(strtolower($k) == "srs") - //{$SRS = $v;} } - if(count($_GET) == 0){ $tipo="intervalo"; $req->setParameter("REQUEST", "getCapabilities"); @@ -204,7 +147,6 @@ if(!isset($tema)){ $intervalo = "0,5000"; $tipo = "intervalo"; } - if ($tipo == "" || $tipo == "metadados") { $tema = explode(" ",$tema); @@ -269,52 +211,63 @@ else $conta = 0; $int = explode(",",$intervalo); $codigosTema = array(); - //var_dump($menus);exit; + $m = new Menutemas("",$perfil,$locsistemas,$locaplic,"",$urli3geo); + $menus = $m->pegaListaDeMenus(); foreach ($menus as $menu) { - $xml = simplexml_load_file($menu); - foreach($xml->GRUPO as $grupo) + $grupos = $m->pegaListaDeGrupos($menu["idmenu"],$listasistemas="nao",$listasgrupos="sim"); + foreach($grupos as $grupo) { - foreach($grupo->SGRUPO as $sgrupo) + if($grupo["ogc"] == "sim") { - foreach($sgrupo->TEMA as $tm) + foreach($grupo["subgrupos"] as $sgrupo) { - if (mb_convert_encoding($tm->OGC,"HTML-ENTITIES","auto") == "") + if($sgrupo["ogc"] == "sim") { - $codigosTema[] = mb_convert_encoding($tm->TID,"HTML-ENTITIES","auto"); + $temas = $m->pegaListaDeTemas($grupo["id_n1"],$sgrupo["id_n2"],$menu["idmenu"]); + foreach($temas as $tema) + { + if($tema["ogc"] == "sim") + { + $codigosTema[] = array("tema"=>$tema["tid"],"fonte"=>$tema["link"]); + } + } } } - } + } } } - foreach($codigosTema as $codigoTema) + foreach($codigosTema as $c) { - if(!file_exists("temas/".$codigoTema.".map")){break;} - if (@ms_newMapobj("temas/".$codigoTema.".map")) + $codigoTema = $c["tema"]; + if(file_exists("temas/".$codigoTema.".map")) { - $nmap = ms_newMapobj("temas/".$codigoTema.".map"); - $ts = $nmap->getalllayernames(); - if (count($ts) == 1) - { - foreach ($ts as $t) - { - if ($oMap->getlayerbyname($t) == "") + if (@ms_newMapobj("temas/".$codigoTema.".map")) + { + $nmap = ms_newMapobj("temas/".$codigoTema.".map"); + $ts = $nmap->getalllayernames(); + if (count($ts) == 1) + { + foreach ($ts as $t) { - $conta++; - if (($conta >= $int[0]) && ($conta <= $int[1])) + if ($oMap->getlayerbyname($t) == "") { - $l = $nmap->getlayerbyname($t); - $l->setmetadata("ows_title",pegaNome($l)); - $l->setmetadata("ows_srs","EPSG:4291 EPSG:4326"); - $l->set("status",MS_OFF); - $l->setmetadata("gml_include_items","all"); - $l->set("dump",MS_TRUE); - $l->setmetadata("WMS_INCLUDE_ITEMS","all"); - $l->setmetadata("WFS_INCLUDE_ITEMS","all"); - $l->setmetadata("ows_metadataurl_href",mb_convert_encoding($tm->TLINK,"HTML-ENTITIES","auto")); - $l->setmetadata("ows_metadataurl_type","TC211"); - $l->setmetadata("ows_metadataurl_format","text/html"); - ms_newLayerObj($oMap, $l); + $conta++; + if (($conta >= $int[0]) && ($conta <= $int[1])) + { + $l = $nmap->getlayerbyname($t); + $l->setmetadata("ows_title",pegaNome($l)); + $l->setmetadata("ows_srs","EPSG:4291 EPSG:4326"); + $l->set("status",MS_OFF); + $l->setmetadata("gml_include_items","all"); + $l->set("dump",MS_TRUE); + $l->setmetadata("WMS_INCLUDE_ITEMS","all"); + $l->setmetadata("WFS_INCLUDE_ITEMS","all"); + $l->setmetadata("ows_metadataurl_href",$c["fonte"]); + $l->setmetadata("ows_metadataurl_type","TC211"); + $l->setmetadata("ows_metadataurl_format","text/html"); + ms_newLayerObj($oMap, $l); + } } } } @@ -329,4 +282,81 @@ $contenttype = ms_iostripstdoutbuffercontenttype(); header("Content-type: $contenttype"); ms_iogetStdoutBufferBytes(); ms_ioresethandlers(); +// +//funções +// +function ogc_pegaListaDeMenus() +{ + global $perfil,$menutemas,$locsistemas,$locaplic,$urli3geo; + if(!isset($perfil)){$perfil = "";} + if($menutemas != "" || is_array($menutemas)) + { + foreach($menutemas as $m) + {$menus[] = $m["arquivo"]; } + } + else + { + $m = new Menutemas("",$perfil,$locsistemas,$locaplic,"",$urli3geo); + foreach($m->pegaListaDeMenus() as $menu) + {$menus[] = $urli3geo."/admin/xmlmenutemas.php?id_menu=".$menu["idmenu"];} + } + if(!isset($menus)) + {$menus = array("menutemas/menutemas.xml");} + return $menus; +} +function ogc_imprimeAjuda() +{ + echo "
Construtor de web services do I3Geo.

"; + echo "Esse utilitário usa o arquivo menutemas.xml para gerar web services no padrão OGC."; + 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 "Utilize o parametro &intervalo=0,20 para definir o número de temas desejado na função getcapabilities."; +} +function ogc_imprimeListaDeTemas() +{ + global $urli3geo,$perfil,$locsistemas,$locaplic,$menutemas; + $m = new Menutemas("",$perfil,$locsistemas,$locaplic,$menutemas,$urli3geo); + $menus = $m->pegaListaDeMenus(); + echo 'WMS '; + echo "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)

"; + $imprimir = ""; + foreach ($menus as $menu) + { + $grupos = $m->pegaListaDeGrupos($menu["idmenu"],$listasistemas="nao",$listasgrupos="sim"); + foreach($grupos as $grupo) + { + if($grupo["ogc"] == "sim") + { + $imprimegrupo = "".$grupo["nome"].""; + foreach($grupo["subgrupos"] as $sgrupo) + { + if($sgrupo["ogc"] == "sim") + { + $imprimesubgrupo = $sgrupo["nome"]; + $temas = $m->pegaListaDeTemas($grupo["id_n1"],$sgrupo["id_n2"],$menu["idmenu"]); + foreach($temas as $tema) + { + if($tema["ogc"] == "sim") + { + $imprimir .= $imprimegrupo."->".$imprimesubgrupo."
"; + $imprimir .= "      "; + $imprimir .= "".$tema["tid"].""; + $imprimir .= " - ".$tema["nome"]." "; + $imprimir .= " Getcapabilities"; + $imprimir .= " GetMap "; + if($tema["link"] != " ") + $imprimir .= "  fonte"; + $imprimir .= "
"; + } + } + } + } + } + } + } + echo $imprimir.""; +} ?> \ No newline at end of file diff --git a/temas/biomashp.map b/temas/biomashp.map index ef017a1..a5645a6 100644 --- a/temas/biomashp.map +++ b/temas/biomashp.map @@ -1,6 +1,4 @@ MAP - - SYMBOLSET ../symbols/simbolos.sym FONTSET "../symbols/fontes.txt" LAYER -- libgit2 0.21.2