Commit 2ae150a386352353c129bcc4e99414d2d77707f2

Authored by Edmar Moretti
1 parent 3d54826b

--no commit message

Showing 1 changed file with 617 additions and 580 deletions   Show diff stats
1 <?php 1 <?php
2 -/*  
3 -Title: ogc.php  
4 -  
5 -Gera web services nos padr&otilde;es OGC  
6 -  
7 -A lista de proje&ccedil;&otilde;es mostradas na fun&ccedil;&atilde;o getcapabilities &eacute; definida na vari&aacute;vel $listaepsg. Edite essa vari&aacute;vel  
8 -se forem necess&aacute;rias outras proje&ccedil;&otilde;es al&eacute;m das existentes  
9 -  
10 -Licenca:  
11 -  
12 -i3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet  
13 -  
14 -Direitos Autorais Reservados (c) 2006 Minist&eacute;rio do Meio Ambiente Brasil  
15 -Desenvolvedor: Edmar Moretti edmar.moretti@gmail.com  
16 -  
17 -Este programa &eacute; software livre; voc&ecirc; pode redistribu&iacute;-lo  
18 -e/ou modific&aacute;-lo sob os termos da Licen&ccedil;a P&uacute;blica Geral  
19 -GNU conforme publicada pela Free Software Foundation;  
20 -  
21 -Este programa &eacute; distribu&iacute;do na expectativa de que seja &uacute;til,  
22 -por&eacute;m, SEM NENHUMA GARANTIA; nem mesmo a garantia impl&iacute;cita  
23 -de COMERCIABILIDADE OU ADEQUA&Ccedil;&Atilde;O A UMA FINALIDADE ESPEC&Iacute;FICA.  
24 -Consulte a Licen&ccedil;a P&uacute;blica Geral do GNU para mais detalhes.  
25 -Voc&ecirc; deve ter recebido uma cópia da Licen&ccedil;a P&uacute;blica Geral do  
26 -GNU junto com este programa; se n&atilde;o, escreva para a  
27 -Free Software Foundation, Inc., no endere&ccedil;o  
28 -59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.  
29 -  
30 -Arquivo: i3geo/ogc.php  
31 -  
32 -Parametros:  
33 -  
34 -lista - se for igual a "temas", mostra uma lista dos temas dispon&iacute;veis  
35 - se for igual a "temaswfs", mostra a lista de temas wfs  
36 -  
37 -ajuda - se for definida na URL, mostra uma ajuda ao usu&aacute;rio  
38 -  
39 -tema - nome do tema do servi&ccedil;o. Se for definido, o web service conter&aacute; apenas esse tema. O tema &eacute; 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.  
40 -  
41 -intervalo - valor inicial e final com o n&uacute;mero de temas que ser&atilde;o mostrados no servi&ccedil;o  
42 -  
43 -legenda - mostra a legenda no corpo do mapa sim|nao  
44 -  
45 -perfil - perfil utilizado para escolher os menus  
46 -  
47 -format - (opcional) pode ser utilizado a op&ccedil;&atilde;o &format=application/openlayers para abrir o mashup do OpenLayers com as camadas definida em temas, exemplo  
48 - http://localhost/i3geo/ogc.php?temas=biomashp&format=application/openlayers&bbox=-54,-14,-50,-10  
49 -  
50 -Exemplos:  
51 -  
52 -ogc.php?lista=temas  
53 -  
54 -ogc.php?tema=bioma  
55 -  
56 -ogc.php?tema=/var/www/i3geo/aplicmap/geral1debianv6.map&layers=mundo  
57 -  
58 -ogc.php?intervalo=0,50  
59 -*/ 2 +/*
  3 + Title: ogc.php
  4 +
  5 +Gera web services nos padr&otilde;es OGC
  6 +
  7 +A lista de proje&ccedil;&otilde;es mostradas na fun&ccedil;&atilde;o getcapabilities &eacute; definida na vari&aacute;vel $listaepsg. Edite essa vari&aacute;vel
  8 +se forem necess&aacute;rias outras proje&ccedil;&otilde;es al&eacute;m das existentes
  9 +
  10 +Licenca:
  11 +
  12 +i3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet
  13 +
  14 +Direitos Autorais Reservados (c) 2006 Minist&eacute;rio do Meio Ambiente Brasil
  15 +Desenvolvedor: Edmar Moretti edmar.moretti@gmail.com
  16 +
  17 +Este programa &eacute; software livre; voc&ecirc; pode redistribu&iacute;-lo
  18 +e/ou modific&aacute;-lo sob os termos da Licen&ccedil;a P&uacute;blica Geral
  19 +GNU conforme publicada pela Free Software Foundation;
  20 +
  21 +Este programa &eacute; distribu&iacute;do na expectativa de que seja &uacute;til,
  22 +por&eacute;m, SEM NENHUMA GARANTIA; nem mesmo a garantia impl&iacute;cita
  23 +de COMERCIABILIDADE OU ADEQUA&Ccedil;&Atilde;O A UMA FINALIDADE ESPEC&Iacute;FICA.
  24 +Consulte a Licen&ccedil;a P&uacute;blica Geral do GNU para mais detalhes.
  25 +Voc&ecirc; deve ter recebido uma cópia da Licen&ccedil;a P&uacute;blica Geral do
  26 + GNU junto com este programa; se n&atilde;o, escreva para a
  27 +Free Software Foundation, Inc., no endere&ccedil;o
  28 +59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
  29 +
  30 +Arquivo: i3geo/ogc.php
  31 +
  32 +Parametros:
  33 +
  34 +lista - se for igual a "temas", mostra uma lista dos temas dispon&iacute;veis
  35 +se for igual a "temaswfs", mostra a lista de temas wfs
  36 +
  37 +ajuda - se for definida na URL, mostra uma ajuda ao usu&aacute;rio
  38 +
  39 +tema - nome do tema do servi&ccedil;o. Se for definido, o web service conter&aacute; apenas esse tema. O tema &eacute; 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.
  40 +
  41 +intervalo - valor inicial e final com o n&uacute;mero de temas que ser&atilde;o mostrados no servi&ccedil;o
  42 +
  43 +legenda - mostra a legenda no corpo do mapa sim|nao
  44 +
  45 +perfil - perfil utilizado para escolher os menus
  46 +
  47 +format - (opcional) pode ser utilizado a op&ccedil;&atilde;o &format=application/openlayers para abrir o mashup do OpenLayers com as camadas definida em temas, exemplo
  48 +http://localhost/i3geo/ogc.php?temas=biomashp&format=application/openlayers&bbox=-54,-14,-50,-10
  49 +
  50 +Exemplos:
  51 +
  52 +ogc.php?lista=temas
  53 +
  54 +ogc.php?tema=bioma
  55 +
  56 +ogc.php?tema=/var/www/i3geo/aplicmap/geral1debianv6.map&layers=mundo
  57 +
  58 +ogc.php?intervalo=0,50
  59 +*/
  60 +//
  61 +//valida&ccedil;&otilde;es e includes
