$v) { $req->setParameter($k, $v); if(strtolower($v) == "getcapabilities") {$tipo = "metadados";} if(strtolower($k) == "layers") {$tema = $v;} if(strtolower($k) == "layer") {$tema = $v;} } $listaepsg = $srs." EPSG:4291 EPSG:4326 EPSG:22521 EPSG:22522 EPSG:22523 EPSG:22524 EPSG:22525 EPSG:29101 EPSG:29119 EPSG:29120 EPSG:29121 EPSG:29122 EPSG:29177 EPSG:29178 EPSG:29179 EPSG:29180 EPSG:29181 EPSG:29182 EPSG:29183 EPSG:29184 EPSG:29185"; if(count($_GET) == 0){ $tipo="intervalo"; $req->setParameter("REQUEST", "getCapabilities"); $req->setParameter("SERVICE", "WMS"); } if(isset($tema) && $tipo != "metadados") {$tipo = "";} if(!isset($version)) {$req->setParameter("VeRsIoN","1.1.0");} $oMap = ms_newMapobj("aplicmap/ogcws.map"); // //altera os caminhos das imagens // if((isset($legenda)) && (strtolower($legenda) == "sim")) { $leg = $oMap->legend; $leg->set("status",MS_EMBED); } $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']; if((isset($tema)) && ($tema != "") && ($tipo=="metadados")) {$or = $or."?tema=".$tema."&";} // //parametros no nível maior // $oMap->setmetadata("ows_onlineresource",$or); $oMap->setmetadata("wms_onlineresource",$or); $oMap->setmetadata("wms_title",$tituloInstituicao." - i3geo"); $oMap->setmetadata("wfs_title",$tituloInstituicao." - i3geo"); //qd definido aqui, não funciona no qgis //$oMap->setmetadata("ows_srs",$listaepsg); //$oMap->setmetadata("wms_srs",$listaepsg); $oMap->setmetadata("wms_attribution_logourl_format","image/png"); $oMap->setmetadata("wms_attribution_logourl_height","56"); $oMap->setmetadata("wms_attribution_logourl_width","85"); $oMap->setmetadata("wms_attribution_logourl_href",$proto.$server.dirname($_SERVER['PHP_SELF'])."/imagens/i3geo.png"); $oMap->setmetadata("wms_attribution_onlineresource",$proto.$server.dirname($_SERVER['PHP_SELF'])); $oMap->setmetadata("wms_attribution_title",$tituloInstituicao); $e = $oMap->extent; $extensaoMap = ($e->minx)." ".($e->miny)." ".($e->maxx)." ".($e->maxy); if (!isset($intervalo)) {$intervalo = "0,5000";} else {$tipo = "intervalo";} if(!isset($tema)){ if(!isset($intervalo)) {$intervalo = "0,5000";} $tipo = "intervalo"; } if ($tipo == "" || $tipo == "metadados") { $tema = explode(" ",$tema); foreach ($tema as $tx) { $nmap = ms_newMapobj("temas/".$tx.".map"); $ts = $nmap->getalllayernames(); foreach ($ts as $t) { $l = $nmap->getlayerbyname($t); $l->setmetadata("ows_title",pegaNome($l)); $l->setmetadata("ows_srs",$listaepsg); //essa linha é necessária pq as vezes no mapfile não tem nenhum layer com o nome igual ao nome do mapfile if(count($ts)==1) { $l->set("name",$tx); } $l->setmetadata("gml_include_items","all"); $l->set("dump",MS_TRUE); $l->setmetadata("WMS_INCLUDE_ITEMS","all"); $l->setmetadata("WFS_INCLUDE_ITEMS","all"); if(file_exists($locaplic."/temas/miniaturas/".$t.".map.mini.png")) { $mini = $proto.$server.dirname($_SERVER['PHP_SELF'])."/temas/miniaturas/".$t.".map.mini.png"; $l->setmetadata("wms_attribution_logourl_format","image/png"); $l->setmetadata("wms_attribution_logourl_height","50"); $l->setmetadata("wms_attribution_logourl_width","50"); $l->setmetadata("wms_attribution_logourl_href",$mini); } if($l->type == MS_LAYER_RASTER) { $c = $l->getclass(0); if ($c->name == "") {$c->name = " ";} } //inclui extensao geografica $extensao = $l->getmetadata("EXTENSAO"); if($extensao == "") {$extensao = $extensaoMap;} $l->setmetadata("wms_extent",$extensao); if (isset($postgis_mapa)) { if ($postgis_mapa != "") { if ($l->connectiontype == MS_POSTGIS) { $lcon = $l->connection; if (($lcon == " ") || ($lcon == "") || (in_array($lcon,array_keys($postgis_mapa)))) { // //o metadata CONEXAOORIGINAL guarda o valor original para posterior substituição // if(($lcon == " ") || ($lcon == "")) { $l->set("connection",$postgis_mapa); $l->setmetadata("CONEXAOORIGINAL",$lcon); } else { $l->set("connection",$postgis_mapa[$lcon]); $l->setmetadata("CONEXAOORIGINAL",$lcon); } } } } } autoClasses(&$l,$oMap); $permite = $l->getmetadata("permiteogc"); if($permite != "nao") ms_newLayerObj($oMap, $l); } } } else { $conta = 0; $int = explode(",",$intervalo); $codigosTema = array(); $m = new Menutemas("",$perfil,$locaplic,$urli3geo); $menus = $m->pegaListaDeMenus(); foreach ($menus as $menu) { $grupos = $m->pegaListaDeGrupos($menu["idmenu"],$listasistemas="nao",$listasgrupos="sim"); foreach($grupos as $grupo) { if(strtolower($grupo["ogc"]) == "sim") { foreach($grupo["subgrupos"] as $sgrupo) { if(strtolower($sgrupo["ogc"]) == "sim") { $temas = $m->pegaListaDeTemas($grupo["id_n1"],$sgrupo["id_n2"],$menu["idmenu"]); foreach($temas as $tema) { if(strtolower($tema["ogc"]) == "sim") { $codigosTema[] = array("tema"=>$tema["tid"],"fonte"=>$tema["link"]); } } } } } } } foreach($codigosTema as $c) { $codigoTema = $c["tema"]; if(file_exists("temas/".$codigoTema.".map")) { if (@ms_newMapobj("temas/".$codigoTema.".map")) { $nmap = ms_newMapobj("temas/".$codigoTema.".map"); $ts = $nmap->getalllayernames(); if (count($ts) == 1) { foreach ($ts as $t) { if ($oMap->getlayerbyname($t) == "") { $conta++; if (($conta >= $int[0]) && ($conta <= $int[1])) { $l = $nmap->getlayerbyname($t); $extensao = $l->getmetadata("EXTENSAO"); if($extensao == "") {$extensao = $extensaoMap;} $l->setmetadata("wms_extent",$extensao); $l->setmetadata("ows_title",pegaNome($l)); $l->setmetadata("ows_srs",$listaepsg); //$l->setmetadata("wms_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"); if(file_exists($locaplic."/temas/miniaturas/".$t.".map.mini.png")) { $mini = $proto.$server.dirname($_SERVER['PHP_SELF'])."/temas/miniaturas/".$t.".map.mini.png"; $l->setmetadata("wms_attribution_logourl_format","image/png"); $l->setmetadata("wms_attribution_logourl_height","50"); $l->setmetadata("wms_attribution_logourl_width","50"); $l->setmetadata("wms_attribution_logourl_href",$mini); } ms_newLayerObj($oMap, $l); } } } } } } } } ms_ioinstallstdouttobuffer(); $oMap->owsdispatch($req); $contenttype = ms_iostripstdoutbuffercontenttype(); //header("Content-type: application/xml"); header("Content-type: $contenttype"); ms_iogetStdoutBufferBytes(); ms_ioresethandlers(); // //funções // function ogc_pegaListaDeMenus() { global $perfil,$locaplic,$urli3geo; if(!isset($perfil)){$perfil = "";} $m = new Menutemas("",$perfil,$locsistemas,$locaplic,"",$urli3geo); foreach($m->pegaListaDeMenus() as $menu) {$menus[] = $urli3geo."/admin/xmlmenutemas.php?id_menu=".$menu["idmenu"];} return $menus; } function ogc_imprimeAjuda() { echo "
Construtor de web services do I3Geo.

"; echo "Esse utilitário usa os arquivos mapfiles existentes em
"; echo "i3geo/temas 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,$locaplic; $m = new Menutemas("",$perfil,$locaplic,$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(strtolower($grupo["ogc"]) == "sim") { $imprimegrupo = "".$grupo["nome"].""; foreach($grupo["subgrupos"] as $sgrupo) { if(strtolower($sgrupo["ogc"]) == "sim") { $imprimesubgrupo = $sgrupo["nome"]; $temas = $m->pegaListaDeTemas($grupo["id_n1"],$sgrupo["id_n2"],$menu["idmenu"]); foreach($temas as $tema) { if(strtolower($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.""; } ?>