Parameters: 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. intervalo - valor inicial e final com o número de temas que serão mostrados no serviço About: Exemplos ogc.php?lista=temas ogc.php?tema=bioma ogc.php?intervalo=0,50 */ error_reporting(0); if (!function_exists('ms_GetVersion')) { if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) { if(!@dl('php_mapscript_48.dll')) dl('php_mapscript.dll'); } else {dl('php_mapscript.so');} } include("ms_configura.php"); include("classesphp/pega_variaveis.php"); //pega a lista de grupos if ($lista == "temas") { $xml = simplexml_load_file("menutemas/menutemas.xml"); echo "Lista de temas por grupos e subgrupos (os códigos dos temas estão em vermelho)

"; foreach($xml->GRUPO as $grupo) { echo "
".mb_convert_encoding($grupo->GTIPO,"HTML-ENTITIES","auto")."
"; foreach($grupo->SGRUPO as $sgrupo) { echo "   ".mb_convert_encoding($sgrupo->SDTIPO,"HTML-ENTITIES","auto")."
"; foreach($sgrupo->TEMA as $tema) { if (mb_convert_encoding($tema->OGC,"HTML-ENTITIES","auto") == "") { echo "      "; echo "".mb_convert_encoding($tema->TID,"HTML-ENTITIES","auto").""; echo " - ".mb_convert_encoding($tema->TNOME,"HTML-ENTITIES","auto")." - "; if (mb_convert_encoding($tema->TLINK,"HTML-ENTITIES","auto") != "") {echo "fonte";} echo "
"; } } } } return; } if (isset($ajuda)) { 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; } // //cria o web service // include("classesphp/funcoes_gerais.php"); $req = ms_newowsrequestobj(); $tipo = ""; foreach ($_GET as $k=>$v) { $req->setParameter($k, $v); if(strtolower($v) == "getcapabilities") {$tipo = "metadados";} if(strtolower($k) == "layers") {$tema = $v;} } if(isset($tema)) {$tipo = "";} $req->setParameter("VeRsIoN","1.1.0"); $oMap = ms_newMapobj("aplicmap/ogcws.map"); $proto = "http" . ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "s" : "") . "://"; $server = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME']; $or = $proto.$server.$_SERVER['PHP_SELF']; $oMap->setmetadata("ows_onlineresource",$or); if (!isset($intervalo)) {$intervalo = "0,50";} if ($tipo == "") { $tema = explode(" ",$tema); foreach ($tema as $t) { $nmap = ms_newMapobj("temas/".$t.".map"); $ts = $nmap->getalllayernames(); foreach ($ts as $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"); $c = $l->getclass(0); if ($c->name == "") {$c->name = " ";} if (isset($postgis_mapa)) { if ($postgis_mapa != "") { if ($l->connectiontype == MS_POSTGIS) { if ($l->connection == " ") { $l->set("connection",$postgis_mapa); } } } } ms_newLayerObj($oMap, $l); } } } else { $conta = 0; $int = explode(",",$intervalo); $xml = simplexml_load_file("menutemas/menutemas.xml"); foreach($xml->GRUPO as $grupo) { foreach($grupo->SGRUPO as $sgrupo) { foreach($sgrupo->TEMA as $tm) { if (mb_convert_encoding($tm->OGC,"HTML-ENTITIES","auto") == "") { if (@ms_newMapobj("temas/".(mb_convert_encoding($tm->TID,"HTML-ENTITIES","auto")).".map")) { $nmap = ms_newMapobj("temas/".(mb_convert_encoding($tm->TID,"HTML-ENTITIES","auto")).".map"); $ts = $nmap->getalllayernames(); if (count($ts) == 1) { foreach ($ts as $t) { $conta++; if (($conta >= $int[0]) && ($conta <= $int[1])) { $l = $nmap->getlayerbyname($t); $l->setmetadata("ows_title",mb_convert_encoding(pegaNome($l),"HTML-ENTITIES","auto")); $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); } } } } } } } } } ms_ioinstallstdouttobuffer(); $oMap->owsdispatch($req); $contenttype = ms_iostripstdoutbuffercontenttype(); header("Content-type: $contenttype"); ms_iogetStdoutBufferBytes(); ms_ioresethandlers(); ?>