60 // 62 //
61 -//valida&ccedil;&otilde;es e includes  
62 -//  
63 -$cache = true;  
64 -require_once(__DIR__."/classesphp/carrega_ext.php");  
65 -include(__DIR__."/ms_configura.php");  
66 -include(__DIR__."/classesphp/pega_variaveis.php");  
67 -if(!isset($temas) && isset($tema))  
68 -{$temas = $tema;}  
69 -//  
70 -//para operar como o Geoserver  
71 -//  
72 -if(isset($format) && strtolower($format) == "application/openlayers"){  
73 - if(!isset($layers))  
74 - {$layers = $temas;}  
75 - $urln = __DIR__."/mashups/openlayers.php?temas=".$layers."&layers=".$layers."&mapext=".$bbox."&botoes=pan,zoombox,zoomtot,identifica";  
76 - if(!headers_sent())  
77 - {header("Location:".$urln);}  
78 - else  
79 - {echo "<meta http-equiv='refresh' content='0;url=$urln'>";}  
80 -}  
81 -//  
82 -//pega os endere&ccedil;os para compor a url de chamada do gerador de web services  
83 -//ogc.php  
84 -//  
85 -$protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']);  
86 -$protocolo = $protocolo[0];  
87 -$protocolo1 = strtolower($protocolo) . '://'.$_SERVER['SERVER_NAME'];  
88 -$protocolo = strtolower($protocolo) . '://'.$_SERVER['SERVER_NAME'] .":". $_SERVER['SERVER_PORT'];  
89 -$urli3geo = str_replace("/ogc.php","",$protocolo.$_SERVER["PHP_SELF"]);  
90 -//  
91 -//imprime na tela a ajuda  
92 -//  
93 -if(isset($ajuda)){  
94 - ogc_imprimeAjuda();  
95 - exit;  
96 -}  
97 -//  
98 -//imprime na tela a lista de temas dispon&iacute;veis  
99 -//  
100 -if(isset($lista) && $lista == "temas"){  
101 - include_once(__DIR__."/classesphp/classe_menutemas.php");  
102 - ogc_imprimeListaDeTemas();  
103 - exit;  
104 -}  
105 -if(isset($lista) && $lista == "temaswfs"){  
106 - include_once(__DIR__."/classesphp/classe_menutemas.php");  
107 - ogc_imprimeListaDeTemasWfs();  
108 - exit;  
109 -}  
110 -//  
111 -//cria o web service  
112 -//  
113 -include(__DIR__."/classesphp/funcoes_gerais.php");  
114 -error_reporting(0);  
115 -$versao = versao();  
116 -$versao = $versao["principal"];  
117 -$req = ms_newowsrequestobj();  
118 -$tipo = "";  
119 -$_GET = array_merge($_GET,$_POST);  
120 -  
121 -if(isset($_GET["sld"]) || isset($_GET["filter"])){  
122 - $cache = false;  
123 -}  
124 -foreach ($_GET as $k=>$v){  
125 - $req->setParameter($k, $v);  
126 - if(strtolower($v) == "getcapabilities"){  
127 - $tipo = "metadados";  
128 - $cache = false;  
129 - }  
130 - if(strtolower($k) == "layers" && empty($_GET["tema"]))  
131 - {$tema = $v;}  
132 - if(strtolower($k) == "layer" && empty($_GET["tema"]))  
133 - {$tema = $v;}  
134 -}  
135 -if(empty($srs)){  
136 - $srs = "";  
137 -}  
138 -if(!empty($SRS)){  
139 - $srs = $SRS;  
140 -}  
141 -$listaepsg = $srs." EPSG:4618 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";  
142 -if(count($_GET) == 0){  
143 - $tipo="intervalo";  
144 - $req->setParameter("REQUEST", "getCapabilities");  
145 - $req->setParameter("SERVICE", "WMS");  
146 - $cache = false;  
147 -}  
148 -if(isset($tema) && $tipo != "metadados"){  
149 - $tipo = "";  
150 -}  
151 -if(!isset($version)){  
152 - $req->setParameter("VeRsIoN","1.1.0");  
153 -}  
154 -$oMap = ms_newMapobj($locaplic."/aplicmap/ogcwsv".$versao.".map");  
155 -//  
156 -//altera os caminhos das imagens  
157 -//  
158 -if((isset($legenda)) && (strtolower($legenda) == "sim")){  
159 - $leg = $oMap->legend;  
160 - $leg->set("status",MS_EMBED);  
161 - $cache = false;  
162 -}  
163 -$proto = "http" . ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "s" : "") . "://";  
164 -$server = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME'];  
165 -$or = $proto.$server.$_SERVER['PHP_SELF'];  
166 -if((isset($tema)) && ($tema != "") && ($tipo=="metadados")){  
167 - $or = $or."?tema=".$tema."&";  
168 -}  
169 -//  
170 -//parametros no n&iacute;vel maior  
171 -//  
172 -$oMap->setmetadata("ows_onlineresource",$or);  
173 -$oMap->setmetadata("wms_onlineresource",$or);  
174 -$oMap->setmetadata("wms_title",$tituloInstituicao." - i3geo");  
175 -$oMap->setmetadata("wfs_title",$tituloInstituicao." - i3geo");  
176 -$oMap->setmetadata("wms_attribution_logourl_format","image/png");  
177 -$oMap->setmetadata("wms_attribution_logourl_height","56");  
178 -$oMap->setmetadata("wms_attribution_logourl_width","85");  
179 -$oMap->setmetadata("wms_attribution_logourl_href",$proto.$server.dirname($_SERVER['PHP_SELF'])."/imagens/i3geo.png");  
180 -$oMap->setmetadata("wms_attribution_onlineresource",$proto.$server.dirname($_SERVER['PHP_SELF']));  
181 -$oMap->setmetadata("wms_attribution_title",$tituloInstituicao);  
182 -$oMap->setmetadata("ows_enable_request","*");  
183 -$e = $oMap->extent;  
184 -$extensaoMap = ($e->minx)." ".($e->miny)." ".($e->maxx)." ".($e->maxy);  
185 -if (!isset($intervalo)){  
186 - $intervalo = "0,5000";  
187 -}  
188 -else{  
189 - $tipo = "intervalo";  
190 -}  
191 -if(!isset($tema)){  
192 - if(!isset($intervalo))  
193 - {$intervalo = "0,5000";}  
194 - $tipo = "intervalo";  
195 -}  
196 -if ($tipo == "" || $tipo == "metadados"){  
197 - $tema = explode(" ",$tema);  
198 - //para o caso do tema ser um arquivo mapfile existente em uma pasta qualquer  
199 - //$temai3geo = true indica que o layer ser&aacute; buscado na pasta i3geo/temas  
200 - $temai3geo = true;  
201 - //FIXME não aceita gvp quando o caminho é completo  
202 - if(file_exists($_GET["tema"])){  
203 - $nmap = ms_newMapobj($_GET["tema"]);  
204 - $temai3geo = false;  
205 - $nmap->setmetadata("ows_enable_request","*");  
206 - }  
207 - foreach ($tema as $tx){  
208 - $extensao = ".map";  
209 - if(file_exists($locaplic."/temas/".$tx.".php") && $temai3geo == true){  
210 - $extensao = ".php";  
211 - }  
212 - if(file_exists($locaplic."/temas/".$tx.".gvp") && $temai3geo == true){  
213 - $extensao = ".gvp";  
214 - }  
215 - if($extensao == ".map"){  
216 - if($temai3geo == true){  
217 - $nmap = ms_newMapobj($locaplic."/temas/".$tx.".map");  
218 - $nmap->setmetadata("ows_enable_request","*");  
219 - }  
220 - if($temai3geo == false || empty($layers))  
221 - {$ts = $nmap->getalllayernames();}  
222 - else{  
223 - $ts = explode(",",str_replace(" ",",",$layers));  
224 - }  
225 - foreach ($ts as $t){  
226 - $l = $nmap->getlayerbyname($t);  
227 - $permite = $l->getmetadata("permiteogc");  
228 - if(strtolower($permite) != "nao"){  
229 - //necess&aacute;rio pq o mapfile pode ter todos os layers como default  
230 - if($temai3geo == false){  
231 - $l->set("status",MS_OFF);  
232 - }  
233 - if($cache == true && strtolower($l->getmetadata('cache')) == 'sim' && $tipo == '' && count($tema) == 1){  
234 - carregaCacheImagem($_GET['BBOX'],$tx,$_GET['WIDTH'],$_GET['HEIGHT'],$cachedir);  
235 - }  
236 - $l->setmetadata("ows_title",pegaNome($l));  
237 - $l->setmetadata("ows_srs",$listaepsg);  
238 - $l->set("group","");  
239 - //essa linha &eacute; necess&aacute;ria pq as vezes no mapfile n&atilde;o tem nenhum layer com o nome igual ao nome do mapfile  
240 - if(count($ts)==1){  
241 - $l->set("name",$tx);  
242 - }  
243 - $l->setmetadata("gml_include_items","all");  
244 - $l->set("template","none.htm");  
245 - $l->set("dump",MS_TRUE);  
246 - $l->setmetadata("WMS_INCLUDE_ITEMS","all");  
247 - $l->setmetadata("WFS_INCLUDE_ITEMS","all");  
248 - if(file_exists($locaplic."/temas/miniaturas/".$t.".map.mini.png")){  
249 - $mini = $proto.$server.dirname($_SERVER['PHP_SELF'])."/temas/miniaturas/".$t.".map.mini.png";  
250 - $l->setmetadata("wms_attribution_logourl_format","image/png");  
251 - $l->setmetadata("wms_attribution_logourl_height","50");  
252 - $l->setmetadata("wms_attribution_logourl_width","50");  
253 - $l->setmetadata("wms_attribution_logourl_href",$mini);  
254 - }  
255 - if($l->type == MS_LAYER_RASTER && $l->numclasses > 0){  
256 - $c = $l->getclass(0);  
257 - if($c->name == "")  
258 - {$c->name = " ";}  
259 - }  
260 - //inclui extensao geografica  
261 - $extensao = $l->getmetadata("EXTENSAO");  
262 - if($extensao == ""){  
263 - $extensao = $extensaoMap;  
264 - }  
265 - $l->setmetadata("wms_extent",$extensao);  
266 - if (!empty($postgis_mapa)){  
267 - if ($l->connectiontype == MS_POSTGIS){  
268 - $lcon = $l->connection;  
269 - if (($lcon == " ") || ($lcon == "") || (in_array($lcon,array_keys($postgis_mapa)))){  
270 - //  
271 - //o metadata CONEXAOORIGINAL guarda o valor original para posterior substitui&ccedil;&atilde;o  
272 - //  
273 - if(($lcon == " ") || ($lcon == "")){  
274 - $l->set("connection",$postgis_mapa);  
275 - $l->setmetadata("CONEXAOORIGINAL",$lcon);  
276 - }  
277 - else{  
278 - $l->set("connection",$postgis_mapa[$lcon]);  
279 - $l->setmetadata("CONEXAOORIGINAL",$lcon);  
280 - }  
281 - }  
282 - }  
283 - }  
284 - autoClasses($l,$oMap);  
285 - ms_newLayerObj($oMap, $l);  
286 - }  
287 - }  
288 - }  
289 - if($extensao == ".php"){  
290 - include_once($locaplic."/temas/".$tx.".php");  
291 - eval($tx."(\$oMap);");  
292 - }  
293 - if($extensao == ".gvp"){  
294 - include_once($locaplic."/pacotes/gvsig/gvsig2mapfile/class.gvsig2mapfile.php");  
295 - $gm = new gvsig2mapfile($locaplic."/temas/".$tx.".gvp");  
296 - $gvsigview = $gm->getViewsNames();  
297 - $gvsigview = $gvsigview[0];  
298 - $dataView = $gm->getViewData($gvsigview);  
299 - $oMap = $gm->addLayers($oMap,$gvsigview,$dataView["layerNames"]);  
300 - $numlayers = $oMap->numlayers;  
301 - $layers = array();  
302 - //$layers[] = "default";  
303 - for ($i=0;$i < $numlayers;$i++){  
304 - $l = $oMap->getlayer($i);  
305 - $l->setmetadata("gml_include_items","all");  
306 - $l->set("dump",MS_TRUE);  
307 - $l->setmetadata("WMS_INCLUDE_ITEMS","all");  
308 - $l->setmetadata("WFS_INCLUDE_ITEMS","all");  
309 - $l->setmetadata("ows_srs",$listaepsg);  
310 - $l->setmetadata("ows_title",$l->getmetadata("TEMA"));  
311 - $l->set("status",MS_OFF);  
312 - $layers[] = $l->name;  
313 - if(file_exists($locaplic."/temas/miniaturas/".$tx.".map.mini.png")){  
314 - $mini = $proto.$server.dirname($_SERVER['PHP_SELF'])."/temas/miniaturas/".$tx.".map.mini.png";  
315 - $l->setmetadata("wms_attribution_logourl_format","image/png");  
316 - $l->setmetadata("wms_attribution_logourl_height","50");  
317 - $l->setmetadata("wms_attribution_logourl_width","50");  
318 - $l->setmetadata("wms_attribution_logourl_href",$mini);  
319 - }  
320 - if($l->type == MS_LAYER_RASTER && $l->numclasses > 0){  
321 - $c = $l->getclass(0);  
322 - if($c->name == "")  
323 - {$c->name = " ";}  
324 - }  
325 - //inclui extensao geografica  
326 - $extensao = $l->getmetadata("EXTENSAO");  
327 - if($extensao == ""){  
328 - $extensao = $extensaoMap;  
329 - }  
330 - $l->setmetadata("wms_extent",$extensao);  
331 - }  
332 - $req->setParameter("LAYERS", implode(",",$layers));  
333 - $req->setParameter("STYLES", "");  
334 - //r_dump($req);exit;  
335 - }  
336 - } 63 +$cache = true;
  64 +require_once(__DIR__."/classesphp/carrega_ext.php");
  65 +include(__DIR__."/ms_configura.php");
  66 +include(__DIR__."/classesphp/pega_variaveis.php");
  67 +if(!isset($temas) && isset($tema))
  68 +{
  69 + $temas = $tema;
  70 +}
  71 +//
  72 +//para operar como o Geoserver
  73 +//
  74 +if(isset($format) && strtolower($format) == "application/openlayers"){
  75 + if(!isset($layers))
  76 + {
  77 + $layers = $temas;
  78 + }
  79 + $urln = __DIR__."/mashups/openlayers.php?temas=".$layers."&layers=".$layers."&mapext=".$bbox."&botoes=pan,zoombox,zoomtot,identifica";
  80 + if(!headers_sent())
  81 + {
  82 + header("Location:".$urln);
  83 + }
  84 + else
  85 + {echo "<meta http-equiv='refresh' content='0;url=$urln'>";
  86 + }
  87 +}
  88 +//
  89 +//pega os endere&ccedil;os para compor a url de chamada do gerador de web services
  90 +//ogc.php
  91 +//
  92 +$protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']);
  93 +$protocolo = $protocolo[0];
  94 +$protocolo1 = strtolower($protocolo) . '://'.$_SERVER['SERVER_NAME'];
  95 +$protocolo = strtolower($protocolo) . '://'.$_SERVER['SERVER_NAME'] .":". $_SERVER['SERVER_PORT'];
  96 +$urli3geo = str_replace("/ogc.php","",$protocolo.$_SERVER["PHP_SELF"]);
  97 +//
  98 +//imprime na tela a ajuda
  99 +//
  100 +if(isset($ajuda)){
  101 + ogc_imprimeAjuda();
  102 + exit;
  103 +}
  104 +//
  105 +//imprime na tela a lista de temas dispon&iacute;veis
  106 +//
  107 +if(isset($lista) && $lista == "temas"){
  108 + include_once(__DIR__."/classesphp/classe_menutemas.php");
  109 + ogc_imprimeListaDeTemas();
  110 + exit;
  111 +}
  112 +if(isset($lista) && $lista == "temaswfs"){
  113 + include_once(__DIR__."/classesphp/classe_menutemas.php");
  114 + ogc_imprimeListaDeTemasWfs();
  115 + exit;
  116 +}
  117 +//
  118 +//cria o web service
  119 +//
  120 +include(__DIR__."/classesphp/funcoes_gerais.php");
  121 +error_reporting(0);
  122 +$versao = versao();
  123 +$versao = $versao["principal"];
  124 +$req = ms_newowsrequestobj();
  125 +$tipo = "";
  126 +$_GET = array_merge($_GET,$_POST);
  127 +
  128 +if(isset($_GET["sld"]) || isset($_GET["filter"])){
  129 + $cache = false;
  130 +}
  131 +foreach ($_GET as $k=>$v){
  132 + $req->setParameter($k, $v);
  133 + if(strtolower($v) == "getcapabilities"){
  134 + $tipo = "metadados";
  135 + $cache = false;
  136 + }
  137 + if(strtolower($k) == "layers" && empty($_GET["tema"]))
  138 + {
  139 + $tema = $v;
  140 + }
  141 + if(strtolower($k) == "layer" && empty($_GET["tema"]))
  142 + {
  143 + $tema = $v;
  144 + }
  145 +}
  146 +if(empty($srs)){
  147 + $srs = "";
  148 +}
  149 +if(!empty($SRS)){
  150 + $srs = $SRS;
  151 +}
  152 +$listaepsg = $srs." EPSG:4618 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";
  153 +if(count($_GET) == 0){
  154 + $tipo="intervalo";
  155 + $req->setParameter("REQUEST", "getCapabilities");
  156 + $req->setParameter("SERVICE", "WMS");
  157 + $cache = false;
337 } 158 }
338 -else{  
339 - $conta = 0;  
340 - $int = explode(",",$intervalo);  
341 - $codigosTema = array();  
342 - if(empty($perfil)){$perfil = "";}  
343 - include("classesphp/classe_menutemas.php");  
344 - $m = new Menutemas("",$perfil,$locaplic,$urli3geo);  
345 - $menus = $m->pegaListaDeMenus();  
346 - foreach ($menus as $menu){  
347 - $grupos = $m->pegaListaDeGrupos($menu["idmenu"],$listasistemas="nao",$listasgrupos="sim");  
348 - foreach($grupos as $grupo){  
349 - if(strtolower($grupo["ogc"]) == "sim"){  
350 - foreach($grupo["subgrupos"] as $sgrupo){  
351 - if(strtolower($sgrupo["ogc"]) == "sim"){  
352 - $temas = $m->pegaListaDeTemas($grupo["id_n1"],$sgrupo["id_n2"],$menu["idmenu"]);  
353 - foreach($temas as $tema){  
354 - if(strtolower($tema["ogc"]) == "sim"){  
355 - $codigosTema[] = array("tema"=>$tema["tid"],"fonte"=>$tema["link"]);  
356 - }  
357 - }  
358 - }  
359 - }  
360 - }  
361 - }  
362 - }  
363 - //echo "<pre>";  
364 - //var_dump($codigosTema);  
365 - //exit;  
366 - foreach($codigosTema as $c){  
367 - $codigoTema = $c["tema"];  
368 - if(file_exists($locaplic."/temas/".$codigoTema.".map")){  
369 - if (@ms_newMapobj($locaplic."/temas/".$codigoTema.".map")){  
370 - $nmap = ms_newMapobj($locaplic."/temas/".$codigoTema.".map");  
371 - $nmap->setmetadata("ows_enable_request","*"); 159 +
  160 +if(isset($tema) && $tipo != "metadados"){
  161 + $tipo = "";
  162 +}
  163 +if(!isset($version)){
  164 + $req->setParameter("VeRsIoN","1.1.0");
  165 +}
  166 +$oMap = ms_newMapobj($locaplic."/aplicmap/ogcwsv".$versao.".map");
  167 +//
  168 +//altera os caminhos das imagens
  169 +//
  170 +if((isset($legenda)) && (strtolower($legenda) == "sim")){
  171 + $leg = $oMap->legend;
  172 + $leg->set("status",MS_EMBED);
  173 + $cache = false;
  174 +}
  175 +$proto = "http" . ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "s" : "") . "://";
  176 +$server = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME'];
  177 +$or = $proto.$server.$_SERVER['PHP_SELF'];
  178 +if((isset($tema)) && ($tema != "") && ($tipo=="metadados")){
  179 + $or = $or."?tema=".$tema."&";
  180 +}
  181 +//
  182 +//parametros no n&iacute;vel maior
  183 +//
  184 +$oMap->setmetadata("ows_onlineresource",$or);
  185 +$oMap->setmetadata("wms_onlineresource",$or);
  186 +$oMap->setmetadata("wms_title",$tituloInstituicao." - i3geo");
  187 +$oMap->setmetadata("wfs_title",$tituloInstituicao." - i3geo");
  188 +$oMap->setmetadata("wms_attribution_logourl_format","image/png");
  189 +$oMap->setmetadata("wms_attribution_logourl_height","56");
  190 +$oMap->setmetadata("wms_attribution_logourl_width","85");
  191 +$oMap->setmetadata("wms_attribution_logourl_href",$proto.$server.dirname($_SERVER['PHP_SELF'])."/imagens/i3geo.png");
  192 +$oMap->setmetadata("wms_attribution_onlineresource",$proto.$server.dirname($_SERVER['PHP_SELF']));
  193 +$oMap->setmetadata("wms_attribution_title",$tituloInstituicao);
  194 +$oMap->setmetadata("ows_enable_request","*");
  195 +$e = $oMap->extent;
  196 +$extensaoMap = ($e->minx)." ".($e->miny)." ".($e->maxx)." ".($e->maxy);
  197 +if (!isset($intervalo)){
  198 + $intervalo = "0,5000";
  199 +}
  200 +else{
  201 + $tipo = "intervalo";
  202 +}
  203 +if(!isset($tema)){
  204 + if(!isset($intervalo))
  205 + {
  206 + $intervalo = "0,5000";
  207 + }
  208 + $tipo = "intervalo";
  209 +}
  210 +if ($tipo == "" || $tipo == "metadados"){
  211 + $tema = explode(" ",$tema);
  212 + //para o caso do tema ser um arquivo mapfile existente em uma pasta qualquer
  213 + //$temai3geo = true indica que o layer ser&aacute; buscado na pasta i3geo/temas
  214 + $temai3geo = true;
  215 + //FIXME não aceita gvp quando o caminho é completo
  216 + if(file_exists($_GET["tema"])){
  217 + $nmap = ms_newMapobj($_GET["tema"]);
  218 + $temai3geo = false;
  219 + $nmap->setmetadata("ows_enable_request","*");
  220 + }
  221 + foreach ($tema as $tx){
  222 + $extensao = ".map";
  223 + if(file_exists($locaplic."/temas/".$tx.".php") && $temai3geo == true){
  224 + $extensao = ".php";
  225 + }
  226 + if(file_exists($locaplic."/temas/".$tx.".gvp") && $temai3geo == true){
  227 + $extensao = ".gvp";
  228 + }
  229 + if($extensao == ".map"){
  230 + if($temai3geo == true){
  231 + $nmap = ms_newMapobj($locaplic."/temas/".$tx.".map");
  232 + $nmap->setmetadata("ows_enable_request","*");
  233 + }
  234 + if($temai3geo == false || empty($layers))
  235 + {
372 $ts = $nmap->getalllayernames(); 236 $ts = $nmap->getalllayernames();
373 - if (count($ts) == 1){  
374 - foreach ($ts as $t){  
375 - if ($oMap->getlayerbyname($t) == ""){  
376 - $conta++;  
377 - if (($conta >= $int[0]) && ($conta <= $int[1])){  
378 - $l = $nmap->getlayerbyname($t);  
379 - $extensao = $l->getmetadata("EXTENSAO");  
380 - if($extensao == "")  
381 - {$extensao = $extensaoMap;}  
382 - $l->setmetadata("wms_extent",$extensao);  
383 -  
384 - $l->setmetadata("ows_title",pegaNome($l));  
385 - $l->setmetadata("ows_srs",$listaepsg);  
386 - $l->set("status",MS_OFF);  
387 - $l->setmetadata("gml_include_items","all");  
388 - $l->set("dump",MS_TRUE);  
389 - $l->setmetadata("WMS_INCLUDE_ITEMS","all");  
390 - $l->setmetadata("WFS_INCLUDE_ITEMS","all");  
391 -  
392 - $l->setmetadata("ows_metadataurl_href",$c["fonte"]);  
393 - $l->setmetadata("ows_metadataurl_type","TC211");  
394 - $l->setmetadata("ows_metadataurl_format","text/html");  
395 - if(file_exists($locaplic."/temas/miniaturas/".$t.".map.mini.png")){  
396 - $mini = $proto.$server.dirname($_SERVER['PHP_SELF'])."/temas/miniaturas/".$t.".map.mini.png";  
397 - $l->setmetadata("wms_attribution_logourl_format","image/png");  
398 - $l->setmetadata("wms_attribution_logourl_height","50");  
399 - $l->setmetadata("wms_attribution_logourl_width","50");  
400 - $l->setmetadata("wms_attribution_logourl_href",$mini);  
401 - }  
402 - ms_newLayerObj($oMap, $l);  
403 - }  
404 - }  
405 - }  
406 - }  
407 - }  
408 - } 237 + }
  238 + else{
  239 + $ts = explode(",",str_replace(" ",",",$layers));
  240 + }
  241 + foreach ($ts as $t){
  242 + $l = $nmap->getlayerbyname($t);
  243 + $permite = $l->getmetadata("permiteogc");
  244 + if(strtolower($permite) != "nao"){
  245 + //necess&aacute;rio pq o mapfile pode ter todos os layers como default
  246 + if($temai3geo == false){
  247 + $l->set("status",MS_OFF);
  248 + }
  249 + if($cache == true && strtolower($l->getmetadata('cache')) == 'sim' && $tipo == '' && count($tema) == 1){
  250 + carregaCacheImagem($_GET['BBOX'],$tx,$_GET['WIDTH'],$_GET['HEIGHT'],$cachedir);
  251 + }
  252 + $l->setmetadata("ows_title",pegaNome($l));
  253 + $l->setmetadata("ows_srs",$listaepsg);
  254 + $l->set("group","");
  255 + //essa linha &eacute; necess&aacute;ria pq as vezes no mapfile n&atilde;o tem nenhum layer com o nome igual ao nome do mapfile
  256 + if(count($ts)==1){
  257 + $l->set("name",$tx);
  258 + }
  259 + $l->setmetadata("gml_include_items","all");
  260 + $l->set("template","none.htm");
  261 + $l->set("dump",MS_TRUE);
  262 + $l->setmetadata("WMS_INCLUDE_ITEMS","all");
  263 + $l->setmetadata("WFS_INCLUDE_ITEMS","all");
  264 + if(file_exists($locaplic."/temas/miniaturas/".$t.".map.mini.png")){
  265 + $mini = $proto.$server.dirname($_SERVER['PHP_SELF'])."/temas/miniaturas/".$t.".map.mini.png";
  266 + $l->setmetadata("wms_attribution_logourl_format","image/png");
  267 + $l->setmetadata("wms_attribution_logourl_height","50");
  268 + $l->setmetadata("wms_attribution_logourl_width","50");
  269 + $l->setmetadata("wms_attribution_logourl_href",$mini);
  270 + }
  271 + if($l->type == MS_LAYER_RASTER && $l->numclasses > 0){
  272 + $c = $l->getclass(0);
  273 + if($c->name == "")
  274 + {
  275 + $c->name = " ";
  276 + }
  277 + }
  278 + //inclui extensao geografica
  279 + $extensao = $l->getmetadata("EXTENSAO");
  280 + if($extensao == ""){
  281 + $extensao = $extensaoMap;
  282 + }
  283 + $l->setmetadata("wms_extent",$extensao);
  284 + if (!empty($postgis_mapa)){
  285 + if ($l->connectiontype == MS_POSTGIS){
  286 + $lcon = $l->connection;
  287 + if (($lcon == " ") || ($lcon == "") || (in_array($lcon,array_keys($postgis_mapa)))){
  288 + //
  289 + //o metadata CONEXAOORIGINAL guarda o valor original para posterior substitui&ccedil;&atilde;o
  290 + //
  291 + if(($lcon == " ") || ($lcon == "")){
  292 + $l->set("connection",$postgis_mapa);
  293 + $l->setmetadata("CONEXAOORIGINAL",$lcon);
  294 + }
  295 + else{
  296 + $l->set("connection",$postgis_mapa[$lcon]);
  297 + $l->setmetadata("CONEXAOORIGINAL",$lcon);
  298 + }
  299 + }
  300 + }
  301 + }
  302 + autoClasses($l,$oMap);
  303 + ms_newLayerObj($oMap, $l);
  304 + }
  305 + }
  306 + }
  307 + if($extensao == ".php"){
  308 + include_once($locaplic."/temas/".$tx.".php");
  309 + eval($tx."(\$oMap);");
  310 + }
  311 + if($extensao == ".gvp"){
  312 + include_once($locaplic."/pacotes/gvsig/gvsig2mapfile/class.gvsig2mapfile.php");
  313 + $gm = new gvsig2mapfile($locaplic."/temas/".$tx.".gvp");
  314 + $gvsigview = $gm->getViewsNames();
  315 + $gvsigview = $gvsigview[0];
  316 + $dataView = $gm->getViewData($gvsigview);
  317 + $oMap = $gm->addLayers($oMap,$gvsigview,$dataView["layerNames"]);
  318 + $numlayers = $oMap->numlayers;
  319 + $layers = array();
  320 + //$layers[] = "default";
  321 + for ($i=0;$i < $numlayers;$i++){
  322 + $l = $oMap->getlayer($i);
  323 + $l->setmetadata("gml_include_items","all");
  324 + $l->set("dump",MS_TRUE);
  325 + $l->setmetadata("WMS_INCLUDE_ITEMS","all");
  326 + $l->setmetadata("WFS_INCLUDE_ITEMS","all");
  327 + $l->setmetadata("ows_srs",$listaepsg);
  328 + $l->setmetadata("ows_title",$l->getmetadata("TEMA"));
  329 + $l->set("status",MS_OFF);
  330 + $layers[] = $l->name;
  331 + if(file_exists($locaplic."/temas/miniaturas/".$tx.".map.mini.png")){
  332 + $mini = $proto.$server.dirname($_SERVER['PHP_SELF'])."/temas/miniaturas/".$tx.".map.mini.png";
  333 + $l->setmetadata("wms_attribution_logourl_format","image/png");
  334 + $l->setmetadata("wms_attribution_logourl_height","50");
  335 + $l->setmetadata("wms_attribution_logourl_width","50");
  336 + $l->setmetadata("wms_attribution_logourl_href",$mini);
  337 + }
  338 + if($l->type == MS_LAYER_RASTER && $l->numclasses > 0){
  339 + $c = $l->getclass(0);
  340 + if($c->name == "")
  341 + {
  342 + $c->name = " ";
  343 + }
  344 + }
  345 + //inclui extensao geografica
  346 + $extensao = $l->getmetadata("EXTENSAO");
  347 + if($extensao == ""){
  348 + $extensao = $extensaoMap;
  349 + }
  350 + $l->setmetadata("wms_extent",$extensao);
  351 + }
  352 + $req->setParameter("LAYERS", implode(",",$layers));
  353 + $req->setParameter("STYLES", "");
  354 + //r_dump($req);exit;
  355 + }
  356 + }
  357 +}
  358 +else{
  359 + $conta = 0;
  360 + $int = explode(",",$intervalo);
  361 + $codigosTema = array();
  362 + if(empty($perfil)){
  363 + $perfil = "";
  364 + }
  365 + include("classesphp/classe_menutemas.php");
  366 + $m = new Menutemas("",$perfil,$locaplic,$urli3geo);
  367 + $menus = $m->pegaListaDeMenus();
  368 + foreach ($menus as $menu){
  369 + $grupos = $m->pegaListaDeGrupos($menu["idmenu"],$listasistemas="nao",$listasgrupos="sim");
  370 + foreach($grupos as $grupo){
  371 + if(strtolower($grupo["ogc"]) == "sim"){
  372 + foreach($grupo["subgrupos"] as $sgrupo){
  373 + if(strtolower($sgrupo["ogc"]) == "sim"){
  374 + $temas = $m->pegaListaDeTemas($grupo["id_n1"],$sgrupo["id_n2"],$menu["idmenu"]);
  375 + foreach($temas as $tema){
  376 + if(strtolower($tema["ogc"]) == "sim"){
  377 + $codigosTema[] = array("tema"=>$tema["tid"],"fonte"=>$tema["link"]);
  378 + }
  379 + }
  380 + }
  381 + }
  382 + }
  383 + }
  384 + }
  385 + //echo "<pre>";
  386 + //var_dump($codigosTema);
  387 + //exit;
  388 + foreach($codigosTema as $c){
  389 + $codigoTema = $c["tema"];
  390 + if(file_exists($locaplic."/temas/".$codigoTema.".map")){
  391 + if (@ms_newMapobj($locaplic."/temas/".$codigoTema.".map")){
  392 + $nmap = ms_newMapobj($locaplic."/temas/".$codigoTema.".map");
  393 + $nmap->setmetadata("ows_enable_request","*");
  394 + $ts = $nmap->getalllayernames();
  395 + if (count($ts) == 1){
  396 + foreach ($ts as $t){
  397 + if ($oMap->getlayerbyname($t) == ""){
  398 + $conta++;
  399 + if (($conta >= $int[0]) && ($conta <= $int[1])){
  400 + $l = $nmap->getlayerbyname($t);
  401 + $extensao = $l->getmetadata("EXTENSAO");
  402 + if($extensao == "")
  403 + {
  404 + $extensao = $extensaoMap;
  405 + }
  406 + $l->setmetadata("wms_extent",$extensao);
  407 +
  408 + $l->setmetadata("ows_title",pegaNome($l));
  409 + $l->setmetadata("ows_srs",$listaepsg);
  410 + $l->set("status",MS_OFF);
  411 + $l->setmetadata("gml_include_items","all");
  412 + $l->set("dump",MS_TRUE);
  413 + $l->setmetadata("WMS_INCLUDE_ITEMS","all");
  414 + $l->setmetadata("WFS_INCLUDE_ITEMS","all");
  415 +
  416 + $l->setmetadata("ows_metadataurl_href",$c["fonte"]);
  417 + $l->setmetadata("ows_metadataurl_type","TC211");
  418 + $l->setmetadata("ows_metadataurl_format","text/html");
  419 + if(file_exists($locaplic."/temas/miniaturas/".$t.".map.mini.png")){
  420 + $mini = $proto.$server.dirname($_SERVER['PHP_SELF'])."/temas/miniaturas/".$t.".map.mini.png";
  421 + $l->setmetadata("wms_attribution_logourl_format","image/png");
  422 + $l->setmetadata("wms_attribution_logourl_height","50");
  423 + $l->setmetadata("wms_attribution_logourl_width","50");
  424 + $l->setmetadata("wms_attribution_logourl_href",$mini);
  425 + }
  426 + ms_newLayerObj($oMap, $l);
  427 + }
  428 + }
  429 + }
  430 + }
  431 + }
  432 + else{
  433 + echo "Erro no arquivo ".$locaplic."/temas/".$codigoTema.".map <br>";
  434 + $error = ms_GetErrorObj();
  435 + while($error && $error->code != MS_NOERR){
  436 + printf("<br>Error in %s: %s<br>\n", $error->routine, $error->message);
  437 + $error = $error->next();
  438 + }
  439 + }
  440 + }
409 } 441 }
410 -}  
411 -if($cache == true){  
412 -  
413 -}  
414 -ms_ioinstallstdouttobuffer();  
415 -$oMap->owsdispatch($req);  
416 -$contenttype = ms_iostripstdoutbuffercontenttype();  
417 -if(strtolower($request) == "getcapabilities")  
418 -{header('Content-Disposition: attachment; filename=getcapabilities.xml');}  
419 -//header("Content-type: application/xml");  
420 -header("Content-type: $contenttype");  
421 -  
422 -$buffer = ms_iogetStdoutBufferBytes();  
423 -ms_ioresethandlers();  
424 -//  
425 -//fun&ccedil;&otilde;es  
426 -//  
427 -function ogc_pegaListaDeMenus(){  
428 - global $perfil,$locaplic,$urli3geo;  
429 - if(!isset($perfil)){$perfil = "";}  
430 - $m = new Menutemas("",$perfil,$locsistemas,$locaplic,"",$urli3geo);  
431 - foreach($m->pegaListaDeMenus() as $menu)  
432 - {$menus[] = $urli3geo."/admin/xmlmenutemas.php?id_menu=".$menu["idmenu"];}  
433 - return $menus;  
434 -}  
435 -function ogc_imprimeAjuda(){  
436 - echo "<pre><b>Construtor de web services do I3Geo.</b><br><br>";  
437 - echo "Esse utilit&aacute;rio usa os arquivos mapfiles existentes em <br>";  
438 - echo "i3geo/temas para gerar web services no padr&atilde;o OGC.<br>";  
439 - echo "Para escolher um tema, utilize:<br>";  
440 - echo "ogc.php?lista=temas - para listar os temas dispon&iacute;veis<br>";  
441 - echo "Para usar esse web service, al&eacute;m dos par&acirc;metros normais, vc dever&aacute; incluir o par&acirc;metro &tema=,<br>";  
442 - echo "ou seja,http://[host]/i3geo/ogc.php?tema=[código do tema]<br>";  
443 - echo "no lugar do código pode ser especificado tamb&eacute;m um arquivo mapfile qualquer. Nesse caso, deve ser digitado o caminho completo no servidor<br><br>";  
444 - echo "Utilize o sistema de administra&ccedil;&atilde;o do i3Geo para configurar quais os temas da pasta i3geo/temas podem ser utilizados.";  
445 - echo "Utilize o parametro &intervalo=0,20 para definir o n&uacute;mero de temas desejado na fun&ccedil;&atilde;o getcapabilities.";  
446 -}  
447 -function ogc_imprimeListaDeTemas(){  
448 - global $urli3geo,$perfil,$locaplic;  
449 - $m = new Menutemas("",$perfil,$locaplic,$urli3geo);  
450 - $menus = $m->pegaListaDeMenus();  
451 - 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">';  
452 - echo "<body><b>Lista de temas por grupos e subgrupos e endere&ccedil;os de acesso aos dados por meio de Web Services WMS (os c&oacute;digos dos temas est&atilde;o em vermelho)</b><br><br>";  
453 - $imprimir = "";  
454 - foreach ($menus as $menu){  
455 - $grupos = $m->pegaListaDeGrupos($menu["idmenu"],$listasistemas="nao",$listasgrupos="sim");  
456 - foreach($grupos as $grupo){  
457 - if(strtolower($grupo["ogc"]) == "sim"){  
458 - $imprimegrupo = "<i>".$grupo["nome"]."</i>";  
459 - foreach($grupo["subgrupos"] as $sgrupo){  
460 - if(strtolower($sgrupo["ogc"]) == "sim"){  
461 - $imprimesubgrupo = $sgrupo["nome"];  
462 - $temas = $m->pegaListaDeTemas($grupo["id_n1"],$sgrupo["id_n2"],$menu["idmenu"]);  
463 - foreach($temas as $tema){  
464 - if(strtolower($tema["ogc"]) == "sim"){  
465 - $imprimir .= $imprimegrupo."->".$imprimesubgrupo."<br>";  
466 - $imprimir .= "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";  
467 - $imprimir .= "<span style=color:red >".$tema["tid"]."</span>";  
468 - $imprimir .= "&nbsp;-&nbsp;".$tema["nome"]."&nbsp";  
469 - $imprimir .= "&nbsp;<a href='".$urli3geo."/ogc.php?tema=".$tema["tid"]."&service=wms&request=getcapabilities' >Getcapabilities</a>";  
470 - $imprimir .= "&nbsp;<a href='".$urli3geo."/ogc.php?tema=".$tema["tid"]."&SRS=EPSG:4618&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>";  
471 - if($tema["link"] != " ")  
472 - $imprimir .= "&nbsp;&nbsp;<a href='".$tema["link"]."' >fonte</a>";  
473 - $imprimir .= "<br>";  
474 - }  
475 - }  
476 - }  
477 - }  
478 - }  
479 - }  
480 - }  
481 - echo $imprimir."</body></html>";  
482 -}  
483 -function ogc_imprimeListaDeTemasWfs(){  
484 - global $urli3geo,$perfil,$locaplic;  
485 - $m = new Menutemas("",$perfil,$locaplic,$urli3geo);  
486 - $menus = $m->pegaListaDeMenus();  
487 - echo '<html><head><title>WFS</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">';  
488 - echo "<body><b>Lista de temas por grupos e subgrupos e endere&ccedil;os de acesso aos dados por meio de Web Services WFS (os c&oacute;digos dos temas est&atilde;o em vermelho)</b><br><br>";  
489 - $imprimir = "";  
490 - foreach ($menus as $menu){  
491 - $grupos = $m->pegaListaDeGrupos($menu["idmenu"],$listasistemas="nao",$listasgrupos="sim");  
492 - foreach($grupos as $grupo){  
493 - if(strtolower($grupo["ogc"]) == "sim"){  
494 - $imprimegrupo = "<i>".$grupo["nome"]."</i>";  
495 - foreach($grupo["subgrupos"] as $sgrupo){  
496 - if(strtolower($sgrupo["ogc"]) == "sim"){  
497 - $imprimesubgrupo = $sgrupo["nome"];  
498 - $temas = $m->pegaListaDeTemas($grupo["id_n1"],$sgrupo["id_n2"],$menu["idmenu"]);  
499 - foreach($temas as $tema){  
500 - if(strtolower($tema["ogc"]) == "sim" && strtolower($tema["down"]) !== "nao"){  
501 - $imprimir .= $imprimegrupo."->".$imprimesubgrupo."<br>";  
502 - $imprimir .= "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";  
503 - $imprimir .= "<span style=color:red >".$tema["tid"]."</span>";  
504 - $imprimir .= "&nbsp;-&nbsp;".$tema["nome"]."&nbsp";  
505 - $imprimir .= "&nbsp;<a href='".$urli3geo."/ogc.php?tema=".$tema["tid"]."&service=wfs&request=getcapabilities' >Getcapabilities</a>";  
506 - $imprimir .= "&nbsp;<a href='".$urli3geo."/ogc.php?tema=".$tema["tid"]."&SRS=EPSG:4618&service=wfs&version=1.1.0&request=getfeature&typename=".$tema["tid"]."' >Getfeature </a>";  
507 - if($tema["link"] != " ")  
508 - $imprimir .= "&nbsp;&nbsp;<a href='".$tema["link"]."' >fonte</a>";  
509 - $imprimir .= "<br>";  
510 - }  
511 - }  
512 - }  
513 - }  
514 - }  
515 - }  
516 - }  
517 - echo $imprimir."</body></html>";  
518 -}  
519 -function carregaCacheImagem($bbox,$layer,$w,$h,$cachedir=""){  
520 - global $dir_tmp;  
521 - $nome = $w.$h.$bbox.".png";  
522 - if($cachedir == "")  
523 - {$nome = $dir_tmp."/cache/".$layer."/".$nome;}  
524 - else  
525 - {$nome = $cachedir."/".$layer."/".$nome;}  
526 - if(file_exists($nome)){  
527 - ob_start();  
528 - // assuming you have image data in $imagedata  
529 - $img = file_get_contents($nome);  
530 - $length = strlen($img);  
531 - $ft = filemtime($nome);  
532 - if (isset($_SERVER["HTTP_IF_MODIFIED_SINCE"]) && (strtotime($_SERVER["HTTP_IF_MODIFIED_SINCE"]) == $ft)) {  
533 - // Client's cache IS current, so we just respond '304 Not Modified'.  
534 - header('Last-Modified: '.gmdate('D, d M Y H:i:s', $ft).' GMT', true, 304);  
535 - } else {  
536 - // Image not cached or cache outdated, we respond '200 OK' and output the image.  
537 - header('Last-Modified: '.gmdate('D, d M Y H:i:s', $ft).' GMT', true, 200);  
538 - }  
539 - header('Accept-Ranges: bytes');  
540 - header('Content-Length: '.$length);  
541 - header('Content-Type: image/png');  
542 - print($img);  
543 - ob_end_flush();  
544 - exit;  
545 - }  
546 - /*  
547 - if(file_exists($nome)) 442 +}
  443 +if($cache == true){
  444 +
  445 +}
  446 +ms_ioinstallstdouttobuffer();
  447 +$oMap->owsdispatch($req);
  448 +$contenttype = ms_iostripstdoutbuffercontenttype();
  449 +if(strtolower($request) == "getcapabilities")
  450 +{
  451 + header('Content-Disposition: attachment; filename=getcapabilities.xml');
  452 +}
  453 +//header("Content-type: application/xml");
  454 +header("Content-type: $contenttype");
  455 +
  456 +$buffer = ms_iogetStdoutBufferBytes();
  457 +ms_ioresethandlers();
  458 +//
  459 +//fun&ccedil;&otilde;es
  460 +//
  461 +function ogc_pegaListaDeMenus(){
  462 + global $perfil,$locaplic,$urli3geo;
  463 + if(!isset($perfil)){
  464 + $perfil = "";
  465 + }
  466 + $m = new Menutemas("",$perfil,$locsistemas,$locaplic,"",$urli3geo);
  467 + foreach($m->pegaListaDeMenus() as $menu)
548 { 468 {
549 - if (!function_exists('imagepng'))  
550 - {  
551 - $s = PHP_SHLIB_SUFFIX;  
552 - @dl( 'php_gd2.'.$s );  
553 - if (!function_exists('imagepng'))  
554 - @dl( 'php_gd.'.$s );  
555 - }  
556 - @$img = imagecreatefrompng($nome);  
557 - if(!$img)  
558 - {  
559 - $img = imagecreatetruecolor($w, $h);  
560 - imagealphablending($img, false);  
561 - imagesavealpha($img, true);  
562 -  
563 - $bgc = imagecolorallocatealpha($img, 255, 255, 255,127);  
564 - $tc = imagecolorallocate($img, 255, 0, 0);  
565 -  
566 - imagefilledrectangle($img, 0, 0, $w, $h, $bgc);  
567 - imagestring($img, 3, 5, 5, 'Erro ao ler ' . $nome, $tc);  
568 - }  
569 - else  
570 - {  
571 - imagealphablending($img, false);  
572 - imagesavealpha($img, true);  
573 - }  
574 - ob_clean();  
575 - error_reporting(0);  
576 - echo header("Content-type: image/png \n\n");  
577 - imagepng($img);  
578 - imagedestroy($img);  
579 - exit;  
580 - }  
581 - */ 469 + $menus[] = $urli3geo."/admin/xmlmenutemas.php?id_menu=".$menu["idmenu"];
  470 + }
  471 + return $menus;
  472 +}
  473 +function ogc_imprimeAjuda(){
  474 + echo "<pre><b>Construtor de web services do I3Geo.</b><br><br>";
  475 + echo "Esse utilit&aacute;rio usa os arquivos mapfiles existentes em <br>";
  476 + echo "i3geo/temas para gerar web services no padr&atilde;o OGC.<br>";
  477 + echo "Para escolher um tema, utilize:<br>";
  478 + echo "ogc.php?lista=temas - para listar os temas dispon&iacute;veis<br>";
  479 + echo "Para usar esse web service, al&eacute;m dos par&acirc;metros normais, vc dever&aacute; incluir o par&acirc;metro &tema=,<br>";
  480 + echo "ou seja,http://[host]/i3geo/ogc.php?tema=[código do tema]<br>";
  481 + echo "no lugar do código pode ser especificado tamb&eacute;m um arquivo mapfile qualquer. Nesse caso, deve ser digitado o caminho completo no servidor<br><br>";
  482 + echo "Utilize o sistema de administra&ccedil;&atilde;o do i3Geo para configurar quais os temas da pasta i3geo/temas podem ser utilizados.";
  483 + echo "Utilize o parametro &intervalo=0,20 para definir o n&uacute;mero de temas desejado na fun&ccedil;&atilde;o getcapabilities.";
  484 +}
  485 +function ogc_imprimeListaDeTemas(){
  486 + global $urli3geo,$perfil,$locaplic;
  487 + $m = new Menutemas("",$perfil,$locaplic,$urli3geo);
  488 + $menus = $m->pegaListaDeMenus();
  489 + 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">';
  490 + echo "<body><b>Lista de temas por grupos e subgrupos e endere&ccedil;os de acesso aos dados por meio de Web Services WMS (os c&oacute;digos dos temas est&atilde;o em vermelho)</b><br><br>";
  491 + $imprimir = "";
  492 + foreach ($menus as $menu){
  493 + $grupos = $m->pegaListaDeGrupos($menu["idmenu"],$listasistemas="nao",$listasgrupos="sim");
  494 + foreach($grupos as $grupo){
  495 + if(strtolower($grupo["ogc"]) == "sim"){
  496 + $imprimegrupo = "<i>".$grupo["nome"]."</i>";
  497 + foreach($grupo["subgrupos"] as $sgrupo){
  498 + if(strtolower($sgrupo["ogc"]) == "sim"){
  499 + $imprimesubgrupo = $sgrupo["nome"];
  500 + $temas = $m->pegaListaDeTemas($grupo["id_n1"],$sgrupo["id_n2"],$menu["idmenu"]);
  501 + foreach($temas as $tema){
  502 + if(strtolower($tema["ogc"]) == "sim"){
  503 + $imprimir .= $imprimegrupo."->".$imprimesubgrupo."<br>";
  504 + $imprimir .= "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
  505 + $imprimir .= "<span style=color:red >".$tema["tid"]."</span>";
  506 + $imprimir .= "&nbsp;-&nbsp;".$tema["nome"]."&nbsp";
  507 + $imprimir .= "&nbsp;<a href='".$urli3geo."/ogc.php?tema=".$tema["tid"]."&service=wms&request=getcapabilities' >Getcapabilities</a>";
  508 + $imprimir .= "&nbsp;<a href='".$urli3geo."/ogc.php?tema=".$tema["tid"]."&SRS=EPSG:4618&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>";
  509 + if($tema["link"] != " ")
  510 + $imprimir .= "&nbsp;&nbsp;<a href='".$tema["link"]."' >fonte</a>";
  511 + $imprimir .= "<br>";
  512 + }
  513 + }
  514 + }
  515 + }
  516 + }
  517 + }
  518 + }
  519 + echo $imprimir."</body></html>";
  520 +}
  521 +function ogc_imprimeListaDeTemasWfs(){
  522 + global $urli3geo,$perfil,$locaplic;
  523 + $m = new Menutemas("",$perfil,$locaplic,$urli3geo);
  524 + $menus = $m->pegaListaDeMenus();
  525 + echo '<html><head><title>WFS</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">';
  526 + echo "<body><b>Lista de temas por grupos e subgrupos e endere&ccedil;os de acesso aos dados por meio de Web Services WFS (os c&oacute;digos dos temas est&atilde;o em vermelho)</b><br><br>";
  527 + $imprimir = "";
  528 + foreach ($menus as $menu){
  529 + $grupos = $m->pegaListaDeGrupos($menu["idmenu"],$listasistemas="nao",$listasgrupos="sim");
  530 + foreach($grupos as $grupo){
  531 + if(strtolower($grupo["ogc"]) == "sim"){
  532 + $imprimegrupo = "<i>".$grupo["nome"]."</i>";
  533 + foreach($grupo["subgrupos"] as $sgrupo){
  534 + if(strtolower($sgrupo["ogc"]) == "sim"){
  535 + $imprimesubgrupo = $sgrupo["nome"];
  536 + $temas = $m->pegaListaDeTemas($grupo["id_n1"],$sgrupo["id_n2"],$menu["idmenu"]);
  537 + foreach($temas as $tema){
  538 + if(strtolower($tema["ogc"]) == "sim" && strtolower($tema["down"]) !== "nao"){
  539 + $imprimir .= $imprimegrupo."->".$imprimesubgrupo."<br>";
  540 + $imprimir .= "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
  541 + $imprimir .= "<span style=color:red >".$tema["tid"]."</span>";
  542 + $imprimir .= "&nbsp;-&nbsp;".$tema["nome"]."&nbsp";
  543 + $imprimir .= "&nbsp;<a href='".$urli3geo."/ogc.php?tema=".$tema["tid"]."&service=wfs&request=getcapabilities' >Getcapabilities</a>";
  544 + $imprimir .= "&nbsp;<a href='".$urli3geo."/ogc.php?tema=".$tema["tid"]."&SRS=EPSG:4618&service=wfs&version=1.1.0&request=getfeature&typename=".$tema["tid"]."' >Getfeature </a>";
  545 + if($tema["link"] != " ")
  546 + $imprimir .= "&nbsp;&nbsp;<a href='".$tema["link"]."' >fonte</a>";
  547 + $imprimir .= "<br>";
  548 + }
  549 + }
  550 + }
  551 + }
  552 + }
  553 + }
  554 + }
  555 + echo $imprimir."</body></html>";
  556 +}
  557 +function carregaCacheImagem($bbox,$layer,$w,$h,$cachedir=""){
  558 + global $dir_tmp;
  559 + $nome = $w.$h.$bbox.".png";
  560 + if($cachedir == "")
  561 + {
  562 + $nome = $dir_tmp."/cache/".$layer."/".$nome;
  563 + }
  564 + else
  565 + {$nome = $cachedir."/".$layer."/".$nome;
  566 + }
  567 + if(file_exists($nome)){
  568 + ob_start();
  569 + // assuming you have image data in $imagedata
  570 + $img = file_get_contents($nome);
  571 + $length = strlen($img);
  572 + $ft = filemtime($nome);
  573 + if (isset($_SERVER["HTTP_IF_MODIFIED_SINCE"]) && (strtotime($_SERVER["HTTP_IF_MODIFIED_SINCE"]) == $ft)) {
  574 + // Client's cache IS current, so we just respond '304 Not Modified'.
  575 + header('Last-Modified: '.gmdate('D, d M Y H:i:s', $ft).' GMT', true, 304);
  576 + } else {
  577 + // Image not cached or cache outdated, we respond '200 OK' and output the image.
  578 + header('Last-Modified: '.gmdate('D, d M Y H:i:s', $ft).' GMT', true, 200);
  579 + }
  580 + header('Accept-Ranges: bytes');
  581 + header('Content-Length: '.$length);
  582 + header('Content-Type: image/png');
  583 + print($img);
  584 + ob_end_flush();
  585 + exit;
  586 + }
  587 + /*
  588 + if(file_exists($nome))
  589 + {
  590 + if (!function_exists('imagepng'))
  591 + {
  592 + $s = PHP_SHLIB_SUFFIX;
  593 + @dl( 'php_gd2.'.$s );
  594 + if (!function_exists('imagepng'))
  595 + @dl( 'php_gd.'.$s );
  596 + }
  597 + @$img = imagecreatefrompng($nome);
  598 + if(!$img)
  599 + {
  600 + $img = imagecreatetruecolor($w, $h);
  601 + imagealphablending($img, false);
  602 + imagesavealpha($img, true);
  603 +
  604 + $bgc = imagecolorallocatealpha($img, 255, 255, 255,127);
  605 + $tc = imagecolorallocate($img, 255, 0, 0);
  606 +
  607 + imagefilledrectangle($img, 0, 0, $w, $h, $bgc);
  608 + imagestring($img, 3, 5, 5, 'Erro ao ler ' . $nome, $tc);
  609 + }
  610 + else
  611 + {
  612 + imagealphablending($img, false);
  613 + imagesavealpha($img, true);
  614 + }
  615 + ob_clean();
  616 + error_reporting(0);
  617 + echo header("Content-type: image/png \n\n");
  618 + imagepng($img);
  619 + imagedestroy($img);
  620 + exit;
  621 + }
  622 + */
582 } 623 }
583 -  
584 -?>  
585 -  
586 -  
587 - 624 +?>
588 \ No newline at end of file 625 \ No newline at end of file