Commit e5b5bc33da8099cdd273c075d47a1662e112c95f

Authored by Edmar Moretti
1 parent c3447d85

Reconstrução dos códigos da ferramenta Conexão WMS

Showing 73 changed files with 2173 additions and 1686 deletions   Show diff stats
classesphp/mapa_controle.php
@@ -1855,6 +1855,7 @@ switch (strtoupper($funcao)) @@ -1855,6 +1855,7 @@ switch (strtoupper($funcao))
1855 */ 1855 */
1856 case "TEMASWMS": 1856 case "TEMASWMS":
1857 include_once("wmswfs.php"); 1857 include_once("wmswfs.php");
  1858 + error_reporting(0);
1858 $servico = $_pg["servico"]; 1859 $servico = $_pg["servico"];
1859 restauraCon($map_file,$postgis_mapa); 1860 restauraCon($map_file,$postgis_mapa);
1860 $retorno = temaswms(); 1861 $retorno = temaswms();
classesphp/wmswfs.php
1 -<?php  
2 -/*  
3 -Title: wmswfs.php  
4 -  
5 -Fun&ccedil;&otilde;es de uso geral para realizar a leitura e o processamento de Web Services nos padr&otilde;es OGC.  
6 -Atualmente, processa apenas servi&ccedil;os no padr&atilde;o WMS.  
7 -  
8 -Licenca:  
9 -  
10 -GPL2  
11 -  
12 -  
13 -i3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet  
14 -  
15 -Direitos Autorais Reservados (c) 2006 Minist&eacute;rio do Meio Ambiente Brasil  
16 -Desenvolvedor: Edmar Moretti edmar.moretti@gmail.com  
17 -  
18 -Este programa &eacute; software livre; voc&ecirc; pode redistribu&iacute;-lo  
19 -e/ou modific&aacute;-lo sob os termos da Licen&ccedil;a P&uacute;blica Geral  
20 -GNU conforme publicada pela Free Software Foundation;  
21 -  
22 -Este programa &eacute; distribu&iacute;do na expectativa de que seja &uacute;til,  
23 -por&eacute;m, SEM NENHUMA GARANTIA; nem mesmo a garantia impl&iacute;cita  
24 -de COMERCIABILIDADE OU ADEQUA&Ccedil;&Atilde;O A UMA FINALIDADE ESPEC&Iacute;FICA.  
25 -Consulte a Licen&ccedil;a P&uacute;blica Geral do GNU para mais detalhes.  
26 -Voc&ecirc; deve ter recebido uma c�pia da Licen&ccedil;a P&uacute;blica Geral do  
27 -GNU junto com este programa; se n&atilde;o, escreva para a  
28 -Free Software Foundation, Inc., no endere&ccedil;o  
29 -59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.  
30 -  
31 -Arquivo:  
32 -  
33 -i3geo/classesphp/wmswfs.php  
34 -*/  
35 -/*  
36 -Function: gravaCacheWMS  
37 -  
38 -L&ecirc; o getcapabilities de um WMS e salva em disco se o mesmo n&atilde;o tiver sido salvo antes  
39 -  
40 -O arquivo &eacute; gravado no diret&oacute;rio tempor&aacute;rio  
41 -  
42 -Parametros:  
43 -  
44 -$servico {string} - endere&ccedil;o do WMS  
45 -  
46 -Global:  
47 -  
48 -$dir_tmp {string} - (opcional) endere&ccedil;o do diret&oacute;rio tempor&aacute;rio onde o cache ser&aacute; armazenado. Se n&atilde;o for definido, tenta obter das vari&aacute;veis de configura&ccedil;&atilde;o existentes em i3geo/ms_configura.php  
49 -  
50 -Return:  
51 -  
52 -{string} - Nome do arquivo criado. Retorna a palavra "erro" se tiver ocorrido um erro.  
53 -*/  
54 -function gravaCacheWMS($servico)  
55 -{  
56 - global $dir_tmp, $i3geo_proxy_server;  
57 - if($dir_tmp == ""){  
58 - include(dirname(__FILE__)."/../ms_configura.php");  
59 - }  
60 - //error_reporting(0);  
61 - try{  
62 - $teste = explode("=",$servico);  
63 - if ( count($teste) > 1 ){  
64 - $servico = $servico."&";  
65 - }  
66 - else{  
67 - $teste = explode("?",$servico);  
68 - if ( count($teste) == 1 ){  
69 - $servico = $servico."?";  
70 - }  
71 - }  
72 - $wms_service_request = $servico . "REQUEST=GetCapabilities&SERVICE=WMS";  
73 - $teste = explode("version",strtolower($wms_service_request));  
74 - if(count($teste) == 1){  
75 - $wms_service_request .= "&VERSION=1.1.1";  
76 - }  
77 - $nome = $dir_tmp."/wms".md5($servico).".xml";  
78 - //echo ($wms_service_request);exit;  
79 - if(!file_exists($nome)){  
80 - //$wms_capabilities = file($wms_service_request);  
81 - $curl = curl_init();  
82 - curl_setopt ($curl, CURLOPT_URL, $wms_service_request);  
83 - curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);  
84 - curl_setopt($curl, CURLOPT_HEADER, 0);  
85 - if(isset($i3geo_proxy_server) && $i3geo_proxy_server != ""){  
86 - curl_setopt($curl, CURLOPT_PROXY, $i3geo_proxy_server);  
87 - }  
88 - $wms_capabilities = curl_exec($curl);  
89 - curl_close ($curl);  
90 - if( !$wms_capabilities || $wms_capabilities == ""){  
91 - return "erro";  
92 - }  
93 - else{  
94 - $fp = fopen($nome, 'w');  
95 - //fwrite($fp, implode("",$wms_capabilities));  
96 - fwrite($fp,$wms_capabilities);  
97 - fclose($fp);  
98 - }  
99 - }  
100 - return $nome;  
101 - }  
102 - catch(Exception $e){return "erro";}  
103 -}  
104 -/*  
105 -Function: existeTemaWFS  
106 -  
107 -Verifica se existe um tema em um servico WFS.  
108 -  
109 -Globais:  
110 -  
111 -$wfs {string} - endere&ccedil;o do servi&ccedil;o  
112 -  
113 -$tema {string} - tema (layer) que ser&aacute; verificado  
114 -  
115 -Retorno:  
116 -  
117 -{string} - sim|nao  
118 -*/  
119 -function existeTemaWFS()  
120 -{  
121 - global $wfs,$tema;  
122 - $capabilities = implode("",$wfs);  
123 - $dom = new DomDocument();  
124 - $dom->loadXML($capabilities);  
125 - $xpath = new DOMXPath($dom);  
126 - $query = '//WFS_Capabilities/FeatureTypeList/FeatureType';  
127 - $entries = $xpath->query($query);  
128 - foreach($entries as $e)  
129 - {  
130 - $e->getElementsByTagName("Name");  
131 - $n = $e->nodeValue;  
132 - if ($n == $tema)  
133 - {return "sim";}  
134 - }  
135 - return "nao";  
136 -}  
137 -/*  
138 -Function: existeWFS  
139 -  
140 -Verifica se existe um servico WFS invocando o getcapabilities.  
141 -  
142 -Global:  
143 -  
144 -$servico {string} - endere&ccedil;o do servi&ccedil;o  
145 -  
146 -Retorno:  
147 -  
148 -{string} - nao|true  
149 -*/  
150 -function existeWFS()  
151 -{  
152 - global $servico;  
153 - $teste = explode("=",$servico);  
154 - if ( count($teste) > 1 ){$servico = $servico."&";}  
155 - $wms_service_request = $servico . "REQUEST=GetCapabilities&SERVICE=WFS";  
156 - # -------------------------------------------------------------  
157 - # Test that the capabilites file has successfully downloaded.  
158 - #  
159 - if( !($wfs_capabilities = file($wms_service_request)) ) {  
160 - # Cannot download the capabilities file.  
161 - return "nao";  
162 - }  
163 - else  
164 - {return $wfs_capabilities;}  
165 -}  
166 -/*  
167 -Function: getcapabilities  
168 -  
169 -Chama a fun&ccedil;&atilde;o getcapabilities e retorna o resultado.  
170 -  
171 -Global:  
172 -  
173 -$servico {string} - Endere&ccedil;o do web service.  
174 -  
175 -Retorno:  
176 -  
177 -{string}  
178 -*/  
179 -function getcapabilities()  
180 -{  
181 - global $servico;  
182 - $teste = explode("=",$servico);  
183 - if ( count($teste) > 1 ){$servico = $servico."&";}  
184 - $wms_service_request = $servico . "REQUEST=GetCapabilities&SERVICE=WMS&version=1.1.0";  
185 - # -------------------------------------------------------------  
186 - # Test that the capabilites file has successfully downloaded.  
187 - #  
188 - if( !($wms_capabilities = file($wms_service_request)) ) {  
189 - # Cannot download the capabilities file.  
190 - $cp->set_data("Erro de acesso");  
191 - return;  
192 - }  
193 - $wms_capabilities = implode("",$wms_capabilities);  
194 - return(xml2html($wms_capabilities));  
195 -}  
196 -/*  
197 -function: getcapabilities2  
198 -  
199 -Chama a fun&ccedil;&atilde;o getcapabilities e retorna o resultado pr&eacute;-formatado (WMS).  
200 -  
201 -Global:  
202 -  
203 -$servico {string} - Endere&ccedil;o do web service.  
204 -  
205 -Retorno:  
206 -  
207 -{string}  
208 -*/  
209 -function getcapabilities2()  
210 -{  
211 - global $servico;  
212 - $teste = explode("=",$servico);  
213 - if ( count($teste) > 1 ){$servico = $servico."&";}  
214 - $wms_service_request = $servico . "REQUEST=GetCapabilities&SERVICE=WMS";  
215 - $teste = explode("version",strtolower($wms_service_request));  
216 - if(count($teste) == 1)  
217 - {$wms_service_request .= "&VERSION=1.1.1";}  
218 - # -------------------------------------------------------------  
219 - # Test that the capabilites file has successfully downloaded.  
220 - #  
221 - if( !($wms_capabilities = file($wms_service_request)) ) {  
222 - # Cannot download the capabilities file.  
223 - $cp->set_data("Erro de acesso");  
224 - return;  
225 - }  
226 - $wms_capabilities = implode("",$wms_capabilities);  
227 - $dom = new DomDocument();  
228 - $dom->loadXML($wms_capabilities);  
229 - $xpath = new DOMXPath($dom);  
230 - $retorno = "";  
231 - $query = '//WMT_MS_Capabilities/Service/Name';  
232 - $entries = $xpath->query($query);  
233 - if($entries == FALSE || $entries->length == 0){  
234 - $rn = $xpath->registerNamespace("tag", "http://www.opengis.net/wms");  
235 - $entries = $xpath->query('/tag:WMS_Capabilities/tag:Service/tag:Name');  
236 - }  
237 -  
238 - $temp = "";  
239 - foreach ($entries as $entry){$temp .= $entry->nodeValue;}  
240 - $retorno .= "<b>Nome: </b>".$temp;  
241 -  
242 - $query = '//WMT_MS_Capabilities/Service/Title';  
243 - $entries = $xpath->query($query);  
244 - if($entries == FALSE || $entries->length == 0){  
245 - $entries = $xpath->query('/tag:WMS_Capabilities/tag:Service/tag:Title');  
246 - }  
247 - $temp = "";  
248 - foreach ($entries as $entry){$temp .= $entry->nodeValue;}  
249 - $retorno .= "<br><br><b>T&iacute;tulo: </b>".$temp;  
250 -  
251 - $query = '//WMT_MS_Capabilities/Service/Abstract';  
252 - $entries = $xpath->query($query);  
253 - if($entries == FALSE || $entries->length == 0){  
254 - $entries = $xpath->query('/tag:WMS_Capabilities/tag:Service/tag:Abstract');  
255 - }  
256 - $temp = "";  
257 - foreach ($entries as $entry){$temp .= $entry->nodeValue;}  
258 - $retorno .= "<br><br><b>Resumo: </b>".$temp;  
259 -  
260 - $query = '//WMT_MS_Capabilities/Service/KeywordList';  
261 - $entries = $xpath->query($query);  
262 - if($entries == FALSE || $entries->length == 0){  
263 - $entries = $xpath->query('/tag:WMS_Capabilities/tag:Service/tag:KeywordList');  
264 - }  
265 - $temp = "";  
266 - foreach ($entries as $entry){$temp .= $entry->nodeValue.".";}  
267 - $retorno .= "<br><br><b>Palavras-chave: </b>".$temp;  
268 -  
269 - $query = '//WMT_MS_Capabilities/Service/ContactInformation';  
270 - $entries = $xpath->query($query);  
271 - if($entries == FALSE || $entries->length == 0){  
272 - $entries = $xpath->query('/tag:WMS_Capabilities/tag:Service/tag:ContactInformation');  
273 - }  
274 - $temp = "";  
275 - foreach ($entries as $entry){$temp .= $entry->nodeValue.".";}  
276 - $retorno .= "<br><br><b>Contato: </b>".$temp;  
277 -  
278 - return($retorno);  
279 -}  
280 -/*  
281 -getcapabilities3  
282 -  
283 -Chama a fun&ccedil;&atilde;o getcapabilities e retorna o resultado formatado (WFS).  
284 -  
285 -Global:  
286 -  
287 -$servico {string} - Endere&ccedil;o do web service.  
288 -  
289 -  
290 -*/  
291 -function getcapabilities3()  
292 -{  
293 - global $servico;  
294 - $teste = explode("=",$servico);  
295 - if ( count($teste) > 1 ){$servico = $servico."&";}  
296 - $wms_service_request = $servico . "request=getcapabilities&service=wfs&version=1.0.0";  
297 - # -------------------------------------------------------------  
298 - # Test that the capabilites file has successfully downloaded.  
299 - #  
300 - if( !($wms_capabilities = file($wms_service_request)) ) {  
301 - # Cannot download the capabilities file.  
302 - $cp->set_data("Erro de acesso");  
303 - return;  
304 - }  
305 - $wms_capabilities = implode("",$wms_capabilities);  
306 - $dom = new DomDocument();  
307 - $dom->loadXML($wms_capabilities);  
308 - $retorno = "";  
309 - $services = $dom->getElementsByTagName("Service");  
310 - foreach ($services as $service)  
311 - {  
312 - $vs = $service->getElementsByTagName("Name");  
313 - $temp = "";  
314 - foreach ($vs as $v)  
315 - {$temp .= $v->nodeValue;}  
316 - $retorno .= "<b>Nome: </b>".$temp;  
317 - $vs = $service->getElementsByTagName("Title");  
318 - $temp = "";  
319 - foreach ($vs as $v)  
320 - {$temp .= $v->nodeValue;}  
321 - $retorno .= "<br><br><b>T&iacute;tulo: </b>".$temp;  
322 - }  
323 - return($retorno);  
324 -}  
325 -/*  
326 -Function: temaswms  
327 -  
328 -Lista os temas de um web service WMS.  
329 -  
330 -Globais:  
331 -  
332 -$servico {string} - Endere&ccedil;o do web service.  
333 -  
334 -$id_ws {string} - (opcional) id do servi&ccedil;o registrado no sistema de administra&ccedil;&atilde;o do i3geo. Se definido, &eacute; feito o registro de tentativa de acesso ao servi&ccedil;o no sistema de administra&ccedil;&atilde;o  
335 -  
336 -Retorno:  
337 -  
338 -{html} - htaml formatado para permitir a escolha de uma camada  
339 -*/  
340 -function temaswms()  
341 -{  
342 - global $servico,$id_ws;  
343 - //para admin1/cadastros/servicos/exec.php  
344 - $_GET["funcao"] = "lista";  
345 - $wms_service_request = gravaCacheWMS($servico);  
346 - # -------------------------------------------------------------  
347 - # Test that the capabilites file has successfully downloaded.  
348 - #  
349 - //$wms_service_request = "c://temp//teste.xml";  
350 - if(file_exists(dirname(__FILE__)."/../admin1/cadastros/servicos/exec.php")){  
351 - include_once(dirname(__FILE__)."/../admin1/cadastros/servicos/exec.php");  
352 - }  
353 - else{  
354 - include_once(dirname(__FILE__)."/../admin/php/admin.php");  
355 - include_once(dirname(__FILE__)."/../admin/php/webservices.php");  
356 - }  
357 -  
358 - //error_reporting(0);  
359 - if($wms_service_request == "erro") {  
360 - # Cannot download the capabilities file.  
361 - //registra a tentativa de acesso  
362 - if(isset($id_ws))  
363 - {  
364 - adicionaAcesso($id_ws,false);  
365 - }  
366 - $cp->set_data("Erro de acesso");  
367 - return;  
368 - }  
369 - elseif(isset($id_ws))  
370 - {  
371 - if($id_ws != "")  
372 - adicionaAcesso($id_ws,true);  
373 - }  
374 - $handle = fopen ($wms_service_request, "r");  
375 - $wms_capabilities = fread($handle, filesize($wms_service_request));  
376 - fclose ($handle);  
377 - $dom = new DomDocument();  
378 - $dom->loadXML($wms_capabilities);  
379 -  
380 - //var_dump($dom);exit;  
381 - //$layers = wms_layers($dom);  
382 - $xpath = new DOMXPath($dom);  
383 - //verifica sld  
384 - $suporta = "nao";  
385 - $query = '//WMT_MS_Capabilities/Capability/UserDefinedSymbolization';  
386 - $entries = $xpath->query($query);  
387 - if($entries->length == 0){  
388 - $suporta = "sim";  
389 - }  
390 - else{  
391 - foreach($entries as $e)  
392 - {$n = $e->getAttribute("SupportSLD");}  
393 - if ($n == 1){$suporta = "sim";}  
394 - }  
395 - $xpath = new DOMXPath($dom);  
396 - //var_dump($xpath);exit;  
397 - $q = '//WMT_MS_Capabilities/Capability';  
398 - $query = $q.'/Layer';  
399 - $layers = $xpath->query($query);  
400 - if($layers == FALSE || $layers->length == 0){  
401 - $teste = $xpath->registerNamespace("tag", "http://www.opengis.net/wms");  
402 - $q = '/tag:WMS_Capabilities/tag:Capability';  
403 - $query = $q.'/tag:Layer';  
404 - $layers = $xpath->query($query);  
405 - }  
406 - //var_dump($layers);exit;  
407 - $retorna = array();  
408 - foreach ($layers as $layer)  
409 - {  
410 - $layers1 = $xpath->query('/Layer',$layer);  
411 - if($layers1->length == 0) //v 1.3.0  
412 - {$layers1 = $layers;}  
413 - else{  
414 - $r = pegaTag($layer);  
415 - $retorna = imprimeTag($r,$retorna);  
416 - }  
417 - foreach ($layers1 as $layer1)  
418 - {  
419 - $layers2 = $xpath->query('Layer',$layer1);  
420 - $r1 = pegaTag($layer1);  
421 - $camada1 = $r1["nome"];  
422 - $titulocamada1 = $r1["titulo"];  
423 - $retorna = imprimeTag($r1,$retorna);  
424 - if($r1["estilos"])  
425 - {$retorna = imprimeEstilos($r1["estilos"],$suporta,$retorna,$camada1,$titulocamada1);}  
426 - else  
427 - {  
428 - if($layers2->length == 0)  
429 - $retorna[] = "<input style='cursor:pointer' type=radio NAME='checks' onClick='seltema(\"tema\",\"" . $camada1 . "\",\"\",\"default\",\"".$camada1." ".$titulocamada1."\",\"".$suporta."\")' value='" . $camada1 . "'/> default<i>".$titulocamada1."</i></span><br>";  
430 - }  
431 - foreach ($layers2 as $layer2)  
432 - {  
433 - $layers3 = $xpath->query('Layer',$layer2);  
434 - $r2 = pegaTag($layer2);  
435 - $camada2 = $r2["nome"];  
436 - $titulocamada2 = $r2["titulo"];  
437 - $retorna = imprimeTag($r2,$retorna);  
438 - if($r2["estilos"])  
439 - {$retorna = imprimeEstilos($r2["estilos"],$suporta,$retorna,$camada2,$titulocamada2);}  
440 - else  
441 - {  
442 - if($layers3->length == 0)  
443 - $retorna[] = "<input style='cursor:pointer' type=radio NAME='checks' onClick='seltema(\"tema\",\"" . $camada2 . "\",\"\",\"default\",\"".$camada2." ".$titulocamada2."\",\"".$suporta."\")' value='" . $camada2 . "'/> default <i>".$titulocamada2."</i></span><br>";  
444 - }  
445 - foreach ($layers3 as $layer3)  
446 - {  
447 - $r3 = pegaTag($layer3);  
448 - $camada3 = $r3["nome"];  
449 - $titulocamada3 = $r3["titulo"];  
450 - $retorna = imprimeTag($r3,$retorna);  
451 - if($r3["estilos"])  
452 - {$retorna = imprimeEstilos($r3["estilos"],$suporta,$retorna,$camada3,$titulocamada3);}  
453 - else  
454 - {  
455 - $retorna[] = "<input style='cursor:pointer' type=radio NAME='checks' onClick='seltema(\"tema\",\"" . $camada3 . "\",\"\",\"default\",\"".$camada3." ".$titulocamada3."\",\"".$suporta."\")' value='" . $camada3 . "'/> default <i>".$titulocamada3."</i></span><br>";  
456 - }  
457 - }  
458 - }  
459 - if(count($layers2) == 1){$retorna[] = "<hr>";}  
460 - }  
461 - }  
462 - $retorna[] = "<p class='paragrafo'>Proje&ccedil;&atilde;o:</p><div class='styled-select'><input type='text' id='proj' value='".implode(",",wms_srs($dom))."' /></div>";  
463 - $retorna[] = "<br><p class='paragrafo'>Formatos imagem:</p><div class='styled-select'><input type='text' id='formatos' value='".implode(",",wms_formats($dom))."' /></div>";  
464 - $retorna[] = "<br><p class='paragrafo'>Formatos de informa&ccedil;&atilde;o:</p><div class='styled-select'><input type='text' id='formatosinfo' value='".implode(",",wms_formatsinfo($dom))."' /></div>";  
465 - $retorna[] = "<br><p class='paragrafo'>Vers&atilde;o:</p><div class='styled-select'><input type='text' id='versao' value='".implode(",",wms_version($dom))."' /></div>";  
466 - $retorna[] = "<br><p class='paragrafo'>Suporta SLD:</p><div class='styled-select'><input type='text' id='suportasld' value='".$suporta."' /></div>";  
467 - return(implode($retorna));  
468 -}  
469 -/*  
470 -Function: listaLayersWMS  
471 -  
472 -Lista os temas de um web service WMS e retorna o resultado como um array.  
473 -  
474 -Globais:  
475 -  
476 -$servico {string} - Endere&ccedil;o do web service.  
477 -  
478 -$nivel - n&iacute;vel do layer na hierarquia existente no getcapabilities  
479 -  
480 -$nomelayer - nome do layer que cont&eacute;m os pr�ximos layers  
481 -  
482 -Retorno:  
483 -  
484 -{array}  
485 -*/  
486 -function listaLayersWMS()  
487 -{  
488 - global $servico,$nivel,$id_ws,$nomelayer,$tipo_ws;  
489 -  
490 - if(!isset($nomelayer)){  
491 - $nomelayer = "undefined";  
492 - }  
493 - //para o caso do sistema de metadados estatisticos  
494 - $wms_service_request = gravaCacheWMS($servico);  
495 - include_once(dirname(__FILE__)."/../admin/php/admin.php");  
496 - include_once(dirname(__FILE__)."/../admin/php/webservices.php");  
497 -  
498 -  
499 - if($tipo_ws != "WMSMETAESTAT" && $nivel < 2){  
500 - if($wms_service_request == "erro") {  
501 - //registra a tentativa de acesso  
502 - if(isset($id_ws)){  
503 - adicionaAcesso($id_ws,false);  
504 - }  
505 - $cp->set_data("Erro de acesso");  
506 - return;  
507 - }  
508 - elseif(isset($id_ws)){  
509 - adicionaAcesso($id_ws,true);  
510 - }  
511 - }  
512 -  
513 - $handle = fopen ($wms_service_request, "r");  
514 - $wms_capabilities = fread ($handle, filesize ($wms_service_request));  
515 - fclose ($handle);  
516 -  
517 - $dom = new DomDocument();  
518 - $dom->loadXML($wms_capabilities);  
519 - $xpath = new DOMXPath($dom);  
520 - $q = '//WMT_MS_Capabilities/Capability';  
521 - $res = array();  
522 - if($nomelayer != "undefined"){  
523 - for($i=0; $i < $nivel-1 ; ++$i){  
524 - $q .= "/Layer";  
525 - }  
526 - $layersanteriores = $xpath->query($q);  
527 - foreach ($layersanteriores as $layeranterior){  
528 - $r1 = pegaTag($layeranterior);  
529 - //echo "<pre>";var_dump($layeranterior);  
530 - if($r1["nome"] == $nomelayer || $r1["titulo"] == $nomelayer)  
531 - {  
532 - $layers = $xpath->query('Layer',$layeranterior);  
533 - foreach ($layers as $layer)  
534 - {  
535 - $r = pegaTag($layer);  
536 - if(!$r["nome"]){$r["nome"] = $r["titulo"];}  
537 - $res[] = array("nome"=>$r["nome"],"titulo"=>$r["titulo"],"estilos"=>$r["estilos"],"srs"=>wms_srs($dom),"formats"=>wms_formats($dom),"version"=>wms_version($dom),"formatsinfo"=>wms_formatsinfo($dom));  
538 - }  
539 - if($layers->length == 0)  
540 - {  
541 - $res[] = array("nome"=>$r1["nome"],"titulo"=>$r1["titulo"],"estilos"=>(array(array("nome"=>"default","titulo"=>"default"))),"srs"=>wms_srs($dom),"formats"=>wms_formats($dom),"version"=>wms_version($dom),"formatsinfo"=>wms_formatsinfo($dom));  
542 - }  
543 - }  
544 - }  
545 - }  
546 - else{  
547 - //  
548 - //pega os layers no primeiro n&iacute;vel  
549 - //  
550 - $q .= "/Layer";  
551 - $layers = $xpath->query($q);  
552 - $res = array();  
553 - foreach ($layers as $layer){  
554 - $r = pegaTag($layer);  
555 - //var_dump($r);  
556 - if(!$r["nome"]){  
557 - $r["nome"] = $r["titulo"];  
558 - }  
559 - if(array_search("Style",$r["tags"]) || array_search("Layer",$r["tags"])){  
560 - $res[] = array(  
561 - "nome"=>$r["nome"],  
562 - "titulo"=>$r["titulo"],  
563 - "estilos"=>$r["estilos"],  
564 - "srs"=>wms_srs($dom),  
565 - "formats"=>wms_formats($dom),  
566 - "version"=>wms_version($dom),  
567 - "formatsinfo"=>wms_formatsinfo($dom) 1 +<?php
  2 +/*
  3 + * Title: wmswfs.php
  4 + *
  5 + * Fun&ccedil;&otilde;es de uso geral para realizar a leitura e o processamento de Web Services nos padr&otilde;es OGC.
  6 + * Atualmente, processa apenas servi&ccedil;os no padr&atilde;o WMS.
  7 + *
  8 + * Licenca:
  9 + *
  10 + * GPL2
  11 + *
  12 + *
  13 + * i3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet
  14 + *
  15 + * Direitos Autorais Reservados (c) 2006 Minist&eacute;rio do Meio Ambiente Brasil
  16 + * Desenvolvedor: Edmar Moretti edmar.moretti@gmail.com
  17 + *
  18 + * Este programa &eacute; software livre; voc&ecirc; pode redistribu&iacute;-lo
  19 + * e/ou modific&aacute;-lo sob os termos da Licen&ccedil;a P&uacute;blica Geral
  20 + * GNU conforme publicada pela Free Software Foundation;
  21 + *
  22 + * Este programa &eacute; distribu&iacute;do na expectativa de que seja &uacute;til,
  23 + * por&eacute;m, SEM NENHUMA GARANTIA; nem mesmo a garantia impl&iacute;cita
  24 + * de COMERCIABILIDADE OU ADEQUA&Ccedil;&Atilde;O A UMA FINALIDADE ESPEC&Iacute;FICA.
  25 + * Consulte a Licen&ccedil;a P&uacute;blica Geral do GNU para mais detalhes.
  26 + * Voc&ecirc; deve ter recebido uma c�pia da Licen&ccedil;a P&uacute;blica Geral do
  27 + * GNU junto com este programa; se n&atilde;o, escreva para a
  28 + * Free Software Foundation, Inc., no endere&ccedil;o
  29 + * 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
  30 + *
  31 + * Arquivo:
  32 + *
  33 + * i3geo/classesphp/wmswfs.php
  34 + */
  35 +/*
  36 + * Function: gravaCacheWMS
  37 + *
  38 + * L&ecirc; o getcapabilities de um WMS e salva em disco se o mesmo n&atilde;o tiver sido salvo antes
  39 + *
  40 + * O arquivo &eacute; gravado no diret&oacute;rio tempor&aacute;rio
  41 + *
  42 + * Parametros:
  43 + *
  44 + * $servico {string} - endere&ccedil;o do WMS
  45 + *
  46 + * Global:
  47 + *
  48 + * $dir_tmp {string} - (opcional) endere&ccedil;o do diret&oacute;rio tempor&aacute;rio onde o cache ser&aacute; armazenado. Se n&atilde;o for definido, tenta obter das vari&aacute;veis de configura&ccedil;&atilde;o existentes em i3geo/ms_configura.php
  49 + *
  50 + * Return:
  51 + *
  52 + * {string} - Nome do arquivo criado. Retorna a palavra "erro" se tiver ocorrido um erro.
  53 + */
  54 +function gravaCacheWMS($servico) {
  55 + global $dir_tmp, $i3geo_proxy_server;
  56 + if ($dir_tmp == "") {
  57 + include (dirname ( __FILE__ ) . "/../ms_configura.php");
  58 + }
  59 + // error_reporting(0);
  60 + try {
  61 + $teste = explode ( "=", $servico );
  62 + if (count ( $teste ) > 1) {
  63 + $servico = $servico . "&";
  64 + } else {
  65 + $teste = explode ( "?", $servico );
  66 + if (count ( $teste ) == 1) {
  67 + $servico = $servico . "?";
  68 + }
  69 + }
  70 + $wms_service_request = $servico . "REQUEST=GetCapabilities&SERVICE=WMS";
  71 + $teste = explode ( "version", strtolower ( $wms_service_request ) );
  72 + if (count ( $teste ) == 1) {
  73 + $wms_service_request .= "&VERSION=1.1.1";
  74 + }
  75 + $nome = $dir_tmp . "/wms" . md5 ( $servico ) . ".xml";
  76 + // echo ($wms_service_request);exit;
  77 + if (! file_exists ( $nome )) {
  78 + // $wms_capabilities = file($wms_service_request);
  79 + $curl = curl_init ();
  80 + curl_setopt ( $curl, CURLOPT_URL, $wms_service_request );
  81 + curl_setopt ( $curl, CURLOPT_RETURNTRANSFER, 1 );
  82 + curl_setopt ( $curl, CURLOPT_HEADER, 0 );
  83 + if (isset ( $i3geo_proxy_server ) && $i3geo_proxy_server != "") {
  84 + curl_setopt ( $curl, CURLOPT_PROXY, $i3geo_proxy_server );
  85 + }
  86 + $wms_capabilities = curl_exec ( $curl );
  87 + curl_close ( $curl );
  88 + if (! $wms_capabilities || $wms_capabilities == "") {
  89 + return "erro";
  90 + } else {
  91 + $fp = fopen ( $nome, 'w' );
  92 + // fwrite($fp, implode("",$wms_capabilities));
  93 + fwrite ( $fp, $wms_capabilities );
  94 + fclose ( $fp );
  95 + }
  96 + }
  97 + return $nome;
  98 + } catch ( Exception $e ) {
  99 + return "erro";
  100 + }
  101 +}
  102 +/*
  103 + * Function: existeTemaWFS
  104 + *
  105 + * Verifica se existe um tema em um servico WFS.
  106 + *
  107 + * Globais:
  108 + *
  109 + * $wfs {string} - endere&ccedil;o do servi&ccedil;o
  110 + *
  111 + * $tema {string} - tema (layer) que ser&aacute; verificado
  112 + *
  113 + * Retorno:
  114 + *
  115 + * {string} - sim|nao
  116 + */
  117 +function existeTemaWFS() {
  118 + global $wfs, $tema;
  119 + $capabilities = implode ( "", $wfs );
  120 + $dom = new DomDocument ();
  121 + $dom->loadXML ( $capabilities );
  122 + $xpath = new DOMXPath ( $dom );
  123 + $query = '//WFS_Capabilities/FeatureTypeList/FeatureType';
  124 + $entries = $xpath->query ( $query );
  125 + foreach ( $entries as $e ) {
  126 + $e->getElementsByTagName ( "Name" );
  127 + $n = $e->nodeValue;
  128 + if ($n == $tema) {
  129 + return "sim";
  130 + }
  131 + }
  132 + return "nao";
  133 +}
  134 +/*
  135 + * Function: existeWFS
  136 + *
  137 + * Verifica se existe um servico WFS invocando o getcapabilities.
  138 + *
  139 + * Global:
  140 + *
  141 + * $servico {string} - endere&ccedil;o do servi&ccedil;o
  142 + *
  143 + * Retorno:
  144 + *
  145 + * {string} - nao|true
  146 + */
  147 +function existeWFS() {
  148 + global $servico;
  149 + $teste = explode ( "=", $servico );
  150 + if (count ( $teste ) > 1) {
  151 + $servico = $servico . "&";
  152 + }
  153 + $wms_service_request = $servico . "REQUEST=GetCapabilities&SERVICE=WFS";
  154 + // -------------------------------------------------------------
  155 + // Test that the capabilites file has successfully downloaded.
  156 + //
  157 + if (! ($wfs_capabilities = file ( $wms_service_request ))) {
  158 + // Cannot download the capabilities file.
  159 + return "nao";
  160 + } else {
  161 + return $wfs_capabilities;
  162 + }
  163 +}
  164 +/*
  165 + * Function: getcapabilities
  166 + *
  167 + * Chama a fun&ccedil;&atilde;o getcapabilities e retorna o resultado.
  168 + *
  169 + * Global:
  170 + *
  171 + * $servico {string} - Endere&ccedil;o do web service.
  172 + *
  173 + * Retorno:
  174 + *
  175 + * {string}
  176 + */
  177 +function getcapabilities() {
  178 + global $servico;
  179 + $teste = explode ( "=", $servico );
  180 + if (count ( $teste ) > 1) {
  181 + $servico = $servico . "&";
  182 + }
  183 + $wms_service_request = $servico . "REQUEST=GetCapabilities&SERVICE=WMS&version=1.1.0";
  184 + // -------------------------------------------------------------
  185 + // Test that the capabilites file has successfully downloaded.
  186 + //
  187 + if (! ($wms_capabilities = file ( $wms_service_request ))) {
  188 + // Cannot download the capabilities file.
  189 + $cp->set_data ( "Erro de acesso" );
  190 + return;
  191 + }
  192 + $wms_capabilities = implode ( "", $wms_capabilities );
  193 + return (xml2html ( $wms_capabilities ));
  194 +}
  195 +/*
  196 + * function: getcapabilities2
  197 + *
  198 + * Chama a fun&ccedil;&atilde;o getcapabilities e retorna o resultado pr&eacute;-formatado (WMS).
  199 + *
  200 + * Global:
  201 + *
  202 + * $servico {string} - Endere&ccedil;o do web service.
  203 + *
  204 + * Retorno:
  205 + *
  206 + * {string}
  207 + */
  208 +function getcapabilities2() {
  209 + global $servico;
  210 + $teste = explode ( "=", $servico );
  211 + if (count ( $teste ) > 1) {
  212 + $servico = $servico . "&";
  213 + }
  214 + $wms_service_request = $servico . "REQUEST=GetCapabilities&SERVICE=WMS";
  215 + $teste = explode ( "version", strtolower ( $wms_service_request ) );
  216 + if (count ( $teste ) == 1) {
  217 + $wms_service_request .= "&VERSION=1.1.1";
  218 + }
  219 + // -------------------------------------------------------------
  220 + // Test that the capabilites file has successfully downloaded.
  221 + //
  222 + if (! ($wms_capabilities = file ( $wms_service_request ))) {
  223 + // Cannot download the capabilities file.
  224 + $cp->set_data ( "Erro de acesso" );
  225 + return;
  226 + }
  227 + $wms_capabilities = implode ( "", $wms_capabilities );
  228 + $dom = new DomDocument ();
  229 + $dom->loadXML ( $wms_capabilities );
  230 + $xpath = new DOMXPath ( $dom );
  231 + $retorno = "";
  232 + $query = '//WMT_MS_Capabilities/Service/Name';
  233 + $entries = $xpath->query ( $query );
  234 + if ($entries == FALSE || $entries->length == 0) {
  235 + $rn = $xpath->registerNamespace ( "tag", "http://www.opengis.net/wms" );
  236 + $entries = $xpath->query ( '/tag:WMS_Capabilities/tag:Service/tag:Name' );
  237 + }
  238 +
  239 + $temp = "";
  240 + foreach ( $entries as $entry ) {
  241 + $temp .= $entry->nodeValue;
  242 + }
  243 + $retorno .= "<b>Nome: </b>" . $temp;
  244 +
  245 + $query = '//WMT_MS_Capabilities/Service/Title';
  246 + $entries = $xpath->query ( $query );
  247 + if ($entries == FALSE || $entries->length == 0) {
  248 + $entries = $xpath->query ( '/tag:WMS_Capabilities/tag:Service/tag:Title' );
  249 + }
  250 + $temp = "";
  251 + foreach ( $entries as $entry ) {
  252 + $temp .= $entry->nodeValue;
  253 + }
  254 + $retorno .= "<br><br><b>T&iacute;tulo: </b>" . $temp;
  255 +
  256 + $query = '//WMT_MS_Capabilities/Service/Abstract';
  257 + $entries = $xpath->query ( $query );
  258 + if ($entries == FALSE || $entries->length == 0) {
  259 + $entries = $xpath->query ( '/tag:WMS_Capabilities/tag:Service/tag:Abstract' );
  260 + }
  261 + $temp = "";
  262 + foreach ( $entries as $entry ) {
  263 + $temp .= $entry->nodeValue;
  264 + }
  265 + $retorno .= "<br><br><b>Resumo: </b>" . $temp;
  266 +
  267 + $query = '//WMT_MS_Capabilities/Service/KeywordList';
  268 + $entries = $xpath->query ( $query );
  269 + if ($entries == FALSE || $entries->length == 0) {
  270 + $entries = $xpath->query ( '/tag:WMS_Capabilities/tag:Service/tag:KeywordList' );
  271 + }
  272 + $temp = "";
  273 + foreach ( $entries as $entry ) {
  274 + $temp .= $entry->nodeValue . ".";
  275 + }
  276 + $retorno .= "<br><br><b>Palavras-chave: </b>" . $temp;
  277 +
  278 + $query = '//WMT_MS_Capabilities/Service/ContactInformation';
  279 + $entries = $xpath->query ( $query );
  280 + if ($entries == FALSE || $entries->length == 0) {
  281 + $entries = $xpath->query ( '/tag:WMS_Capabilities/tag:Service/tag:ContactInformation' );
  282 + }
  283 + $temp = "";
  284 + foreach ( $entries as $entry ) {
  285 + $temp .= $entry->nodeValue . ".";
  286 + }
  287 + $retorno .= "<br><br><b>Contato: </b>" . $temp;
  288 +
  289 + return ($retorno);
  290 +}
  291 +/*
  292 + * getcapabilities3
  293 + *
  294 + * Chama a fun&ccedil;&atilde;o getcapabilities e retorna o resultado formatado (WFS).
  295 + *
  296 + * Global:
  297 + *
  298 + * $servico {string} - Endere&ccedil;o do web service.
  299 + *
  300 + *
  301 + */
  302 +function getcapabilities3() {
  303 + global $servico;
  304 + $teste = explode ( "=", $servico );
  305 + if (count ( $teste ) > 1) {
  306 + $servico = $servico . "&";
  307 + }
  308 + $wms_service_request = $servico . "request=getcapabilities&service=wfs&version=1.0.0";
  309 + // -------------------------------------------------------------
  310 + // Test that the capabilites file has successfully downloaded.
  311 + //
  312 + if (! ($wms_capabilities = file ( $wms_service_request ))) {
  313 + // Cannot download the capabilities file.
  314 + $cp->set_data ( "Erro de acesso" );
  315 + return;
  316 + }
  317 + $wms_capabilities = implode ( "", $wms_capabilities );
  318 + $dom = new DomDocument ();
  319 + $dom->loadXML ( $wms_capabilities );
  320 + $retorno = "";
  321 + $services = $dom->getElementsByTagName ( "Service" );
  322 + foreach ( $services as $service ) {
  323 + $vs = $service->getElementsByTagName ( "Name" );
  324 + $temp = "";
  325 + foreach ( $vs as $v ) {
  326 + $temp .= $v->nodeValue;
  327 + }
  328 + $retorno .= "<b>Nome: </b>" . $temp;
  329 + $vs = $service->getElementsByTagName ( "Title" );
  330 + $temp = "";
  331 + foreach ( $vs as $v ) {
  332 + $temp .= $v->nodeValue;
  333 + }
  334 + $retorno .= "<br><br><b>T&iacute;tulo: </b>" . $temp;
  335 + }
  336 + return ($retorno);
  337 +}
  338 +/*
  339 + * Function: temaswms
  340 + *
  341 + * Lista os temas de um web service WMS.
  342 + *
  343 + * Globais:
  344 + *
  345 + * $servico {string} - Endere&ccedil;o do web service.
  346 + *
  347 + * $id_ws {string} - (opcional) id do servi&ccedil;o registrado no sistema de administra&ccedil;&atilde;o do i3geo. Se definido, &eacute; feito o registro de tentativa de acesso ao servi&ccedil;o no sistema de administra&ccedil;&atilde;o
  348 + *
  349 + * Retorno:
  350 + *
  351 + * {html} - htaml formatado para permitir a escolha de uma camada
  352 + */
  353 +function temaswms() {
  354 + global $servico, $id_ws;
  355 + // para admin1/cadastros/servicos/exec.php
  356 + $_GET ["funcao"] = "lista";
  357 + $wms_service_request = gravaCacheWMS ( $servico );
  358 + // -------------------------------------------------------------
  359 + // Test that the capabilites file has successfully downloaded.
  360 + //
  361 + // $wms_service_request = "c://temp//teste.xml";
  362 + if (file_exists ( dirname ( __FILE__ ) . "/../admin1/cadastros/servicos/exec.php" )) {
  363 + include_once (dirname ( __FILE__ ) . "/../admin1/cadastros/servicos/exec.php");
  364 + } else {
  365 + include_once (dirname ( __FILE__ ) . "/../admin/php/admin.php");
  366 + include_once (dirname ( __FILE__ ) . "/../admin/php/webservices.php");
  367 + }
  368 +
  369 + // error_reporting(0);
  370 + if ($wms_service_request == "erro") {
  371 + // Cannot download the capabilities file.
  372 + // registra a tentativa de acesso
  373 + if (isset ( $id_ws )) {
  374 + adicionaAcesso ( $id_ws, false );
  375 + }
  376 + $cp->set_data ( "Erro de acesso" );
  377 + return;
  378 + } elseif (isset ( $id_ws )) {
  379 + if ($id_ws != "")
  380 + adicionaAcesso ( $id_ws, true );
  381 + }
  382 + $handle = fopen ( $wms_service_request, "r" );
  383 + $wms_capabilities = fread ( $handle, filesize ( $wms_service_request ) );
  384 + fclose ( $handle );
  385 + $dom = new DomDocument ();
  386 + $dom->loadXML ( $wms_capabilities );
  387 +
  388 + // var_dump($dom);exit;
  389 + // $layers = wms_layers($dom);
  390 + $xpath = new DOMXPath ( $dom );
  391 + // verifica sld
  392 + $suporta = "nao";
  393 + $query = '//WMT_MS_Capabilities/Capability/UserDefinedSymbolization';
  394 + $entries = $xpath->query ( $query );
  395 + if ($entries->length == 0) {
  396 + $suporta = "sim";
  397 + } else {
  398 + foreach ( $entries as $e ) {
  399 + $n = $e->getAttribute ( "SupportSLD" );
  400 + }
  401 + if ($n == 1) {
  402 + $suporta = "sim";
  403 + }
  404 + }
  405 + $xpath = new DOMXPath ( $dom );
  406 + // var_dump($xpath);exit;
  407 + $q = '//WMT_MS_Capabilities/Capability';
  408 + $query = $q . '/Layer';
  409 + $layers = $xpath->query ( $query );
  410 + if ($layers == FALSE || $layers->length == 0) {
  411 + $teste = $xpath->registerNamespace ( "tag", "http://www.opengis.net/wms" );
  412 + $q = '/tag:WMS_Capabilities/tag:Capability';
  413 + $query = $q . '/tag:Layer';
  414 + $layers = $xpath->query ( $query );
  415 + }
  416 + // var_dump($layers);exit;
  417 + $retorna = array ();
  418 + foreach ( $layers as $layer ) {
  419 + $layers1 = $xpath->query ( '/Layer', $layer );
  420 + if ($layers1->length == 0) // v 1.3.0
  421 +{
  422 + $layers1 = $layers;
  423 + } else {
  424 + $r = pegaTag ( $layer );
  425 + $retorna = imprimeTag ( $r, $retorna );
  426 + }
  427 + foreach ( $layers1 as $layer1 ) {
  428 + $layers2 = $xpath->query ( 'Layer', $layer1 );
  429 + $r1 = pegaTag ( $layer1 );
  430 + $camada1 = $r1 ["nome"];
  431 + $titulocamada1 = $r1 ["titulo"];
  432 + $retorna = imprimeTag ( $r1, $retorna );
  433 + if ($r1 ["estilos"]) {
  434 + $retorna = imprimeEstilos ( $r1 ["estilos"], $suporta, $retorna, $camada1, $titulocamada1 );
  435 + } else {
  436 + if ($layers2->length == 0){
  437 + $retorna [] = imprimeEstilos2 ($camada1, $titulocamada1, $suporta);
  438 + //$retorna [] = "<input style='cursor:pointer' type=radio NAME='checks' onClick='seltema(\"tema\",\"" . $camada1 . "\",\"\",\"default\",\"" . $camada1 . " " . $titulocamada1 . "\",\"" . $suporta . "\")' value='" . $camada1 . "'/> default<i>" . $titulocamada1 . "</i></span><br>";
  439 + }
  440 + }
  441 + foreach ( $layers2 as $layer2 ) {
  442 + $layers3 = $xpath->query ( 'Layer', $layer2 );
  443 + $r2 = pegaTag ( $layer2 );
  444 + $camada2 = $r2 ["nome"];
  445 + $titulocamada2 = $r2 ["titulo"];
  446 + $retorna = imprimeTag ( $r2, $retorna );
  447 + if ($r2 ["estilos"]) {
  448 + $retorna = imprimeEstilos ( $r2 ["estilos"], $suporta, $retorna, $camada2, $titulocamada2 );
  449 + } else {
  450 + if ($layers3->length == 0)
  451 + $retorna [] = imprimeEstilos2 ($camada2, $titulocamada2, $suporta);
  452 + //$retorna [] = "<input style='cursor:pointer' type=radio NAME='checks' onClick='seltema(\"tema\",\"" . $camada2 . "\",\"\",\"default\",\"" . $camada2 . " " . $titulocamada2 . "\",\"" . $suporta . "\")' value='" . $camada2 . "'/> default <i>" . $titulocamada2 . "</i></span><br>";
  453 + }
  454 + foreach ( $layers3 as $layer3 ) {
  455 + $r3 = pegaTag ( $layer3 );
  456 + $camada3 = $r3 ["nome"];
  457 + $titulocamada3 = $r3 ["titulo"];
  458 + $retorna = imprimeTag ( $r3, $retorna );
  459 + if ($r3 ["estilos"]) {
  460 + $retorna = imprimeEstilos ( $r3 ["estilos"], $suporta, $retorna, $camada3, $titulocamada3 );
  461 + } else {
  462 + $retorna [] = imprimeEstilos2 ($camada3, $titulocamada3, $suporta);
  463 + //$retorna [] = "<input style='cursor:pointer' type=radio NAME='checks' onClick='seltema(\"tema\",\"" . $camada3 . "\",\"\",\"default\",\"" . $camada3 . " " . $titulocamada3 . "\",\"" . $suporta . "\")' value='" . $camada3 . "'/> default <i>" . $titulocamada3 . "</i></span><br>";
  464 + }
  465 + }
  466 + }
  467 + if (count ( $layers2 ) == 1) {
  468 + $retorna [] = "<hr>";
  469 + }
  470 + }
  471 + }
  472 +
  473 + $retorna [] = "<div class='form-group label-fixed condensed' ><label class='control-label' for='proj'>Proje&ccedil;&atilde;o</label><input class='form-control input-lg' type='text' id='proj' value='" . implode ( ",", wms_srs ( $dom ) ) . "' /></div>";
  474 + $retorna [] = "<div class='form-group label-fixed condensed' ><label class='control-label' for='formatos'>Formatos imagem</label><input class='form-control input-lg' type='text' id='formatos' value='" . implode ( ",", wms_formats ( $dom ) ) . "' /></div>";
  475 + $retorna [] = "<div class='form-group label-fixed condensed' ><label class='control-label' for='formatosinfo'>Formatos de informa&ccedil;&atilde;o</label><input class='form-control input-lg' type='text' id='formatosinfo' value='" . implode ( ",", wms_formatsinfo ( $dom ) ) . "' /></div>";
  476 + $retorna [] = "<div class='form-group label-fixed condensed' ><label class='control-label' for='versao'>Vers&atilde;o</label><input class='form-control input-lg' type='text' id='versao' value='" . implode ( ",", wms_version ( $dom ) ) . "' /></div>";
  477 + $retorna [] = "<div class='form-group label-fixed condensed' ><label class='control-label' for='suportasld'>Suporta SLD</label><input class='form-control input-lg' type='text' id='suportasld' value='" . $suporta . "' /></div>";
  478 +
  479 + //$retorna [] = "<h5>Proje&ccedil;&atilde;o:</h5><div class='styled-select'><input type='text' id='proj' value='" . implode ( ",", wms_srs ( $dom ) ) . "' /></div>";
  480 + //$retorna [] = "<br><p class='paragrafo'>Formatos imagem:</p><div class='styled-select'><input type='text' id='formatos' value='" . implode ( ",", wms_formats ( $dom ) ) . "' /></div>";
  481 + //$retorna [] = "<br><p class='paragrafo'>Formatos de informa&ccedil;&atilde;o:</p><div class='styled-select'><input type='text' id='formatosinfo' value='" . implode ( ",", wms_formatsinfo ( $dom ) ) . "' /></div>";
  482 + //$retorna [] = "<br><p class='paragrafo'>Vers&atilde;o:</p><div class='styled-select'><input type='text' id='versao' value='" . implode ( ",", wms_version ( $dom ) ) . "' /></div>";
  483 + //$retorna [] = "<br><p class='paragrafo'>Suporta SLD:</p><div class='styled-select'><input type='text' id='suportasld' value='" . $suporta . "' /></div>";
  484 + return (implode ( $retorna ));
  485 +}
  486 +/*
  487 + * Function: listaLayersWMS
  488 + *
  489 + * Lista os temas de um web service WMS e retorna o resultado como um array.
  490 + *
  491 + * Globais:
  492 + *
  493 + * $servico {string} - Endere&ccedil;o do web service.
  494 + *
  495 + * $nivel - n&iacute;vel do layer na hierarquia existente no getcapabilities
  496 + *
  497 + * $nomelayer - nome do layer que cont&eacute;m os pr�ximos layers
  498 + *
  499 + * Retorno:
  500 + *
  501 + * {array}
  502 + */
  503 +function listaLayersWMS() {
  504 + global $servico, $nivel, $id_ws, $nomelayer, $tipo_ws;
  505 +
  506 + if (! isset ( $nomelayer )) {
  507 + $nomelayer = "undefined";
  508 + }
  509 + // para o caso do sistema de metadados estatisticos
  510 + $wms_service_request = gravaCacheWMS ( $servico );
  511 + include_once (dirname ( __FILE__ ) . "/../admin/php/admin.php");
  512 + include_once (dirname ( __FILE__ ) . "/../admin/php/webservices.php");
  513 +
  514 + if ($tipo_ws != "WMSMETAESTAT" && $nivel < 2) {
  515 + if ($wms_service_request == "erro") {
  516 + // registra a tentativa de acesso
  517 + if (isset ( $id_ws )) {
  518 + adicionaAcesso ( $id_ws, false );
  519 + }
  520 + $cp->set_data ( "Erro de acesso" );
  521 + return;
  522 + } elseif (isset ( $id_ws )) {
  523 + adicionaAcesso ( $id_ws, true );
  524 + }
  525 + }
  526 +
  527 + $handle = fopen ( $wms_service_request, "r" );
  528 + $wms_capabilities = fread ( $handle, filesize ( $wms_service_request ) );
  529 + fclose ( $handle );
  530 +
  531 + $dom = new DomDocument ();
  532 + $dom->loadXML ( $wms_capabilities );
  533 + $xpath = new DOMXPath ( $dom );
  534 + $q = '//WMT_MS_Capabilities/Capability';
  535 + $res = array ();
  536 + if ($nomelayer != "undefined") {
  537 + for($i = 0; $i < $nivel - 1; ++ $i) {
  538 + $q .= "/Layer";
  539 + }
  540 + $layersanteriores = $xpath->query ( $q );
  541 + foreach ( $layersanteriores as $layeranterior ) {
  542 + $r1 = pegaTag ( $layeranterior );
  543 + // echo "<pre>";var_dump($layeranterior);
  544 + if ($r1 ["nome"] == $nomelayer || $r1 ["titulo"] == $nomelayer) {
  545 + $layers = $xpath->query ( 'Layer', $layeranterior );
  546 + foreach ( $layers as $layer ) {
  547 + $r = pegaTag ( $layer );
  548 + if (! $r ["nome"]) {
  549 + $r ["nome"] = $r ["titulo"];
  550 + }
  551 + $res [] = array (
  552 + "nome" => $r ["nome"],
  553 + "titulo" => $r ["titulo"],
  554 + "estilos" => $r ["estilos"],
  555 + "srs" => wms_srs ( $dom ),
  556 + "formats" => wms_formats ( $dom ),
  557 + "version" => wms_version ( $dom ),
  558 + "formatsinfo" => wms_formatsinfo ( $dom )
  559 + );
  560 + }
  561 + if ($layers->length == 0) {
  562 + $res [] = array (
  563 + "nome" => $r1 ["nome"],
  564 + "titulo" => $r1 ["titulo"],
  565 + "estilos" => (array (
  566 + array (
  567 + "nome" => "default",
  568 + "titulo" => "default"
  569 + )
  570 + )),
  571 + "srs" => wms_srs ( $dom ),
  572 + "formats" => wms_formats ( $dom ),
  573 + "version" => wms_version ( $dom ),
  574 + "formatsinfo" => wms_formatsinfo ( $dom )
  575 + );
  576 + }
  577 + }
  578 + }
  579 + } else {
  580 + //
  581 + // pega os layers no primeiro n&iacute;vel
  582 + //
  583 + $q .= "/Layer";
  584 + $layers = $xpath->query ( $q );
  585 + $res = array ();
  586 + foreach ( $layers as $layer ) {
  587 + $r = pegaTag ( $layer );
  588 + // var_dump($r);
  589 + if (! $r ["nome"]) {
  590 + $r ["nome"] = $r ["titulo"];
  591 + }
  592 + if (array_search ( "Style", $r ["tags"] ) || array_search ( "Layer", $r ["tags"] )) {
  593 + $res [] = array (
  594 + "nome" => $r ["nome"],
  595 + "titulo" => $r ["titulo"],
  596 + "estilos" => $r ["estilos"],
  597 + "srs" => wms_srs ( $dom ),
  598 + "formats" => wms_formats ( $dom ),
  599 + "version" => wms_version ( $dom ),
  600 + "formatsinfo" => wms_formatsinfo ( $dom )
  601 + )
  602 + ;
  603 + }
  604 + }
  605 + }
  606 + // exit;
  607 + return ($res);
  608 +}
  609 +function imprimeEstilos($es, $suporta, $retorna, $tval, $tituloalternativo) {
  610 + foreach ( $es as $e ) {
  611 + $nomeestilo = $e ["nome"];
  612 + $nomecamada = $e ["titulo"];
  613 + $tituloestilo = $e ["titulo"];
  614 + $onclick = "seltema(\"estilo\",\"" . $tval . "\",\"\",\"" . $nomeestilo . "\",\"" . $tituloalternativo . " " . $nomecamada . " " . $tituloestilo . "\",\"" . $suporta . "\")";
  615 +
  616 + $retorna [] = <<<EOT
  617 +<div class="list-group condensed">
  618 +<div class="row-content text-left">
  619 +<a onclick='$onclick' role="button" class="btn btn-default btn-fab btn-fab-max" href="javascript:void(0)">
  620 +<span class="material-icons">visibility</span>
  621 +</a>
  622 +<label class="nomeTema" >
  623 +<a onclick='$onclick' href="javascript:void(0)"><h4>
  624 +$nomeestilo
  625 +</h4></a>
  626 +<h6>$tituloestilo</h6>
  627 +</label>
  628 +</div>
  629 +</div>
  630 +EOT;
  631 +
  632 + // $retorna[] = "<button class='btn btn-primary btn-sm btn-raised' onClick='".onclick."' value='" . $nomeestilo . "'/>" . $nomeestilo." <i>".$tituloestilo."</i></span><br>";
  633 + }
  634 + return $retorna;
  635 +}
  636 +function imprimeEstilos2($camada1, $titulocamada1, $suporta) {
  637 + $onclick = "seltema(\"tema\",\"" . $camada1 . "\",\"\",\"default\",\"" . $camada1 . " " . $titulocamada1 . "\",\"" . $suporta . "\")";
  638 + $retorna = <<<EOT
  639 +<div class="list-group condensed">
  640 +<div class="row-content text-left">
  641 +<a onclick='$onclick' role="button" class="btn btn-default btn-fab btn-fab-max" href="javascript:void(0)">
  642 +<span class="material-icons">visibility</span>
  643 +</a>
  644 +<label class="nomeTema" >
  645 +<a onclick='$onclick' href="javascript:void(0)"><h4>
  646 +default
  647 +</h4></a>
  648 +<h6>$titulocamada1</h6>
  649 +</label>
  650 +</div>
  651 +</div>
  652 +EOT;
  653 +
  654 + return $retorna;
  655 +}
  656 +
  657 +function imprimeTag($r, $retorna) {
  658 + if (! $r ["nome"]) {
  659 + $retorna [] = "<h4>" . $r ["titulo"] . "</h4>";
  660 + } else {
  661 + $retorna [] = "<hr>";
  662 + $retorna [] = "<h3>" . $r ["nome"] . "</h3>";
  663 + //$retorna [] = "<h4>" . $r ["titulo"] . "</h4>";
  664 + $retorna [] = "<h5>" . $r ["resumo"] . "</h5>";
  665 + }
  666 + return $retorna;
  667 +}
  668 +function pegaTag($layer) {
  669 + // error_reporting(0);
  670 + $noslayer = $layer->childNodes;
  671 + $resultado = array (
  672 + "estiloas" => array (),
  673 + "tags" => array ()
  674 + );
  675 + for($i = 0; $i < $noslayer->length; ++ $i) {
  676 + $tnome = $noslayer->item ( $i )->tagName;
  677 + $tvalor = $noslayer->item ( $i )->nodeValue;
  678 + if ($tnome) {
  679 + // echo "<br>".$tnome;
  680 + if ($tnome == "Title") {
  681 + $resultado ["titulo"] = $tvalor;
  682 + }
  683 + if ($tnome == "Name") {
  684 + $resultado ["nome"] = $tvalor;
  685 + }
  686 + if ($tnome == "Abstract") {
  687 + $resultado ["resumo"] = $tvalor;
  688 + }
  689 +
  690 + if ($tnome == "Style") {
  691 + $ss = $noslayer->item ( $i )->childNodes;
  692 + $ssl = $ss->length;
  693 + $n = "";
  694 + $t = "";
  695 + for($s = 0; $s < $ssl; $s ++) {
  696 + $snome = $ss->item ( $s )->tagName;
  697 + $svalor = $ss->item ( $s )->nodeValue;
  698 + if ($snome) {
  699 + if ($snome == "Title") {
  700 + $t = $svalor;
  701 + }
  702 + if ($snome == "Name") {
  703 + $n = $svalor;
  704 + }
  705 + }
  706 + }
  707 + // echo "<pre>";echo $n;
  708 + if ($n != "") {
  709 + array_push ( $resultado ["estilos"], array (
  710 + "nome" => $n,
  711 + "titulo" => $t
  712 + ) );
  713 + }
  714 + }
  715 + array_push ( $resultado ["tags"], $tnome );
  716 + // echo "<pre>";var_dump($resultado);
  717 + }
  718 + }
  719 + return $resultado;
  720 +}
  721 +
  722 +/*
  723 + * temaswfs
  724 + *
  725 + * Lista os temas de um web service WFS.
  726 + *
  727 + * parameters:
  728 + * $servico - Endere&ccedil;o do web service.
  729 + *
  730 + * $cp - Objeto CPAINT.
  731 + */
  732 +function temaswfs() {
  733 + global $servico, $cp;
  734 + $teste = explode ( "=", $servico );
  735 + if (count ( $teste ) > 1) {
  736 + $servico = $servico . "&";
  737 + }
  738 + $wms_service_request = $servico . "REQUEST=GetCapabilities&SERVICE=WFS";
  739 + // -------------------------------------------------------------
  740 + // Test that the capabilites file has successfully downloaded.
  741 + //
  742 + if (! ($wms_capabilities = file ( $wms_service_request ))) {
  743 + // Cannot download the capabilities file.
  744 + $cp->set_data ( "Erro de acesso" );
  745 + return;
  746 + }
  747 + $wms_capabilities = implode ( "", $wms_capabilities );
  748 + $dom = new DomDocument ();
  749 + $dom->loadXML ( $wms_capabilities );
  750 + $services = $dom->getElementsByTagName ( "Service" );
  751 + foreach ( $services as $service ) {
  752 + $vs = $service->getElementsByTagName ( "Name" );
  753 + $serv = "";
  754 + foreach ( $vs as $v ) {
  755 + $serv .= $v->nodeValue;
  756 + }
  757 + }
  758 + $layers = $dom->getElementsByTagName ( "FeatureType" );
  759 + foreach ( $layers as $layer ) {
  760 + $vs = $layer->getElementsByTagName ( "Title" );
  761 + $temp1 = "";
  762 + foreach ( $vs as $v ) {
  763 + $temp1 .= $v->nodeValue;
  764 + }
  765 +
  766 + $vs = $layer->getElementsByTagName ( "Abstract" );
  767 + $temp2 = "";
  768 + foreach ( $vs as $v ) {
  769 + $temp2 .= $v->nodeValue;
  770 + }
  771 +
  772 + $vs = $layer->getElementsByTagName ( "SRS" );
  773 + $temp3 = array ();
  774 + foreach ( $vs as $v ) {
  775 + $temp3 [] = $v->nodeValue;
  776 + }
  777 + $temp3 = implode ( "#", $temp3 );
  778 +
  779 + $vs = $layer->getElementsByTagName ( "Name" );
  780 + $temp = "";
  781 + foreach ( $vs as $v ) {
  782 + $temp .= $v->nodeValue;
  783 + }
  784 + $temp = "<input style='cursor:pointer' type=radio NAME='checks' onClick='seltema(\"" . $temp . "\",\"" . $temp1 . "\",\"" . $temp3 . "\",\"" . $serv . "\")' /><span style=color:red >" . $temp . "</span><br>";
  785 + $retorno .= "<br>" . $temp . $temp1 . "<br>" . $temp2 . "<hr>";
  786 + }
  787 + $cp->set_data ( $retorno );
  788 +}
  789 +/*
  790 + * Function: xml2html
  791 + *
  792 + * Converte caracteres XML em HTML.
  793 + *
  794 + * Parametro:
  795 + *
  796 + * $str {string} - Xml que ser&aacute; convertido
  797 + *
  798 + * Retorno:
  799 + *
  800 + * {string}
  801 + */
  802 +function xml2html($str) {
  803 + $str = ereg_replace ( "&", "&amp;", $str );
  804 + $str = ereg_replace ( "<", "&lt;", $str );
  805 + $str = ereg_replace ( ">", "&gt;<BR>", $str );
  806 + return $str;
  807 +}
  808 +/*
  809 + * wms_descricao
  810 + *
  811 + * Retorna a descri&ccedil;&atilde;o de um servi&ccedil;o (n�).
  812 + */
  813 +function wms_descricao($dom, $xp) {
  814 + $xpath = new DOMXPath ( $dom );
  815 + $query = $xp;
  816 + $entries = $xpath->query ( $query );
  817 + $n = "";
  818 + foreach ( $entries as $entry ) {
  819 + $n = $entry->nodeValue;
  820 + }
  821 + return $n;
  822 +}
  823 +/*
  824 + * wms_descricaov
  825 + *
  826 + * Retorna a descri&ccedil;&atilde;o de um servi&ccedil;o (atributo).
  827 + */
  828 +function wms_descricaov($dom, $xp, $attrib) {
  829 + $xpath = new DOMXPath ( $dom );
  830 + $query = $xp;
  831 + $entries = $xpath->query ( $query );
  832 + $n = "";
  833 + foreach ( $entries as $entry ) {
  834 + $n = $entry->getAttribute ( $attrib );
  835 + }
  836 + return $n;
  837 +}
  838 +/*
  839 + * wms_descricaon
  840 + *
  841 + * Retorna a descri&ccedil;&atilde;o de um servi&ccedil;o (filho de um n�).
  842 + */
  843 +function wms_descricaon($dom, $xp, $n) {
  844 + $ctx = xpath_new_context ( $dom );
  845 + $xpnode = xpath_eval ( $ctx, $xp );
  846 + $dtnode = $xpnode->nodeset [$n]->first_child ();
  847 + return $dtnode->content;
  848 +}
  849 +/*
  850 + * wms_title
  851 + *
  852 + * Retorna o t&iacute;tulo de um WMS.
  853 + */
  854 +function wms_title($dom) {
  855 + //
  856 + // Read the WMS service title and return it as text.
  857 + //
  858 + $xpath = new DOMXPath ( $dom );
  859 + $query = '//WMT_MS_Capabilities/Service/Title';
  860 + $entries = $xpath->query ( $query );
  861 + foreach ( $entries as $entry ) {
  862 + $nomeserv = $entry->nodeValue;
  863 + }
  864 + return $nomeserv;
  865 +}
  866 +/*
  867 + * wms_onlineresource
  868 + *
  869 + * Retorna o recurso on-line de um WMS.
  870 + */
  871 +function wms_onlineresource($dom) {
  872 + //
  873 + // Read the WMS online resource URL and return it as text.
  874 + //
  875 + $xp = "/WMT_MS_Capabilities/Service/OnlineResource";
  876 + $ctx = xpath_new_context ( $dom );
  877 + $xpnode = xpath_eval ( $ctx, $xp );
  878 + return $xpnode->nodeset [0]->get_attribute ( "href" );
  879 +}
  880 +/*
  881 + * wms_formats
  882 + *
  883 + * Retorna os formatos de imagem de um WMS.
  884 + */
  885 +function wms_formats($dom) {
  886 + $xpath = new DOMXPath ( $dom );
  887 + $query = '//WMT_MS_Capabilities/Capability/Request/GetMap/Format';
  888 + $entries = $xpath->query ( $query );
  889 + if ($entries == FALSE || $entries->length == 0) {
  890 + $teste = $xpath->registerNamespace ( "tag", "http://www.opengis.net/wms" );
  891 + $q = '/tag:WMS_Capabilities/tag:Capability/tag:Request/tag:GetMap/tag:Format';
  892 + $entries = $xpath->query ( $q );
  893 + }
  894 + $arr = array ();
  895 + foreach ( $entries as $entry ) {
  896 + $arr [] = $entry->nodeValue;
  897 + }
  898 + return $arr;
  899 +}
  900 +/*
  901 + * wms_formatsinfo
  902 + *
  903 + * Retorna os formatos existentes de retorno da op&ccedil;&atilde;o getfeatureinfo.
  904 + */
  905 +function wms_formatsinfo($dom) {
  906 + $xpath = new DOMXPath ( $dom );
  907 + $query = '//WMT_MS_Capabilities/Capability/Request/GetFeatureInfo/Format';
  908 + $entries = $xpath->query ( $query );
  909 + if ($entries == FALSE || $entries->length == 0) {
  910 + $teste = $xpath->registerNamespace ( "tag", "http://www.opengis.net/wms" );
  911 + $q = '/tag:WMS_Capabilities/tag:Capability/tag:Request/tag:GetCapabilities/tag:Format';
  912 + $entries = $xpath->query ( $q );
  913 + }
  914 + $arr = array ();
  915 + foreach ( $entries as $entry ) {
  916 + $arr [] = $entry->nodeValue;
  917 + }
  918 + return $arr;
  919 +}
  920 +/*
  921 + * wms_estilos
  922 + *
  923 + * Retorna os estilos de um WMS.
  924 + */
  925 +function wms_estilos($dom) {
  926 + //
  927 + // Read the WMS image formats and return them as an array.
  928 + //
  929 + // $xp = "/Style";
  930 + // $ctx = xpath_new_context($dom);
  931 + // $xpnode = xpath_eval($ctx,$xp);
  932 + // return $xpnode->nodeset;
  933 + $return = $dom->getElementsByTagName ( "Style" );
  934 +}
  935 +/*
  936 + * wms_exceptions
  937 + *
  938 + * Retorna as exceptions de um WMS.
  939 + */
  940 +function wms_exceptions($dom) {
  941 + //
  942 + // Read the WMS exception formats and return them as an array.
  943 + //
  944 + $xp = "/WMT_MS_Capabilities/Capability/Exception/Format";
  945 + $ctx = xpath_new_context ( $dom );
  946 + $xpnode = xpath_eval ( $ctx, $xp );
  947 + $arr = array ();
  948 + for($i = 0; $i < sizeof ( $xpnode->nodeset ); ++ $i) {
  949 + $dtnode = $xpnode->nodeset [0]->first_child ();
  950 + array_push ( $arr, $dtnode->content );
  951 + }
  952 + return $arr;
  953 +}
  954 +/*
  955 + * wms_version
  956 + *
  957 + * Retorna a versao.
  958 + */
  959 +function wms_version($dom) {
  960 + $n = $dom->getElementsByTagName ( 'WMT_MS_Capabilities' );
  961 + $params = $dom->getElementsByTagName ( '*' );
  962 +
  963 + foreach ( $params as $param ) {
  964 + $v = $param->getAttribute ( 'version' );
  965 + break;
  966 + }
  967 + return $v;
  968 +}
  969 +/*
  970 + * wms_layers
  971 + *
  972 + * Retorna os layers de um WMS.
  973 + */
  974 +function wms_layers($dom) {
  975 + //
  976 + // Read the WMS first level layers and return an
  977 + // array of nodes.
  978 + //
  979 + $xpath = new DOMXPath ( $dom );
  980 + $query = '//WMT_MS_Capabilities/Capability/Layer/Layer/Layer';
  981 + $entries = $xpath->query ( $query );
  982 + if ($entries->length == 0) {
  983 + $query = '//WMT_MS_Capabilities/Capability/Layer';
  984 + $entries = $xpath->query ( $query );
  985 + } else {
  986 + $query = '//WMT_MS_Capabilities/Capability/Layer/Layer';
  987 + $entries = $xpath->query ( $query );
  988 + }
  989 + return $entries;
  990 +}
  991 +/*
  992 + * wms_xpnode2content
  993 + *
  994 + * Read the content child node of an element tag node WMS.
  995 + */
  996 +function wms_xpnode2content($xp_node) {
  997 + //
  998 + // Read the content child node of an element tag
  999 + // node.
  1000 + //
  1001 + $content = "";
  1002 + if ($xp_node->nodeset [0]) {
  1003 + $node = $xp_node->nodeset [0]->first_child ();
  1004 + $content = $node->content;
  1005 + }
  1006 + return $content;
  1007 +}
  1008 +/*
  1009 + * wms_srs
  1010 + *
  1011 + * Retorna os SRSs WMS.
  1012 + */
  1013 +function wms_srs($dom) {
  1014 + $xpath = new DOMXPath ( $dom );
  1015 + $query = '//WMT_MS_Capabilities/Capability/Layer/SRS';
  1016 + $entries = $xpath->query ( $query );
  1017 + if ($entries == FALSE || $entries->length == 0) {
  1018 + $teste = $xpath->registerNamespace ( "tag", "http://www.opengis.net/wms" );
  1019 + $q = '/tag:WMS_Capabilities/tag:Capability/tag:Layer/tag:CRS';
  1020 + $entries = $xpath->query ( $q );
  1021 + }
  1022 +
  1023 + $srs = "";
  1024 + // utiliza apenas os epsg do Brasil
  1025 + $single = array ();
  1026 + foreach ( $entries as $entry ) {
  1027 + $arr [] = $entry->nodeValue;
  1028 + if ($entry->nodeValue == "CRS:84") {
  1029 + $single [] = "CRS:84";
  1030 + }
  1031 + if ($entry->nodeValue == "EPSG:4326") {
  1032 + $single [] = "EPSG:4326";
  1033 + }
  1034 + if ($entry->nodeValue == "EPSG:4618") {
  1035 + $single [] = "EPSG:4618";
  1036 + }
  1037 + }
  1038 + if (count ( $single ) > 0) {
  1039 + $arr = $single;
  1040 + }
  1041 + return $arr;
  1042 +}
  1043 +/*
  1044 + * wms_bbox
  1045 + *
  1046 + * Retorna o BBOX de um WMS.
  1047 + */
  1048 +function wms_bbox($dom) {
  1049 + $xpath = new DOMXPath ( $dom );
  1050 + $query = '//WMT_MS_Capabilities/Capability/Layer/LatLonBoundingBox';
  1051 + $entries = $xpath->query ( $query );
  1052 + foreach ( $entries as $entry ) {
  1053 + $bbox = $entry->nodeValue;
  1054 + }
  1055 + if ($bbox == '-1,-1,-1,-1') {
  1056 + return '-180,-90,180,90';
  1057 + } else {
  1058 + return wms_bbox2txt ( $bbox );
  1059 + }
  1060 +}
  1061 +/*
  1062 + * wms_bbox2txt
  1063 + *
  1064 + * Convert a BoundingBox node into a text string de um wms.
  1065 + */
  1066 +function wms_bbox2txt($node) {
  1067 + //
  1068 + // Convert a BoundingBox node into a text string.
  1069 + //
  1070 + if ($node) {
  1071 + $txt .= 1 * $node->get_attribute ( "minx" );
  1072 + $txt .= ",";
  1073 + $txt .= 1 * $node->get_attribute ( "miny" );
  1074 + $txt .= ",";
  1075 + $txt .= 1 * $node->get_attribute ( "maxx" );
  1076 + $txt .= ",";
  1077 + $txt .= 1 * $node->get_attribute ( "maxy" );
  1078 + } else {
  1079 + $txt = "-180,-90,180,90";
  1080 + }
  1081 + return $txt;
  1082 +}
  1083 +/*
  1084 + * wms_layer2html
  1085 + *
  1086 + * Convert a Layer node into an HTML representation wms.
  1087 + */
  1088 +function wms_layer2html($node, $tipo, $layer) {
  1089 + //
  1090 + // Convert a Layer node into an HTML representation.
  1091 + //
  1092 + $ctx = xpath_new_context ( $node );
  1093 + $xp_title = xpath_eval ( $ctx, "/Title" );
  1094 + $xp_name = xpath_eval ( $ctx, "/Name" );
  1095 + if (wms_xpnode2content ( $xp_name ) == "") {
  1096 + $xp_name = xpath_eval ( $ctx, "/name" );
  1097 + }
  1098 + $xp_srs = xpath_eval ( $ctx, "/SRS" );
  1099 + $xp_llbbox = xpath_eval ( $ctx, "/LatLonBoundingBox" );
  1100 + $xp_bbox = xpath_eval ( $ctx, "/BoundingBox" );
  1101 + $txt_title = wms_xpnode2content ( $xp_title );
  1102 + $txt_name = wms_xpnode2content ( $xp_name );
  1103 + $txt_srs = strtoupper ( wms_xpnode2content ( $xp_srs ) );
  1104 + $node_llbbox = $xp_llbbox->nodeset [0];
  1105 + $node_bbox = $xp_bbox->nodeset [0];
  1106 + $queryable = 0;
  1107 + if ($node->get_attribute ( "queryable" )) {
  1108 + $queryable = 1;
  1109 + }
  1110 + $opaque = 0;
  1111 + if ($node->get_attribute ( "opaque" )) {
  1112 + $opaque = 1;
  1113 + }
  1114 + // legenda
  1115 + $xp_legenda = xpath_eval ( $ctx, "/LegendURL/OnlineResource" );
  1116 + $nodelegenda = $xp_legenda->nodeset [0];
  1117 + if ($nodelegenda) {
  1118 + $legenda = $nodelegenda->get_attribute ( "href" );
  1119 + }
  1120 +
  1121 + $html = "<INPUT TYPE='radio' NAME='checks' VALUE='$txt_name' onClick='toggle(event,\"$tipo\",\"$layer\",\"$legenda\",\"$txt_title\")'>";
  1122 + $html .= "&nbsp;&nbsp;";
  1123 + $html .= $txt_title . "\n";
  1124 + $html .= wms_hidden ( "bbox_$txt_name", wms_bbox2txt ( $node_bbox ) );
  1125 + $html .= wms_hidden ( "llbox_$txt_name", wms_bbox2txt ( $node_llbbox ) );
  1126 + $html .= wms_hidden ( "srs_$txt_name", $txt_srs );
  1127 + $html .= wms_hidden ( "query_$txt_name", $queryable );
  1128 + $html .= wms_hidden ( "opaque_$txt_name", $opaque );
  1129 + $html .= "<BR>";
  1130 + return $html;
  1131 +}
  1132 +/*
  1133 + * wms_layer3html
  1134 + *
  1135 + * Convert a Layer node into an HTML representation sem radio.
  1136 + */
  1137 +function wms_layer3html($node) {
  1138 + //
  1139 + // Convert a Layer node into an HTML representation sem radio.
  1140 + //
  1141 + $ctx = xpath_new_context ( $node );
  1142 + $xp_title = xpath_eval ( $ctx, "/Title" );
  1143 + $xp_abs = xpath_eval ( $ctx, "/Abstract" );
  1144 + $txt_title = wms_xpnode2content ( $xp_title );
  1145 + $txt_abs = wms_xpnode2content ( $xp_abs );
  1146 + $html .= "<b>" . $txt_title . "</b><i style='color:gray'>" . "-" . $txt_abs . "</i>\n";
  1147 + $html .= "<BR>";
  1148 + return $html;
  1149 +}
  1150 +/*
  1151 + * wms_layer4html
  1152 + *
  1153 + * Convert a Layer into an HTML WMS.
  1154 + */
  1155 +function wms_layer4html($layer) {
  1156 + $estilos = wms_estilos ( $layer );
  1157 + if (count ( $estilos ) > 0) {
  1158 + $ctxl = xpath_new_context ( $layer );
  1159 + $xp_namel = xpath_eval ( $ctxl, "/Name" );
  1160 + if (wms_xpnode2content ( $xp_namel ) == "") {
  1161 + $xp_namel = xpath_eval ( $ctxl, "/name" );
  1162 + }
  1163 + $txt_namel = wms_xpnode2content ( $xp_namel );
  1164 + $html .= wms_layer3html ( $layer );
  1165 + foreach ( $estilos as $estilo ) {
  1166 + $html .= wms_layer2html ( $estilo, "estilo", $txt_namel );
  1167 + }
  1168 + } else {
  1169 + $html .= wms_layer2html ( $layer, "tema", "" );
  1170 + }
  1171 + return $html;
  1172 +}
568 1173
569 - );  
570 - }  
571 - }  
572 - }  
573 - //exit;  
574 - return($res);  
575 -}  
576 -  
577 -function imprimeEstilos($es,$suporta,$retorna,$tval,$tituloalternativo)  
578 -{  
579 - foreach($es as $e)  
580 - {  
581 - //$tval = $e["titulo"];  
582 - $nomeestilo = $e["nome"];  
583 - $nomecamada = $e["titulo"];  
584 - //if($nomecamada == "default" || $nomecamada == "")  
585 - //{$nomecamada = $tituloalternativo;}  
586 - $tituloestilo = $e["titulo"];  
587 - $retorna[] = "<input style='cursor:pointer' type=radio NAME='checks' onClick='seltema(\"estilo\",\"" . $tval . "\",\"\",\"" . $nomeestilo . "\",\"".$tituloalternativo." ".$nomecamada." ".$tituloestilo."\",\"".$suporta."\")' value='" . $nomeestilo . "'/><span style=color:blue >" . $nomeestilo." <i>".$tituloestilo."</i></span><br>";  
588 - }  
589 - return $retorna;  
590 -}  
591 -function imprimeTag($r,$retorna)  
592 -{  
593 - if(!$r["nome"])  
594 - {$retorna[] = "<br><span style='color:brown;font-size:14pt' ><b>".$r["titulo"]."</b></span><br>";}  
595 - else  
596 - {  
597 - $retorna[] = "<hr>";  
598 - $retorna[] = "<br><span style='color:brown;font-size:12pt' ><b>".$r["nome"]."</b></span><br>";  
599 - $retorna[] = "<br><span style='color:black;font-size:12pt' ><b>".$r["titulo"]."</b></span><br>";  
600 - $retorna[] = "<br><span style='color:gray;font-size:9pt' >".$r["resumo"]."</span><br>";  
601 - }  
602 - return $retorna;  
603 -}  
604 -function pegaTag($layer)  
605 -{  
606 - //error_reporting(0);  
607 - $noslayer = $layer->childNodes;  
608 - $resultado = array(  
609 - "estiloas" => array(),  
610 - "tags" => array()  
611 - );  
612 - for ($i = 0; $i < $noslayer->length; ++$i){  
613 - $tnome = $noslayer->item($i)->tagName;  
614 - $tvalor = $noslayer->item($i)->nodeValue;  
615 - if($tnome){  
616 - //echo "<br>".$tnome;  
617 - if ($tnome == "Title")  
618 - {$resultado["titulo"] = $tvalor;}  
619 - if ($tnome == "Name")  
620 - {$resultado["nome"] = $tvalor;}  
621 - if ($tnome == "Abstract")  
622 - {$resultado["resumo"] = $tvalor;}  
623 -  
624 - if ($tnome == "Style"){  
625 - $ss = $noslayer->item($i)->childNodes;  
626 - $ssl = $ss->length;  
627 - $n = "";  
628 - $t = "";  
629 - for ($s = 0; $s < $ssl; $s++)  
630 - {  
631 - $snome = $ss->item($s)->tagName;  
632 - $svalor = $ss->item($s)->nodeValue;  
633 - if($snome)  
634 - {  
635 - if ($snome == "Title")  
636 - {$t=$svalor;}  
637 - if ($snome == "Name")  
638 - {$n=$svalor;}  
639 - }  
640 - }  
641 - //echo "<pre>";echo $n;  
642 - if($n != ""){  
643 - array_push($resultado["estilos"],array("nome"=>$n,"titulo"=>$t));  
644 - }  
645 - }  
646 - array_push($resultado["tags"],$tnome);  
647 - //echo "<pre>";var_dump($resultado);  
648 - }  
649 - }  
650 - return $resultado;  
651 -}  
652 -  
653 -  
654 -/*  
655 -temaswfs  
656 -  
657 -Lista os temas de um web service WFS.  
658 -  
659 -parameters:  
660 -$servico - Endere&ccedil;o do web service.  
661 -  
662 -$cp - Objeto CPAINT.  
663 -*/  
664 -function temaswfs()  
665 -{  
666 - global $servico,$cp;  
667 - $teste = explode("=",$servico);  
668 - if ( count($teste) > 1 ){$servico = $servico."&";}  
669 - $wms_service_request = $servico . "REQUEST=GetCapabilities&SERVICE=WFS";  
670 - # -------------------------------------------------------------  
671 - # Test that the capabilites file has successfully downloaded.  
672 - #  
673 - if( !($wms_capabilities = file($wms_service_request)) ) {  
674 - # Cannot download the capabilities file.  
675 - $cp->set_data("Erro de acesso");  
676 - return;  
677 - }  
678 - $wms_capabilities = implode("",$wms_capabilities);  
679 - $dom = new DomDocument();  
680 - $dom->loadXML($wms_capabilities);  
681 - $services = $dom->getElementsByTagName("Service");  
682 - foreach ($services as $service)  
683 - {  
684 - $vs = $service->getElementsByTagName("Name");  
685 - $serv = "";  
686 - foreach ($vs as $v)  
687 - {$serv .= $v->nodeValue;}  
688 - }  
689 - $layers = $dom->getElementsByTagName("FeatureType");  
690 - foreach ($layers as $layer)  
691 - {  
692 - $vs = $layer->getElementsByTagName("Title");  
693 - $temp1 = "";  
694 - foreach ($vs as $v)  
695 - {$temp1 .= $v->nodeValue;}  
696 -  
697 - $vs = $layer->getElementsByTagName("Abstract");  
698 - $temp2 = "";  
699 - foreach ($vs as $v)  
700 - {$temp2 .= $v->nodeValue;}  
701 -  
702 - $vs = $layer->getElementsByTagName("SRS");  
703 - $temp3 = array();  
704 - foreach ($vs as $v)  
705 - {$temp3[] = $v->nodeValue;}  
706 - $temp3 = implode("#",$temp3);  
707 -  
708 - $vs = $layer->getElementsByTagName("Name");  
709 - $temp = "";  
710 - foreach ($vs as $v)  
711 - {$temp .= $v->nodeValue;}  
712 - $temp = "<input style='cursor:pointer' type=radio NAME='checks' onClick='seltema(\"" . $temp . "\",\"" .$temp1. "\",\"" . $temp3 . "\",\"" . $serv ."\")' /><span style=color:red >" . $temp . "</span><br>";  
713 - $retorno .= "<br>".$temp.$temp1."<br>".$temp2."<hr>";  
714 - }  
715 - $cp->set_data($retorno);  
716 -}  
717 -/*  
718 -Function: xml2html  
719 -  
720 -Converte caracteres XML em HTML.  
721 -  
722 -Parametro:  
723 -  
724 -$str {string} - Xml que ser&aacute; convertido  
725 -  
726 -Retorno:  
727 -  
728 -{string}  
729 -*/  
730 -function xml2html ( $str )  
731 -{  
732 - $str = ereg_replace("&","&amp;",$str);  
733 - $str = ereg_replace("<","&lt;",$str);  
734 - $str = ereg_replace(">","&gt;<BR>",$str);  
735 - return $str;  
736 -}  
737 -/*  
738 -wms_descricao  
739 -  
740 -Retorna a descri&ccedil;&atilde;o de um servi&ccedil;o (n�).  
741 -*/  
742 -function wms_descricao ( $dom,$xp )  
743 -{  
744 - $xpath = new DOMXPath($dom);  
745 - $query = $xp;  
746 - $entries = $xpath->query($query);  
747 - $n = "";  
748 - foreach ($entries as $entry)  
749 - {  
750 - $n = $entry->nodeValue;  
751 - }  
752 - return $n;  
753 -}  
754 -/*  
755 -wms_descricaov  
756 -  
757 -Retorna a descri&ccedil;&atilde;o de um servi&ccedil;o (atributo).  
758 -*/  
759 -function wms_descricaov ( $dom,$xp,$attrib )  
760 -{  
761 - $xpath = new DOMXPath($dom);  
762 - $query = $xp;  
763 - $entries = $xpath->query($query);  
764 - $n = "";  
765 - foreach ($entries as $entry)  
766 - {  
767 - $n = $entry->getAttribute($attrib);  
768 - }  
769 - return $n;  
770 -}  
771 -/*  
772 -wms_descricaon  
773 -  
774 -Retorna a descri&ccedil;&atilde;o de um servi&ccedil;o (filho de um n�).  
775 -*/  
776 -function wms_descricaon ( $dom,$xp,$n ) {  
777 - $ctx = xpath_new_context($dom);  
778 - $xpnode = xpath_eval($ctx,$xp);  
779 - $dtnode = $xpnode->nodeset[$n]->first_child();  
780 - return $dtnode->content;  
781 -}  
782 -/*  
783 -wms_title  
784 -  
785 -Retorna o t&iacute;tulo de um WMS.  
786 -*/  
787 -function wms_title ( $dom ) {  
788 - #  
789 - # Read the WMS service title and return it as text.  
790 - #  
791 - $xpath = new DOMXPath($dom);  
792 - $query = '//WMT_MS_Capabilities/Service/Title';  
793 - $entries = $xpath->query($query);  
794 - foreach ($entries as $entry){$nomeserv = $entry->nodeValue;}  
795 - return $nomeserv;  
796 -}  
797 -/*  
798 -wms_onlineresource  
799 -  
800 -Retorna o recurso on-line de um WMS.  
801 -*/  
802 -function wms_onlineresource ( $dom ) {  
803 - #  
804 - # Read the WMS online resource URL and return it as text.  
805 - #  
806 - $xp = "/WMT_MS_Capabilities/Service/OnlineResource";  
807 - $ctx = xpath_new_context($dom);  
808 - $xpnode = xpath_eval($ctx,$xp);  
809 - return $xpnode->nodeset[0]->get_attribute("href");  
810 -}  
811 -/*  
812 -wms_formats  
813 -  
814 -Retorna os formatos de imagem de um WMS.  
815 -*/  
816 -function wms_formats ( $dom )  
817 -{  
818 - $xpath = new DOMXPath($dom);  
819 - $query = '//WMT_MS_Capabilities/Capability/Request/GetMap/Format';  
820 - $entries = $xpath->query($query);  
821 - if($entries == FALSE || $entries->length == 0){  
822 - $teste = $xpath->registerNamespace("tag", "http://www.opengis.net/wms");  
823 - $q = '/tag:WMS_Capabilities/tag:Capability/tag:Request/tag:GetMap/tag:Format';  
824 - $entries = $xpath->query($q);  
825 - }  
826 - $arr = array();  
827 - foreach ($entries as $entry)  
828 - {  
829 - $arr[] = $entry->nodeValue;  
830 - }  
831 - return $arr;  
832 -}  
833 -/*  
834 -wms_formatsinfo  
835 -  
836 -Retorna os formatos existentes de retorno da op&ccedil;&atilde;o getfeatureinfo.  
837 -*/  
838 -function wms_formatsinfo ( $dom )  
839 -{  
840 - $xpath = new DOMXPath($dom);  
841 - $query = '//WMT_MS_Capabilities/Capability/Request/GetFeatureInfo/Format';  
842 - $entries = $xpath->query($query);  
843 - if($entries == FALSE || $entries->length == 0){  
844 - $teste = $xpath->registerNamespace("tag", "http://www.opengis.net/wms");  
845 - $q = '/tag:WMS_Capabilities/tag:Capability/tag:Request/tag:GetCapabilities/tag:Format';  
846 - $entries = $xpath->query($q);  
847 - }  
848 - $arr = array();  
849 - foreach ($entries as $entry)  
850 - {  
851 - $arr[] = $entry->nodeValue;  
852 - }  
853 - return $arr;  
854 -}  
855 -/*  
856 -wms_estilos  
857 -  
858 -Retorna os estilos de um WMS.  
859 -*/  
860 -function wms_estilos ( $dom ) {  
861 - #  
862 - # Read the WMS image formats and return them as an array.  
863 - #  
864 - //$xp = "/Style";  
865 - //$ctx = xpath_new_context($dom);  
866 - //$xpnode = xpath_eval($ctx,$xp);  
867 - //return $xpnode->nodeset;  
868 - $return = $dom->getElementsByTagName("Style");  
869 -  
870 -}  
871 -/*  
872 -wms_exceptions  
873 -  
874 -Retorna as exceptions de um WMS.  
875 -*/  
876 -function wms_exceptions ( $dom ) {  
877 - #  
878 - # Read the WMS exception formats and return them as an array.  
879 - #  
880 - $xp = "/WMT_MS_Capabilities/Capability/Exception/Format";  
881 - $ctx = xpath_new_context($dom);  
882 - $xpnode = xpath_eval($ctx,$xp);  
883 - $arr = array();  
884 - for( $i = 0; $i < sizeof($xpnode->nodeset); ++$i ) {  
885 - $dtnode = $xpnode->nodeset[0]->first_child();  
886 - array_push($arr,$dtnode->content);  
887 - }  
888 - return $arr;  
889 -}  
890 -/*  
891 -wms_version  
892 -  
893 -Retorna a versao.  
894 -*/  
895 -function wms_version ( $dom )  
896 -{  
897 - $n = $dom->getElementsByTagName('WMT_MS_Capabilities');  
898 - $params = $dom->getElementsByTagName('*');  
899 -  
900 - foreach ($params as $param) {  
901 - $v = $param -> getAttribute('version');  
902 - break;  
903 - }  
904 - return $v;  
905 -}  
906 -/*  
907 -wms_layers  
908 -  
909 -Retorna os layers de um WMS.  
910 -*/  
911 -function wms_layers ( $dom ) {  
912 - #  
913 - # Read the WMS first level layers and return an  
914 - # array of nodes.  
915 - #  
916 - $xpath = new DOMXPath($dom);  
917 - $query = '//WMT_MS_Capabilities/Capability/Layer/Layer/Layer';  
918 - $entries = $xpath->query($query);  
919 - if ($entries->length == 0)  
920 - {  
921 - $query = '//WMT_MS_Capabilities/Capability/Layer';  
922 - $entries = $xpath->query($query);  
923 - }  
924 - else  
925 - {  
926 - $query = '//WMT_MS_Capabilities/Capability/Layer/Layer';  
927 - $entries = $xpath->query($query);  
928 - }  
929 - return $entries;  
930 -}  
931 -/*  
932 -wms_xpnode2content  
933 -  
934 -Read the content child node of an element tag node WMS.  
935 -*/  
936 -function wms_xpnode2content( $xp_node ) {  
937 - #  
938 - # Read the content child node of an element tag  
939 - # node.  
940 - #  
941 - $content = "";  
942 - if( $xp_node->nodeset[0] ) {  
943 - $node = $xp_node->nodeset[0]->first_child();  
944 - $content = $node->content;  
945 - }  
946 - return $content;  
947 -}  
948 -/*  
949 -wms_srs  
950 -  
951 -Retorna os SRSs WMS.  
952 -*/  
953 -function wms_srs( $dom )  
954 -{  
955 - $xpath = new DOMXPath($dom);  
956 - $query = '//WMT_MS_Capabilities/Capability/Layer/SRS';  
957 - $entries = $xpath->query($query);  
958 - if($entries == FALSE || $entries->length == 0){  
959 - $teste = $xpath->registerNamespace("tag", "http://www.opengis.net/wms");  
960 - $q = '/tag:WMS_Capabilities/tag:Capability/tag:Layer/tag:CRS';  
961 - $entries = $xpath->query($q);  
962 - }  
963 -  
964 - $srs = "";  
965 - //utiliza apenas os epsg do Brasil  
966 - $single = array();  
967 - foreach ($entries as $entry)  
968 - {  
969 - $arr[] = $entry->nodeValue;  
970 - if ($entry->nodeValue == "CRS:84")  
971 - {$single[] = "CRS:84";}  
972 - if ($entry->nodeValue == "EPSG:4326")  
973 - {$single[] = "EPSG:4326";}  
974 - if ($entry->nodeValue == "EPSG:4618")  
975 - {$single[] = "EPSG:4618";}  
976 - }  
977 - if (count($single) > 0)  
978 - {$arr = $single;}  
979 - return $arr;  
980 -}  
981 -/*  
982 -wms_bbox  
983 -  
984 -Retorna o BBOX de um WMS.  
985 -*/  
986 -function wms_bbox( $dom )  
987 -{  
988 - $xpath = new DOMXPath($dom);  
989 - $query = '//WMT_MS_Capabilities/Capability/Layer/LatLonBoundingBox';  
990 - $entries = $xpath->query($query);  
991 - foreach ($entries as $entry){$bbox = $entry->nodeValue;}  
992 - if ($bbox == '-1,-1,-1,-1')  
993 - {return '-180,-90,180,90';}  
994 - else  
995 - {return wms_bbox2txt($bbox);}  
996 -}  
997 -/*  
998 -wms_bbox2txt  
999 -  
1000 -Convert a BoundingBox node into a text string de um wms.  
1001 -*/  
1002 -function wms_bbox2txt( $node ) {  
1003 - #  
1004 - # Convert a BoundingBox node into a text string.  
1005 - #  
1006 - if( $node ) {  
1007 - $txt .= 1 * $node->get_attribute("minx");  
1008 - $txt .= ",";  
1009 - $txt .= 1 * $node->get_attribute("miny");  
1010 - $txt .= ",";  
1011 - $txt .= 1 * $node->get_attribute("maxx");  
1012 - $txt .= ",";  
1013 - $txt .= 1 * $node->get_attribute("maxy");  
1014 - }  
1015 - else {  
1016 - $txt = "-180,-90,180,90";  
1017 - }  
1018 - return $txt;  
1019 -}  
1020 -/*  
1021 -wms_layer2html  
1022 -  
1023 -Convert a Layer node into an HTML representation wms.  
1024 -*/  
1025 -function wms_layer2html( $node, $tipo , $layer ) {  
1026 - #  
1027 - # Convert a Layer node into an HTML representation.  
1028 - #  
1029 - $ctx = xpath_new_context($node);  
1030 - $xp_title = xpath_eval($ctx,"/Title");  
1031 - $xp_name = xpath_eval($ctx,"/Name");  
1032 - if (wms_xpnode2content($xp_name) == ""){$xp_name = xpath_eval($ctx,"/name");}  
1033 - $xp_srs = xpath_eval($ctx,"/SRS");  
1034 - $xp_llbbox = xpath_eval($ctx,"/LatLonBoundingBox");  
1035 - $xp_bbox = xpath_eval($ctx,"/BoundingBox");  
1036 - $txt_title = wms_xpnode2content($xp_title);  
1037 - $txt_name = wms_xpnode2content($xp_name);  
1038 - $txt_srs = strtoupper(wms_xpnode2content($xp_srs));  
1039 - $node_llbbox = $xp_llbbox->nodeset[0];  
1040 - $node_bbox = $xp_bbox->nodeset[0];  
1041 - $queryable = 0;  
1042 - if ( $node->get_attribute("queryable") ) {  
1043 - $queryable = 1;  
1044 - }  
1045 - $opaque = 0;  
1046 - if ( $node->get_attribute("opaque") ) {  
1047 - $opaque = 1;  
1048 - }  
1049 - //legenda  
1050 - $xp_legenda = xpath_eval($ctx,"/LegendURL/OnlineResource");  
1051 - $nodelegenda = $xp_legenda->nodeset[0];  
1052 - if($nodelegenda)  
1053 - { $legenda = $nodelegenda->get_attribute("href");}  
1054 -  
1055 - $html = "<INPUT TYPE='radio' NAME='checks' VALUE='$txt_name' onClick='toggle(event,\"$tipo\",\"$layer\",\"$legenda\",\"$txt_title\")'>";  
1056 - $html .= "&nbsp;&nbsp;";  
1057 - $html .= $txt_title . "\n";  
1058 - $html .= wms_hidden("bbox_$txt_name", wms_bbox2txt($node_bbox));  
1059 - $html .= wms_hidden("llbox_$txt_name", wms_bbox2txt($node_llbbox));  
1060 - $html .= wms_hidden("srs_$txt_name", $txt_srs);  
1061 - $html .= wms_hidden("query_$txt_name", $queryable );  
1062 - $html .= wms_hidden("opaque_$txt_name", $opaque );  
1063 - $html .= "<BR>";  
1064 - return $html;  
1065 -}  
1066 -/*  
1067 -wms_layer3html  
1068 -  
1069 -Convert a Layer node into an HTML representation sem radio.  
1070 -*/  
1071 -function wms_layer3html( $node ) {  
1072 - #  
1073 - # Convert a Layer node into an HTML representation sem radio.  
1074 - #  
1075 - $ctx = xpath_new_context($node);  
1076 - $xp_title = xpath_eval($ctx,"/Title");  
1077 - $xp_abs = xpath_eval($ctx,"/Abstract");  
1078 - $txt_title = wms_xpnode2content($xp_title);  
1079 - $txt_abs = wms_xpnode2content($xp_abs);  
1080 - $html .= "<b>".$txt_title . "</b><i style='color:gray'>" . "-" . $txt_abs . "</i>\n";  
1081 - $html .= "<BR>";  
1082 - return $html;  
1083 -}  
1084 -/*  
1085 -wms_layer4html  
1086 -  
1087 -Convert a Layer into an HTML WMS.  
1088 -*/  
1089 -function wms_layer4html( $layer ) {  
1090 - $estilos = wms_estilos($layer);  
1091 - if (count($estilos) > 0)  
1092 - {  
1093 - $ctxl = xpath_new_context($layer);  
1094 - $xp_namel = xpath_eval($ctxl,"/Name");  
1095 - if (wms_xpnode2content($xp_namel) == ""){$xp_namel = xpath_eval($ctxl,"/name");}  
1096 - $txt_namel = wms_xpnode2content($xp_namel);  
1097 - $html .= wms_layer3html($layer);  
1098 - foreach ($estilos as $estilo)  
1099 - {  
1100 - $html .= wms_layer2html($estilo,"estilo",$txt_namel);  
1101 - }  
1102 - }  
1103 - else  
1104 - {  
1105 - $html .= wms_layer2html($layer,"tema","");  
1106 - }  
1107 - return $html;  
1108 -}  
1109 -  
1110 ?> 1174 ?>
css/i3geo7.css.php 100644 → 100755
ferramentas/conectargeorss/dicionario.js
@@ -31,7 +31,7 @@ i3GEOF.conectargeorss.dicionario = { @@ -31,7 +31,7 @@ i3GEOF.conectargeorss.dicionario = {
31 es : "" 31 es : ""
32 } ], 32 } ],
33 'sel' : [ { 33 'sel' : [ {
34 - pt : "Digite o endere&ccedil;o do servi&ccedil;o ou escolha da lista abaixo. Utilize as guias acima para ver o resultado da conex&atilde;o", 34 + pt : "Digite o endere&ccedil;o do servi&ccedil;o ou escolha da lista abaixo",
35 en : "", 35 en : "",
36 es : "" 36 es : ""
37 } ] 37 } ]
ferramentas/conectargeorss/index.js
@@ -168,8 +168,12 @@ i3GEOF.conectargeorss = { @@ -168,8 +168,12 @@ i3GEOF.conectargeorss = {
168 if (retorno.data != undefined){ 168 if (retorno.data != undefined){
169 retorno = retorno.data; 169 retorno = retorno.data;
170 for (i=0;i<retorno.length; i++){ 170 for (i=0;i<retorno.length; i++){
171 - ins += "<div class='list-group condensed'><div class='row-content text-left'>" +  
172 - "<label class='nomeTema'><a onclick='i3GEOF.conectargeorss.adiciona(\""+i+"\");return false;' href='javascript:void(0)'><h4>" + retorno[i].title + "</h4></a></label></div></div>"; 171 + ins += "<div class='list-group condensed'><div class='row-content text-left'>"
  172 + + "<a onclick='i3GEOF.conectargeorss.adiciona(\""+i+"\");return false;' role='button' class='btn btn-default btn-fab btn-fab-max' href='javascript:void(0)'>"
  173 + + "<span class='material-icons'>visibility</span></a><label style='width:200px;' class='nomeTema' >"
  174 + + "<a onclick='i3GEOF.conectargeorss.adiciona(\""+i+"\");return false;' href='javascript:void(0)'><h4>"
  175 + + retorno[i].title +
  176 + + "</h4></a></label></div></div>";
173 } 177 }
174 $i("resultadoget").innerHTML = ins; 178 $i("resultadoget").innerHTML = ins;
175 } 179 }
ferramentas/conectarservicos/index.js
@@ -75,26 +75,10 @@ i3GEOF.conectarservicos = @@ -75,26 +75,10 @@ i3GEOF.conectarservicos =
75 ); 75 );
76 }, 76 },
77 wms: function(){ 77 wms: function(){
78 - i3GEO.janela.cria(  
79 - "440px",  
80 - "400px",  
81 - i3GEO.configura.locaplic + "/ferramentas/conectarwms/index.htm",  
82 - "",  
83 - "",  
84 - "<span class='i3GeoTituloJanelaBsNolink' >" + $trad("a4") + "</span></div>",  
85 - "i3GEO.conectarwms",  
86 - false,  
87 - "hd",  
88 - "",  
89 - "",  
90 - "",  
91 - false,  
92 - "",  
93 - "",  
94 - "nao",  
95 - "",  
96 - "28"  
97 - ); 78 + i3GEO.util.scriptTag(i3GEO.configura.locaplic
  79 + + "/ferramentas/conectarwms/dependencias.php",
  80 + "i3GEOF.conectarwms.iniciaJanelaFlutuante()",
  81 + "i3GEOF.conectarwms_script");
98 }, 82 },
99 kml: function() { 83 kml: function() {
100 i3GEO.util.scriptTag(i3GEO.configura.locaplic 84 i3GEO.util.scriptTag(i3GEO.configura.locaplic
ferramentas/conectarwms/dependencias.php 0 → 100755
@@ -0,0 +1,24 @@ @@ -0,0 +1,24 @@
  1 +<?php
  2 +include(dirname(__FILE__)."/../blacklist.php");
  3 +verificaBlFerramentas(basename(dirname(__FILE__)));
  4 +
  5 +
  6 +/**
  7 + * Carrega os programas javascript necessarios para a ferramenta
  8 + * Esse programa e usado na tag <script> ou com a funcao scripttag do i3Geo
  9 + * Alem de carregar os scripts, carrega tambem o template no formato MUSTACHE, definindo a variavel
  10 + * javascript i3GEOF.carregakml.MUSTACHE
  11 + * O template e substituido pelos valores definidos em index.js no momento da inicializacao da ferramenta
  12 + */
  13 +if(extension_loaded('zlib')){
  14 + ob_start('ob_gzhandler');
  15 +}
  16 +header("Content-type: text/javascript");
  17 +include("index.js");
  18 +include("dicionario.js");
  19 +echo "\n";
  20 +
  21 +if(extension_loaded('zlib')){
  22 + ob_end_flush();
  23 +}
  24 +?>
0 \ No newline at end of file 25 \ No newline at end of file
ferramentas/conectarwms/dicionario.js
@@ -20,6 +20,16 @@ i3GEOF.conectarwms.dicionario = { @@ -20,6 +20,16 @@ i3GEOF.conectarwms.dicionario = {
20 en : "", 20 en : "",
21 es : "Servicio no definido" 21 es : "Servicio no definido"
22 } ], 22 } ],
  23 + 'listaLayers' : [ {
  24 + pt : "Lista as camadas do WMS",
  25 + en : "",
  26 + es : ""
  27 + } ],
  28 + 'sel' : [ {
  29 + pt : "Digite o endere&ccedil;o do servi&ccedil;o ou escolha da lista abaixo",
  30 + en : "",
  31 + es : ""
  32 + } ],
23 5 : [ { 33 5 : [ {
24 pt : "Ooops! Problemas ao acessar o servi&ccedil;o.", 34 pt : "Ooops! Problemas ao acessar o servi&ccedil;o.",
25 en : "", 35 en : "",
ferramentas/conectarwms/exec.php 0 → 100755
@@ -0,0 +1,34 @@ @@ -0,0 +1,34 @@
  1 +<?php
  2 +include_once(dirname(__FILE__)."/../safe.php");
  3 +verificaBlFerramentas(basename(dirname(__FILE__)),$i3geoBlFerramentas,false);
  4 +//
  5 +//faz a busca da fun&ccedil;&atilde;o que deve ser executada
  6 +//
  7 +$retorno = ""; //string que ser&aacute; retornada ao browser via JSON
  8 +switch (strtoupper($funcao)){
  9 +/*
  10 +Valor: ADICIONATEMAGEORSS
  11 +
  12 +Adiciona um tema baseado em um RSS.
  13 +
  14 +<Mapa->adicionaTemaGeoRSS>
  15 +*/
  16 + case "ADICIONATEMAGEORSS":
  17 + include_once(dirname(__FILE__)."/../../classesphp/classe_mapa.php");
  18 + $m = new Mapa($map_file);
  19 + $retorno = $m->adicionaTemaGeoRSS($_GET["servico"],$dir_tmp,$locaplic,$_GET["canal"]);
  20 + if ($retorno != "erro"){
  21 + $m->salva();
  22 + $_SESSION["contadorsalva"]++;
  23 + redesenhaMapa();
  24 + }
  25 + else{
  26 + $retorno = "erro.Nenhum dado espacializado foi encontrado.";
  27 + }
  28 + break;
  29 +}
  30 +if(isset($map_file) && isset($postgis_mapa) && $map_file != ""){
  31 + restauraCon($map_file,$postgis_mapa);
  32 +}
  33 +cpjson($retorno);
  34 +?>
0 \ No newline at end of file 35 \ No newline at end of file
ferramentas/conectarwms/imagens/rss.gif

1.48 KB

ferramentas/conectarwms/index.htm
@@ -1,141 +0,0 @@ @@ -1,141 +0,0 @@
1 -<!DOCTYPE html>  
2 -<html>  
3 -<head>  
4 -<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">  
5 -<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=0">  
6 -<script src="../../js/i3geo.js"></script>  
7 -<link rel="stylesheet" type="text/css" href="../../pacotes/bootstrap/css/bootstrap.min.css">  
8 -<link rel="stylesheet" type="text/css" href="../../pacotes/bootstrap-material-design/dist/css/bootstrap-material-design.min.css">  
9 -<link rel="stylesheet" type="text/css" href="../../css/default.css">  
10 -</head>  
11 -<body id="i3geo" style='background-color: #477596; height: 400px; visibility:visible' class="yui-skin-sam bd">  
12 - <div class='yui-navset' style='top: 0px; cursor: pointer; left: 0px; margin-left: 2px;'>  
13 - <ul class="yui-nav" style="border-width: 0pt 0pt 0px; border-color: rgb(240, 240, 240); border-bottom-color: white;">  
14 - <li>  
15 - <div id='guia1' style='text-align: center; left: 0px;'>  
16 - <a>  
17 - <em>Servi&ccedil;os</em>  
18 - </a>  
19 - </div>  
20 - </li>  
21 - <li>  
22 - <div id='guia2' style='text-align: center; left: 0px;'>  
23 - <a>  
24 - <em>Metadados</em>  
25 - </a>  
26 - </div>  
27 - </li>  
28 - <li>  
29 - <div id='guia3' style='text-align: center; left: 0px;'>  
30 - <a>  
31 - <em>Lista de temas</em>  
32 - </a>  
33 - </div>  
34 - </li>  
35 - </ul>  
36 - </div>  
37 -  
38 - <div class='container-fluid bd' id="guia1obj">  
39 - <h5>  
40 - <a href="../../documentacao/ajuda/The_ArcIMS_OGC_WMS_Connector.pdf" target=blank>Veja como criar web services no ARCIMS</a>  
41 - </h5>  
42 - <h5>  
43 - <a href="../../documentacao/ajuda/ArcGIS9.x.html" target=blank>Veja como utilizar web services no ARCGIS</a>  
44 - </h5>  
45 - <h5>Digite o endere&ccedil;o do servi&ccedil;o ou escolha da lista abaixo. Utilize as guias acima para ver o resultado da conex&atilde;o. Por padr&atilde;o, utiliza-se a vers&atilde;o  
46 - 1.1.0 do GetCapabilities. Voc&ecirc; pode adicionar um outro, bastando incluir no endere&ccedil;o do servi&ccedil;o "&amp;version=1.3.0" por exemplo.</h5>  
47 -  
48 - <div class='form-group label-fixed condensed'>  
49 - <input class="form-control input-lg" type='text' id='servico' value='' />  
50 - </div>  
51 -  
52 - <div style="width: 100%;" class='form-group label-fixed condensed'>  
53 - <div id=RSSwms class="input-group"></div>  
54 - </div>  
55 - <br>  
56 - <div id=RSSbt style="text-align: left;"></div>  
57 - </div>  
58 - <div class='container-fluid' id="guia2obj">  
59 - <p class=paragrafo>  
60 - <input type=button id="getCapabilities" value="Descri&ccedil;&atilde;o do WMS" />  
61 - </p>  
62 - <div id=resultadoget style="display: block; position: relative; top: 5px; left: 1px" class=paragrafo></div>  
63 - </div>  
64 - <div class='container-fluid' id="guia3obj">  
65 - <p class=paragrafo>  
66 - Ap&oacute;s a conex&atilde;o ser estabelecida e surgir a lista de temas, selecione a camada que ser&aacute; adicionada ao mapa.  
67 - <br>  
68 - </p>  
69 - <div id=textoSLD style="display: none; font-size: 10px">  
70 - <p class=paragrafo>  
71 - Opcionalmente vc pode indicar o tipo de representa&ccedil;&atilde;o que ser&aacute; utilizada.  
72 - <br>  
73 - N&atilde;o altere o tipo de representa&ccedil;&atilde;o se a camada escolhida for uma imagem (dados raster) ou se voc&ecirc; tiver d&uacute;vidas sobre ela.  
74 - <br>  
75 - </p>  
76 - <div class=styled-select>  
77 - <select id=tiporep>  
78 - <option value="">---</option>  
79 - <option value="poligonal">poligonal</option>  
80 - <option value="linear">linear</option>  
81 - <option value="pontual">pontual</option>  
82 - </select>  
83 - </div>  
84 - </div>  
85 - <div id=listatemas class=paragrafo></div>  
86 - </div>  
87 -  
88 - <div id="aguarde">Aguarde...</div>  
89 -  
90 - <script type="text/javascript" src="index.js"></script>  
91 - <script type="text/javascript">  
92 - $.material.init();  
93 - var b = new YAHOO.widget.Button("getCapabilities", {  
94 - onclick : {  
95 - fn : getcapabilities  
96 - }  
97 - });  
98 - b.addClass("rodar");  
99 - g_locaplic = "../..";  
100 - iniciaListaWS();  
101 - function iniciaListaWS() {  
102 - g_RSSwms = new Array("");  
103 - aguarde("block");  
104 -  
105 - if (document.getElementById("RSSwms")) {  
106 - if (g_RSSwms.length > 0) {  
107 - var p = g_locaplic  
108 - + "/classesphp/wscliente.php?funcao=listaRSSwsARRAY&rss="  
109 - + g_RSSwms.join("|") + "&tipo=WMS";  
110 - var cp = new cpaint();  
111 - //cp.set_debug(2)  
112 - cp.set_response_type("JSON");  
113 - cp.call(p, "listaRSSwsARRAY", mostraRetornowmsRSS);  
114 - }  
115 - }  
116 - }  
117 - function mostraRetornowmsRSS(retorno) {  
118 - var reg = /Erro/gi;  
119 - if (retorno.data.rss.search(reg) != -1) {  
120 - i3GEO.janela.tempoMsg("OOps! Ocorreu um erro\n" + retorno.data);  
121 - return;  
122 - }  
123 - var canais = retorno.data.canais;  
124 - var ncanais = canais.length;  
125 - $i("RSSbt").innerHTML = retorno.data.rss;  
126 - var i, ins = "";  
127 - ins += "<select class='form-control' size='5' onchange='registraws(this.value)' style='width:100%;' >";  
128 - for (i = 0; i < ncanais; i++) {  
129 - var caso = canais[i];  
130 - var valor = "'" + caso.link + "','" + caso.id_ws + "','"  
131 - + caso.tipo_ws + "'";  
132 - ins += "<option value=" + valor + " >" + caso.title  
133 - + "</option>";  
134 - }  
135 - ins += "</select>";  
136 - document.getElementById("RSSwms").innerHTML = ins;  
137 - aguarde("none");  
138 - }  
139 - </script>  
140 -</body>  
141 -</html>  
ferramentas/conectarwms/index.js
1 -/*  
2 -Title: Conex&atilde;o com WMS  
3 -  
4 -Acrescenta ao mapa um novo tema com base em um endere&ccedil;o de WMS  
5 -  
6 -O usu&aacute;rio pode indicar o endere&ccedil;o ou escolher de uma lista. A lista &eacute; pr&eacute;-definida por meio do sistema de administra&ccedil;&atilde;o  
7 -do i3Geo.  
8 -  
9 -Veja:  
10 -  
11 -<ADICIONATEMAWMS>  
12 -  
13 -Arquivo:  
14 -  
15 -i3geo/ferramentas/conectarwms/index.js  
16 -  
17 -Licenca:  
18 -  
19 -GPL2  
20 -  
21 -i3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet  
22 -  
23 -Direitos Autorais Reservados (c) 2006 Minist&eacute;rio do Meio Ambiente Brasil  
24 -Desenvolvedor: Edmar Moretti edmar.moretti@gmail.com  
25 -  
26 -Este programa &eacute; software livre; voc&ecirc; pode redistribu&iacute;-lo  
27 -e/ou modific&aacute;-lo sob os termos da Licen&ccedil;a P&uacute;blica Geral  
28 -GNU conforme publicada pela Free Software Foundation;  
29 -  
30 -Este programa &eacute; distribu&iacute;do na expectativa de que seja &uacute;til,  
31 -por&eacute;m, SEM NENHUMA GARANTIA; nem mesmo a garantia impl&iacute;cita  
32 -de COMERCIABILIDADE OU ADEQUA&Ccedil;&Atilde;O A UMA FINALIDADE ESPEC&Iacute;FICA.  
33 -Consulte a Licen&ccedil;a P&uacute;blica Geral do GNU para mais detalhes.  
34 -Voc&ecirc; deve ter recebido uma c&oacute;pia da Licen&ccedil;a P&uacute;blica Geral do  
35 -GNU junto com este programa; se n&atilde;o, escreva para a  
36 -Free Software Foundation, Inc., no endere&ccedil;o  
37 -59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.  
38 -*/  
39 -//variaveis globais  
40 -g_tipo = ""; //tipo de tema  
41 -g_tema = ""; //tema selecionado do ws  
42 -g_legenda = ""; //legenda do tema  
43 -g_nometema = ""; //nome do tema  
44 -g_idws = "";  
45 -g_sid = window.parent.i3GEO.configura.sid;  
46 -var g_tipows = "";//obtido do mapfile  
47 -//ativaGuias("");  
48 -//mostraGuia("guia1");  
49 -i3GEO.guias.mostraGuiaFerramenta("guia1");  
50 -if($i("guia1")){  
51 - $i("guia1").onclick = function(){  
52 - //mostraGuia("guia1");  
53 - i3GEO.guias.mostraGuiaFerramenta("guia1");  
54 - $i("resultadoget").innerHTML = "";  
55 - }; 1 +if(typeof(i3GEOF) === 'undefined'){
  2 + var i3GEOF = {};
56 } 3 }
57 -if($i("guia2")){  
58 - $i("guia2").onclick = function(){clickGuia2();};  
59 -}  
60 -if($i("guia3")){  
61 - $i("guia3").onclick = function(){clickGuia3();};  
62 -}  
63 -function aguarde(valor){  
64 - if(document.getElementById("aguarde"))  
65 - document.getElementById("aguarde").style.display = valor;  
66 -}  
67 -/*  
68 -Function: listaRSS  
69 -  
70 -Monta a lista de servi&ccedil;os WMS cadastrados no sistema de administra&ccedil;&atilde;o do i3Geo  
71 -  
72 -Veja:  
73 -  
74 -<LISTARSSWSARRAY>  
75 4
76 -Parametros:  
77 -  
78 -g_RSS {Array} - array com a lista de RSS que cont&eacute;m a lista de WMS cadastrados. Se for um array com um &uacute;nico elemento vazio,  
79 -ser&aacute; utilizado o endere&ccedil;o default do i3GEO (g_RSS = new Array(""))  
80 -  
81 -onde {Stribg} - id do elemento HTML que receber&aacute; a lista de endere&ccedil;os formatada  
82 -*/  
83 -function listaRSS(g_RSS,onde)  
84 -{  
85 - var mostraRetornoRSS = function(retorno){  
86 - aguarde("none");  
87 - var reg = /Erro/gi;  
88 - if (retorno.data.rss.search(reg) != -1)  
89 - {  
90 - i3GEO.janela.tempoMsg($trad('erro',i3GEOF.conectarwms.dicionario)+"\n"+retorno.data);  
91 - return;  
92 - }  
93 - var canais = retorno.data.canais;  
94 - var ncanais = canais.length;  
95 - var ins = "<br>"+retorno.data.rss;  
96 - for (var i=0;i<ncanais; i++)  
97 - {  
98 - var caso = canais[i];  
99 - ins += "\<p class=clique onclick=\"registraws('"+caso.link+"','"+caso.id_ws+"','"+caso.tipo_ws+"')\" \>\<b\>"+caso.title+"\<\/b\>&nbsp;"+caso.description+"&nbsp;("+caso.author+")";  
100 - if(caso.nacessos > 0)  
101 - {  
102 - var pc = (parseInt(caso.nacessosok) * 100) / parseInt(caso.nacessos);  
103 - ins += " \<span style=color:gray \>("+$trad('disponibilidade',i3GEOF.conectarwms.dicionario)+": "+pc+"%, "+$trad('acessos',i3GEOF.conectarwms.dicionario)+": "+caso.nacessos+")\<\/span>\<\/p\>"; 5 +/*
  6 +Classe: i3GEOF.conectarwmsi3GEOF.conectarwms
  7 + */
  8 +i3GEOF.conectarwms = {
  9 + IDWS: "",
  10 + TIPO: "",
  11 + TIPOWS: "WMS",
  12 + TEMA: "",
  13 + LEGENDA: "",
  14 + NOMETEMA: "",
  15 + /*
  16 + Variavel: aguarde
  17 +
  18 + Estilo do objeto DOM com a imagem de aguarde existente no cabe&ccedil;alho da janela.
  19 + */
  20 + aguarde: "",
  21 + /**
  22 + * Template no formato mustache. E preenchido na carga do javascript com o programa dependencias.php
  23 + */
  24 + MUSTACHE : "",
  25 + /**
  26 + * Susbtitutos para o template
  27 + */
  28 + mustacheHash : function() {
  29 + var dicionario = i3GEO.idioma.objetoIdioma(i3GEOF.conectarwms.dicionario);
  30 + return dicionario;
  31 + },
  32 + /*
  33 + Function: inicia
  34 +
  35 + Inicia a ferramenta. &Eacute; chamado por criaJanelaFlutuante
  36 +
  37 + Parametro:
  38 +
  39 + iddiv {String} - id do div que receber&aacute; o conteudo HTML da ferramenta
  40 + */
  41 + inicia: function(iddiv){
  42 + if(i3GEOF.conectarwms.MUSTACHE == ""){
  43 + $.get(i3GEO.configura.locaplic + "/ferramentas/conectarwms/template_mst.html", function(template) {
  44 + i3GEOF.conectarwms.MUSTACHE = template;
  45 + i3GEOF.conectarwms.inicia(iddiv);
  46 + });
  47 + return;
104 } 48 }
105 - }  
106 - document.getElementById(onde).innerHTML = ins+"<br><br>";  
107 - };  
108 - if (document.getElementById(onde))  
109 - {  
110 - if (g_RSS.length > 0)  
111 - {  
112 - var p = "../../classesphp/wscliente.php?funcao=listaRSSwsARRAY&rss="+g_RSS.join("|")+"&tipo=GEORSS"; 49 + $i(iddiv).innerHTML = i3GEOF.conectarwms.html();
  50 + var b, monta = function(retorno){
  51 + if (retorno.data.rss.search(/Erro/gi) != -1){
  52 + i3GEO.janela.tempoMsg("OOps! Ocorreu um erro\n"+retorno.data);
  53 + return;
  54 + }
  55 + var canais = retorno.data.canais;
  56 + var ncanais = canais.length;
  57 + var i, ins = "";
  58 + ins += "<select class='form-control' onchange='i3GEOF.conectarwms.registraws(this.value)' style='width:100%;' >";
  59 + ins += "<option value='' >---</option>";
  60 + for (i = 0; i < ncanais; i++) {
  61 + var caso = canais[i];
  62 + var valor = "'" + caso.link + "','" + caso.id_ws + "'";
  63 + ins += "<option value=" + valor + " >"+caso.title+"</option>";
  64 + }
  65 + ins += "</select>";
  66 + document.getElementById("RSSgeo").innerHTML = ins;
  67 + };
  68 +
  69 + var p = i3GEO.configura.locaplic + "/classesphp/wscliente.php?funcao=listaRSSwsARRAY&rss=&tipo=WMS";
113 var cp = new cpaint(); 70 var cp = new cpaint();
114 - //cp.set_debug(2)  
115 cp.set_response_type("JSON"); 71 cp.set_response_type("JSON");
116 - cp.call(p,"listaRSSwsARRAY",mostraRetornoRSS);  
117 - }  
118 - }  
119 -}  
120 -/*  
121 -Function: getcapabilities  
122 -  
123 -Abre uma nova janela com o resultado da chamada GETCAPABILITIES sobre o WMS escolhido  
124 -*/  
125 -function getcapabilities()  
126 -{  
127 - if ($i("servico").value == ""){i3GEO.janela.tempoMsg($trad('servico',i3GEOF.conectarwms.dicionario));}  
128 - else  
129 - {window.open($i("servico").value+"&service=wms&request=getcapabilities&version=1.1.1");}  
130 -}  
131 -/*  
132 -Function: clickGuia2  
133 -  
134 -Mostra as principais informa&ccedil;&otilde;es sobre o WMS escolhido tendo como fonte o getcapabilities  
135 -  
136 -Veja:  
137 -  
138 -<GETCAPABILITIES2>  
139 -*/  
140 -function clickGuia2()  
141 -{  
142 - //mostraGuia("guia2");  
143 - i3GEO.guias.mostraGuiaFerramenta("guia2");  
144 - if ($i("servico").value == ""){i3GEO.janela.tempoMsg($trad('servico',i3GEOF.conectarwms.dicionario));}  
145 - else  
146 - {  
147 - var metadados = function(retorno){  
148 - if (retorno.data != undefined)  
149 - {  
150 - aguarde("none");  
151 - $i("resultadoget").innerHTML = retorno.data; 72 + cp.call(p,"listaRSSwsARRAY",monta);
  73 + },
  74 + /*
  75 + Function: html
  76 +
  77 + Gera o c&oacute;digo html para apresenta&ccedil;&atilde;o das op&ccedil;&otilde;es da ferramenta
  78 +
  79 + Retorno:
  80 +
  81 + String com o c&oacute;digo html
  82 + */
  83 + html:function() {
  84 + var ins = Mustache.render(i3GEOF.conectarwms.MUSTACHE, i3GEOF.conectarwms.mustacheHash());
  85 + return ins;
  86 + },
  87 + /*
  88 + Function: iniciaJanelaFlutuante
  89 +
  90 + Cria a janela flutuante para controle da ferramenta.
  91 + */
  92 + iniciaJanelaFlutuante: function(){
  93 + var minimiza,cabecalho,janela,divid,titulo;
  94 + if($i("i3GEOF.conectarwms")){
  95 + return;
152 } 96 }
153 - else  
154 - {  
155 - aguarde("none");  
156 - $i("resultadoget").innerHTML = "<p style=color:red >"+$trad('erro',i3GEOF.conectarwms.dicionario)+"<br>"; 97 + //cria a janela flutuante
  98 + minimiza = function(){
  99 + i3GEO.janela.minimiza("i3GEOF.conectarwms",200);
  100 + };
  101 + titulo = "<span class='i3GeoTituloJanelaBsNolink' >" + $trad("a4") + "</span></div>";
  102 + janela = i3GEO.janela.cria(
  103 + "600px",
  104 + "500px",
  105 + "",
  106 + "",
  107 + "",
  108 + titulo,
  109 + "i3GEOF.conectarwms",
  110 + false,
  111 + "hd",
  112 + "",
  113 + minimiza,
  114 + "",
  115 + true,
  116 + "",
  117 + "",
  118 + "",
  119 + "",
  120 + "28"
  121 + );
  122 + divid = janela[2].id;
  123 + i3GEOF.conectarwms.aguarde = $i("i3GEOF.conectarwms_imagemCabecalho").style;
  124 + $i("i3GEOF.conectarwms_corpo").style.backgroundColor = "white";
  125 + i3GEOF.conectarwms.inicia(divid);
  126 + },
  127 + adiciona: function(id){
  128 + var url, temp, cp, p;
  129 + if(i3GEOF.conectarwms.aguarde.visibility === "visible"){
  130 + return;
157 } 131 }
158 - };  
159 - $i("guia2obj").style.display="block";  
160 - aguarde("block");  
161 - var p = "../../classesphp/mapa_controle.php?g_sid="+g_sid+"&funcao=getcapabilities2&servico="+$i("servico").value;  
162 - var cp = new cpaint();  
163 - //cp.set_debug(2)  
164 - cp.set_response_type("JSON");  
165 - cp.call(p,"getcapabilities2",metadados);  
166 - }  
167 -}  
168 -/*  
169 -Function: clickGuia3  
170 -  
171 -Lista as camadas existentes no WMS escolhido.  
172 -  
173 -O resultado da chamada em PHP &eacute; uma string HTML j&aacute; formatada. O "radio" aponta para a fun&ccedil;&atilde;o "adiciona"  
174 -  
175 -Veja:  
176 -  
177 -<TEMASWMS>  
178 -*/  
179 -function clickGuia3(codLayer)  
180 -{  
181 - //mostraGuia("guia3");  
182 - i3GEO.guias.mostraGuiaFerramenta("guia3");  
183 - var listatemas = function(retorno){  
184 - g_idws = "";  
185 - aguarde("none");  
186 - if ((retorno.data != "erro") && (retorno.data != undefined)){  
187 - $i("listatemas").innerHTML = retorno.data;  
188 - g_tipo = ""; //tipo de tema  
189 - g_tema = ""; //tema selecionado do ws  
190 - g_legenda = ""; //legenda do tema  
191 - g_nometema = ""; //nome do tema  
192 - g_sld = "";  
193 - if ($i("suportasld")){  
194 - if ($i("suportasld").value != "nao") {  
195 - if ($i("textoSLD"))  
196 - $i("textoSLD").style.display = "block"; 132 + if($i("servicoWms").value !== ""){
  133 + i3GEOF.conectarwms.aguarde.visibility = "visible";
  134 + temp = function(retorno){
  135 + i3GEOF.conectarwms.aguarde.visibility = "hidden";
  136 + i3GEO.atualiza();
  137 + };
  138 + cp = new cpaint();
  139 + cp.set_response_type("JSON");
  140 + p = i3GEO.configura.locaplic+"/ferramentas/conectarwms/exec.php?g_sid="+i3GEO.configura.sid+"&funcao=adicionaTemaGeoRSS&canal="+id+"&servico="+$i("servicoWms").value;
  141 + cp.call(p,"foo",temp);
  142 + }
  143 + },
  144 + listaLayers: function(codLayer){
  145 + if(i3GEOF.conectarwms.aguarde.visibility === "visible"){
  146 + return;
  147 + }
  148 + var listatemas = function(retorno){
  149 + i3GEOF.conectarwms.aguarde.visibility = "hidden";
  150 + i3GEOF.conectarwms.IDWS = "";
  151 + if ((retorno.data != "erro") && (retorno.data != undefined)){
  152 + $i("resultadoget").innerHTML = retorno.data;
  153 + i3GEOF.conectarwms.TIPO = ""; //tipo de tema
  154 + i3GEOF.conectarwms.TEMA = ""; //tema selecionado do ws
  155 + i3GEOF.conectarwms.LEGENDA = ""; //legenda do tema
  156 + i3GEOF.conectarwms.NOMETEMA = ""; //nome do tema
  157 + g_sld = "";
  158 + if ($i("suportasld")){
  159 + if ($i("suportasld").value != "nao") {
  160 + if ($i("textoSLD"))
  161 + $i("textoSLD").style.display = "block";
  162 + }
  163 + }
  164 + //ativa um layer caso tenha sido enviado como um parametro no inicio da ferramenta
  165 + i3GEOF.conectarwms.ativaAutoLayer(codLayer);
  166 + }
  167 + else{
  168 + $i("resultadoget").innerHTML = "<h5 class='alert alert-danger'>"+$trad('erro',i3GEOF.conectarwms.dicionario)+"</h5>";
197 } 169 }
  170 + };
  171 + if ($i("servicoWms").value == ""){
  172 + i3GEO.janela.tempoMsg($trad('servico',i3GEOF.conectarwms.dicionario));
198 } 173 }
199 - //ativa um layer caso tenha sido enviado como um parametro no inicio da ferramenta  
200 - ativaAutoLayer(codLayer);  
201 - }  
202 - else{  
203 - //$i("listatemas").innerHTML = "erro";  
204 - }  
205 - };  
206 - if ($i("servico").value == ""){  
207 - i3GEO.janela.tempoMsg($trad('servico',i3GEOF.conectarwms.dicionario));  
208 - }  
209 - else  
210 - {  
211 - $i("listatemas").innerHTML = "";  
212 - aguarde("block");  
213 - var p = "../../classesphp/mapa_controle.php?g_sid="+g_sid+"&funcao=temaswms&id_ws="+g_idws+"&servico="+$i("servico").value;  
214 - var cp = new cpaint();  
215 - //cp.set_debug(2)  
216 - cp.set_response_type("JSON");  
217 - cp.call(p,"temaswms",listatemas);  
218 - }  
219 -}  
220 -function ativaAutoLayer(codLayer){  
221 - if(codLayer && codLayer != ""){  
222 - var container, rs, nrs, i, r, codLayer1;  
223 - codLayer1 = codLayer.split(":");  
224 - if(codLayer1.length > 0){  
225 - codLayer1 = codLayer1[1];  
226 - }  
227 - else{  
228 - codLayer1 = codLayer1[0];  
229 - }  
230 - container = $i("listatemas");  
231 - if(container){  
232 - rs = container.getElementsByTagName("input");  
233 - nrs = rs.length;  
234 -  
235 - for(i = 0; i < nrs; i++){  
236 - r = rs[i];  
237 - if(r.type === "radio" && (r.value === codLayer || r.value === codLayer1)){  
238 - r.onclick.call();  
239 - r.checked = true;  
240 - r.previousElementSibling.previousElementSibling.previousElementSibling.previousElementSibling.previousElementSibling.previousElementSibling.scrollIntoView(true); 174 + else{
  175 + $i("resultadoget").innerHTML = "";
  176 + i3GEOF.conectarwms.aguarde.visibility = "visible";
  177 + var p = i3GEO.configura.locaplic + "/classesphp/mapa_controle.php?g_sid="+i3GEO.configura.sid+"&funcao=temaswms&id_ws="+i3GEOF.conectarwms.IDWS+"&servico="+$i("servicoWms").value;
  178 + var cp = new cpaint();
  179 + cp.set_response_type("JSON");
  180 + cp.call(p,"temaswms",listatemas);
  181 + }
  182 + },
  183 + registraws: function(nome,id_ws,tipo){
  184 + $i("servicoWms").value = nome;
  185 + if(arguments.length == 2){
  186 + i3GEOF.conectarwms.IDWS = id_ws;
  187 + }
  188 + else {
  189 + i3GEOF.conectarwms.IDWS = "";
  190 + }
  191 + i3GEOF.conectarwms.listaLayers();
  192 +
  193 + i3GEOF.conectarwms.TIPO = ""; //tipo de tema
  194 + i3GEOF.conectarwms.TIPOWS = "WMS"; //tipo de servico
  195 + i3GEOF.conectarwms.TEMA = ""; //tema selecionado do ws
  196 + i3GEOF.conectarwms.LEGENDA = ""; //legenda do tema
  197 + i3GEOF.conectarwms.NOMETEMA = ""; //nome do tema
  198 + if(tipo){
  199 + i3GEOF.conectarwms.TIPOWS = tipo;
  200 + }
  201 + i3GEOF.conectarwms.listaLayers();
  202 + },
  203 + montaCanais: function(retorno){
  204 + var i,ins = "<h5>"+ $trad('selecionaItem',i3GEOF.conectarwms.dicionario)+"</h5>";
  205 + i3GEOF.conectarwms.aguarde.visibility = "hidden";
  206 + if (retorno.data != undefined){
  207 + retorno = retorno.data;
  208 + for (i=0;i<retorno.length; i++){
  209 + ins += "<div class='list-group condensed'><div class='row-content text-left'>" +
  210 + "<label class='nomeTema'><a onclick='i3GEOF.conectarwms.adiciona(\""+i+"\");return false;' href='javascript:void(0)'><h4>" + retorno[i].title + "</h4></a></label></div></div>";
  211 + }
  212 + $i("resultadoget").innerHTML = ins;
  213 + }
  214 + else{
  215 + $i("resultadoget").innerHTML = "<h5 class='alert alert-danger'>"+$trad('erro',i3GEOF.conectarwms.dicionario)+"</h5>";
  216 + }
  217 + },
  218 + ativaAutoLayer: function (codLayer){
  219 + if(codLayer && codLayer != ""){
  220 + var container, rs, nrs, i, r, codLayer1;
  221 + codLayer1 = codLayer.split(":");
  222 + if(codLayer1.length > 0){
  223 + codLayer1 = codLayer1[1];
  224 + }
  225 + else{
  226 + codLayer1 = codLayer1[0];
  227 + }
  228 + container = $i("resultadoget");
  229 + if(container){
  230 + rs = container.getElementsByTagName("input");
  231 + nrs = rs.length;
  232 +
  233 + for(i = 0; i < nrs; i++){
  234 + r = rs[i];
  235 + if(r.type === "radio" && (r.value === codLayer || r.value === codLayer1)){
  236 + r.onclick.call();
  237 + r.checked = true;
  238 + r.previousElementSibling.previousElementSibling.previousElementSibling.previousElementSibling.previousElementSibling.previousElementSibling.scrollIntoView(true);
  239 + }
  240 + }
  241 + }
  242 + }
  243 + },
  244 + seltema: function(tipo,tema,legenda,nometema,nomecamada,sldflag){
  245 + i3GEOF.conectarwms.TIPO = tipo; //tipo de tema
  246 + i3GEOF.conectarwms.TIPOWS = "WMS"; //tipo de servico
  247 + i3GEOF.conectarwms.TEMA = tema; //tema selecionado do ws
  248 + i3GEOF.conectarwms.LEGENDA = legenda; //legenda do tema
  249 +
  250 + if (tema != ""){
  251 + var retorno = function(retorno){
  252 + i3GEOF.conectarwms.aguarde.visibility = "hidden";
  253 + if(retorno.data != "ok"){
  254 + i3GEO.janela.tempoMsg($trad('erro2',i3GEOF.conectarwms.dicionario));aguarde("none");
  255 + }
  256 + else{
  257 + i3GEO.atualiza();
  258 + }
  259 + };
  260 + i3GEOF.conectarwms.aguarde.visibility = "visible";
  261 + var tiporep = "";
  262 + if($i("tiporep")){
  263 + tiporep = $i("tiporep").value;
  264 + }
  265 + var url = i3GEO.configura.locaplic + "/classesphp/mapa_controle.php?g_sid="+i3GEO.configura.sid;
  266 + if($i("servicoWms").value.split("?").length === 1){
  267 + $i("servicoWms").value = $i("servicoWms").value+"?";
  268 + }
  269 + if($i("proj").value === ""){
  270 + $i("proj").value = "EPSG:4326";
  271 + }
  272 + var p = "&funcao=adicionatemawms&servico="+$i("servicoWms").value+"&tema="+i3GEOF.conectarwms.tema+"&nome="+nometema+"&proj="+$i("proj").value+"&formato="+$i("formatos").value+"&tipo="+tipo+"&versao="+$i("versao").value+"&nomecamada="+nomecamada+"&tiporep="+tiporep+"&suportasld="+sldflag+"&formatosinfo="+$i("formatosinfo").value;
  273 + if(g_tipows == "WMS-Tile"){
  274 + p += "&tile=1";
  275 + }
  276 + else{
  277 + p += "&tile=0";
241 } 278 }
  279 + var cp = new cpaint();
  280 + cp.set_transfer_mode("POST");
  281 + cp.set_response_type("JSON");
  282 + cp.call(url,"adicionatemawms",retorno,p);
242 } 283 }
243 } 284 }
244 - }  
245 -}  
246 -  
247 -/*  
248 -Function: registraws  
249 -  
250 -Armazena em vari&aacute;veis locais os parametros do WMS escolhido e ativa a guia 3, mostrando a lista de camadas dispon&iacute;veis  
251 -  
252 -Parametros:  
253 -  
254 -nome {string} - nome do WMS  
255 -  
256 -id_ws {String} - id do WMS  
257 -*/  
258 -function registraws(nome,id_ws,tipo)  
259 -{  
260 - $i("servico").value = nome;  
261 - g_tipo = ""; //tipo de tema  
262 - g_tipows = "WMS"; //tipo de servico  
263 - g_tema = ""; //tema selecionado do ws  
264 - g_legenda = ""; //legenda do tema  
265 - g_nometema = ""; //nome do tema  
266 - if(arguments.length == 2)  
267 - g_idws = id_ws;  
268 - else  
269 - g_idws = "";  
270 - if(tipo){  
271 - g_tipows = tipo;  
272 - }  
273 - clickGuia3();  
274 -}  
275 -/*  
276 -Function: seltema  
277 -  
278 -Inclui um LAYER, escolhido de um WMS, no mapa atual  
279 -  
280 -Veja:  
281 -  
282 -<ADICIONATEMAWMS>  
283 -  
284 -*/  
285 -function seltema(tipo,tema,legenda,nometema,nomecamada,sldflag)  
286 -{  
287 - g_tipo = tipo; //tipo de tema  
288 - g_tema = tema; //tema selecionado do ws  
289 - g_legenda = legenda; //legenda do tema  
290 - g_nometema = nometema; //nome do tema  
291 - g_nomecamada = nomecamada; //nome que vai na legenda  
292 - g_sld = sldflag; //suporta ou nao sld  
293 - if (g_tema != "")  
294 - {  
295 - var retorno = function(retorno)  
296 - {  
297 - aguarde("none");  
298 - if(retorno.data != "ok")  
299 - {i3GEO.janela.tempoMsg($trad('erro2',i3GEOF.conectarwms.dicionario));aguarde("none");}  
300 - else  
301 - {window.parent.i3GEO.atualiza();} 285 +};
  286 +function seltema (tipo,tema,legenda,nometema,nomecamada,sldflag){
  287 + i3GEOF.conectarwms.TIPO = tipo; //tipo de tema
  288 + i3GEOF.conectarwms.TEMA = tema; //tema selecionado do ws
  289 + i3GEOF.conectarwms.LEGENDA = legenda; //legenda do tema
  290 +
  291 + if (tema != ""){
  292 + var retorno = function(retorno) {
  293 + if(retorno.data != "ok"){
  294 + i3GEO.janela.tempoMsg($trad('erro2',i3GEOF.conectarwms.dicionario));
  295 + }
  296 + else{
  297 + i3GEO.atualiza();
  298 + }
302 }; 299 };
303 - aguarde("block"); 300 +
304 var tiporep = ""; 301 var tiporep = "";
305 if($i("tiporep")){ 302 if($i("tiporep")){
306 tiporep = $i("tiporep").value; 303 tiporep = $i("tiporep").value;
307 } 304 }
308 - var url = "../../classesphp/mapa_controle.php?g_sid="+g_sid;  
309 - if($i("servico").value.split("?").length === 1){  
310 - $i("servico").value = $i("servico").value+"?"; 305 + var url = i3GEO.configura.locaplic + "/classesphp/mapa_controle.php?g_sid="+i3GEO.configura.sid;
  306 + if($i("servicoWms").value.split("?").length === 1){
  307 + $i("servicoWms").value = $i("servicoWms").value+"?";
311 } 308 }
312 if($i("proj").value === ""){ 309 if($i("proj").value === ""){
313 $i("proj").value = "EPSG:4326"; 310 $i("proj").value = "EPSG:4326";
314 } 311 }
315 - var p = "&funcao=adicionatemawms&servico="+$i("servico").value+"&tema="+g_tema+"&nome="+g_nometema+"&proj="+$i("proj").value+"&formato="+$i("formatos").value+"&tipo="+g_tipo+"&versao="+$i("versao").value+"&nomecamada="+g_nomecamada+"&tiporep="+tiporep+"&suportasld="+g_sld+"&formatosinfo="+$i("formatosinfo").value;  
316 - if(g_tipows == "WMS-Tile"){ 312 + var p = "&funcao=adicionatemawms&servico="+$i("servicoWms").value+"&tema="+tema+"&nome="+nometema
  313 + +"&proj="+$i("proj").value+"&formato="+$i("formatos").value
  314 + +"&tipo="+tipo+"&versao="+$i("versao").value
  315 + +"&nomecamada="+nomecamada+"&tiporep="+tiporep+"&suportasld="+sldflag+"&formatosinfo="+$i("formatosinfo").value;
  316 + if(i3GEOF.conectarwms.TIPOWS == "WMS-Tile"){
317 p += "&tile=1"; 317 p += "&tile=1";
318 } 318 }
319 else{ 319 else{
@@ -321,41 +321,7 @@ function seltema(tipo,tema,legenda,nometema,nomecamada,sldflag) @@ -321,41 +321,7 @@ function seltema(tipo,tema,legenda,nometema,nomecamada,sldflag)
321 } 321 }
322 var cp = new cpaint(); 322 var cp = new cpaint();
323 cp.set_transfer_mode("POST"); 323 cp.set_transfer_mode("POST");
324 - //cp.set_debug(2)  
325 cp.set_response_type("JSON"); 324 cp.set_response_type("JSON");
326 cp.call(url,"adicionatemawms",retorno,p); 325 cp.call(url,"adicionatemawms",retorno,p);
327 } 326 }
328 -}  
329 -/*  
330 -Function abrejanelaIframe  
331 -  
332 -Abre uma janela flutuante contendo um iframe  
333 -  
334 -Parametros:  
335 -  
336 -w {string} - largura  
337 -  
338 -h {string} - altura  
339 -  
340 -s {string} - src do iframe  
341 -*/  
342 -function abrejanelaIframe(){  
343 - var s = "../../admin/html/webservices.html?tipo=wms";  
344 - var janelaeditor = i3GEO.janela.cria(  
345 - "1000",  
346 - "500",  
347 - s,  
348 - parseInt(Math.random()*100,10),  
349 - 10,  
350 - s,  
351 - "janela"+window.parent.i3GEO.util.randomRGB(),  
352 - false,  
353 - "hd",  
354 - "",  
355 - "",  
356 - "",  
357 - true,  
358 - window.parent.i3GEO.configura.locaplic+"/imagens/oxygen/16x16/application-x-smb-workgroup.png"  
359 - );  
360 - YAHOO.util.Event.addListener(janelaeditor[0].close, "click", iniciaListaWS,janelaeditor[0].panel,{id:janelaeditor[0].id},true);  
361 -}  
362 \ No newline at end of file 327 \ No newline at end of file
  328 +};
363 \ No newline at end of file 329 \ No newline at end of file
ferramentas/conectarwms/listalayers.php
@@ -1,84 +0,0 @@ @@ -1,84 +0,0 @@
1 -<?php  
2 -/**  
3 - * Este programa e utilizado pela ferramenta buscainde  
4 - * E uma copia da ferramenta conctarwms sem mostrar as guias de esolha de servico  
5 - * Isso pq o endereco do servico e um parametro obtido em $_GET["servico"]  
6 - */  
7 -include (dirname(__FILE__)."/../../classesphp/sani_request.php");  
8 -include(dirname(__FILE__)."../../ms_configura.php");  
9 -include(dirname(__FILE__)."../blacklist.php");  
10 -verificaBlFerramentas(basename(dirname(__FILE__)),$i3geoBlFerramentas,true);  
11 -?>  
12 -<html>  
13 -  
14 -<head>  
15 -<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">  
16 -<link rel="stylesheet" type="text/css" href="../../css/i3geo_ferramentas6.css">  
17 -<title></title>  
18 -<style type="text/css" >button{background:url(../../imagens/tic.png) 98% 50% no-repeat;}</style>  
19 -<link rel="stylesheet" type="text/css" href="../../pacotes/yui290/build/button/assets/skins/sam/button.css"/>  
20 -<style type="text/css">  
21 -body {  
22 - margin:0;  
23 - padding:0;border:0px;  
24 -}  
25 -p{  
26 - text-align: left;  
27 -}  
28 -.guiaobj {  
29 - background-color: white;  
30 - display: block;  
31 - height: 97%;  
32 - left: 0;  
33 - overflow: auto;  
34 - text-align: left;  
35 - top: 0;  
36 - width: 98%;  
37 -}  
38 -</style>  
39 -</head>  
40 -<body class="yui-skin-sam" style="background-color: white;">  
41 -  
42 - <div class=guiaobj id="guia3obj" style="left:0px;display:block;">  
43 - <div id=listatemas style="display:block;position:relative;top:10px;left:0px;">  
44 - Aguarde...  
45 - </div>  
46 - </div>  
47 -  
48 -<input type=hidden id=servico value="<?php echo $_GET["servico"];?>" />  
49 -  
50 -<script type="text/javascript" src="../../classesjs/i3geo.js"></script>  
51 -<script type="text/javascript" src="index.js"></script>  
52 -  
53 -<script type="text/javascript" >  
54 -//  
55 -//tenta pegar o codigo do layer do endereco do servico  
56 -//  
57 -var buscarEm = ["LAYER","LAYERS","layer","layers","tema","typename","typeName"],  
58 - n = buscarEm.length,  
59 - i,s,partes,  
60 - b = [],  
61 - codLayer = "",  
62 - u = window.location.href;  
63 -  
64 -//acrescenta novas strings  
65 -for(i = 0; i < n; i++){  
66 - b.push("&" + buscarEm[i] + "=");  
67 - b.push("?" + buscarEm[i] + "=");  
68 -}  
69 -n = b.length;  
70 -//quebra as strings pra achar o padrao  
71 -for(i = 0; i < n; i++){  
72 - s = b[i];  
73 - partes = u.split(s);  
74 - if(partes.length > 1){  
75 - partes = partes[1].split("&");  
76 - codLayer = partes[0];  
77 - }  
78 -}  
79 -g_locaplic = "../..";  
80 -//console.info(codLayer)  
81 -clickGuia3(codLayer);  
82 -</script>  
83 -</body>  
84 -</html>  
ferramentas/conectarwms/template_mst.html 0 → 100755
@@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
  1 +<div class="container-fluid">
  2 + <div class='form-group label-fixed condensed'>
  3 + <label class="control-label" for="servicoWms">{{{sel}}}</label>
  4 + <input class="form-control input-lg" type='text' id='servicoWms' value='' />
  5 + </div>
  6 + <div class='form-group label-fixed condensed'>
  7 + <div style="width: 100%;" class="input-group" id='RSSgeo'></div>
  8 + </div>
  9 + <button onclick="i3GEOF.conectarwms.listaLayers()" class='btn btn-primary btn-sm btn-raised'>{{{listaLayers}}}</button>
  10 + <div id="resultadoget" ></div>
  11 +</div>
0 \ No newline at end of file 12 \ No newline at end of file
ferramentas/conectarwmsxxx/dicionario.js 0 → 100755
@@ -0,0 +1,28 @@ @@ -0,0 +1,28 @@
  1 +//+$trad(1,i3GEOF.conectarwms.dicionario)+
  2 +i3GEOF.conectarwms.dicionario = {
  3 + 'erro' : [ {
  4 + pt : "Oops! Ocorreu um erro",
  5 + en : "",
  6 + es : "¡Oops! Ocurri&oacute; un error"
  7 + } ],
  8 + 'disponibilidade' : [ {
  9 + pt : "disponibilidade",
  10 + en : "",
  11 + es : "disponibilidad"
  12 + } ],
  13 + 'acessos' : [ {
  14 + pt : "acessos considerados",
  15 + en : "",
  16 + es : "Accesos considerados"
  17 + } ],
  18 + 'servico' : [ {
  19 + pt : "Servi&ccedil;o n&atilde;o definido",
  20 + en : "",
  21 + es : "Servicio no definido"
  22 + } ],
  23 + 5 : [ {
  24 + pt : "Ooops! Problemas ao acessar o servi&ccedil;o.",
  25 + en : "",
  26 + es : "¡Oops! Problemas para acceder al servicio."
  27 + } ]
  28 +};
0 \ No newline at end of file 29 \ No newline at end of file
ferramentas/conectarwmsxxx/imagens/rss.gif 0 → 100755

1.48 KB

ferramentas/conectarwmsxxx/index.htm 0 → 100755
@@ -0,0 +1,141 @@ @@ -0,0 +1,141 @@
  1 +<!DOCTYPE html>
  2 +<html>
  3 +<head>
  4 +<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
  5 +<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=0">
  6 +<script src="../../js/i3geo.js"></script>
  7 +<link rel="stylesheet" type="text/css" href="../../pacotes/bootstrap/css/bootstrap.min.css">
  8 +<link rel="stylesheet" type="text/css" href="../../pacotes/bootstrap-material-design/dist/css/bootstrap-material-design.min.css">
  9 +<link rel="stylesheet" type="text/css" href="../../css/default.css">
  10 +</head>
  11 +<body id="i3geo" style='background-color: #477596; height: 400px; visibility:visible' class="yui-skin-sam bd">
  12 + <div class='yui-navset' style='top: 0px; cursor: pointer; left: 0px; margin-left: 2px;'>
  13 + <ul class="yui-nav" style="border-width: 0pt 0pt 0px; border-color: rgb(240, 240, 240); border-bottom-color: white;">
  14 + <li>
  15 + <div id='guia1' style='text-align: center; left: 0px;'>
  16 + <a>
  17 + <em>Servi&ccedil;os</em>
  18 + </a>
  19 + </div>
  20 + </li>
  21 + <li>
  22 + <div id='guia2' style='text-align: center; left: 0px;'>
  23 + <a>
  24 + <em>Metadados</em>
  25 + </a>
  26 + </div>
  27 + </li>
  28 + <li>
  29 + <div id='guia3' style='text-align: center; left: 0px;'>
  30 + <a>
  31 + <em>Lista de temas</em>
  32 + </a>
  33 + </div>
  34 + </li>
  35 + </ul>
  36 + </div>
  37 +
  38 + <div class='container-fluid bd' id="guia1obj">
  39 + <h5>
  40 + <a href="../../documentacao/ajuda/The_ArcIMS_OGC_WMS_Connector.pdf" target=blank>Veja como criar web services no ARCIMS</a>
  41 + </h5>
  42 + <h5>
  43 + <a href="../../documentacao/ajuda/ArcGIS9.x.html" target=blank>Veja como utilizar web services no ARCGIS</a>
  44 + </h5>
  45 + <h5>Digite o endere&ccedil;o do servi&ccedil;o ou escolha da lista abaixo. Utilize as guias acima para ver o resultado da conex&atilde;o. Por padr&atilde;o, utiliza-se a vers&atilde;o
  46 + 1.1.0 do GetCapabilities. Voc&ecirc; pode adicionar um outro, bastando incluir no endere&ccedil;o do servi&ccedil;o "&amp;version=1.3.0" por exemplo.</h5>
  47 +
  48 + <div class='form-group label-fixed condensed'>
  49 + <input class="form-control input-lg" type='text' id='servico' value='' />
  50 + </div>
  51 +
  52 + <div style="width: 100%;" class='form-group label-fixed condensed'>
  53 + <div id=RSSwms class="input-group"></div>
  54 + </div>
  55 + <br>
  56 + <div id=RSSbt style="text-align: left;"></div>
  57 + </div>
  58 + <div class='container-fluid' id="guia2obj">
  59 + <p class=paragrafo>
  60 + <input type=button id="getCapabilities" value="Descri&ccedil;&atilde;o do WMS" />
  61 + </p>
  62 + <div id=resultadoget style="display: block; position: relative; top: 5px; left: 1px" class=paragrafo></div>
  63 + </div>
  64 + <div class='container-fluid' id="guia3obj">
  65 + <p class=paragrafo>
  66 + Ap&oacute;s a conex&atilde;o ser estabelecida e surgir a lista de temas, selecione a camada que ser&aacute; adicionada ao mapa.
  67 + <br>
  68 + </p>
  69 + <div id=textoSLD style="display: none; font-size: 10px">
  70 + <p class=paragrafo>
  71 + Opcionalmente vc pode indicar o tipo de representa&ccedil;&atilde;o que ser&aacute; utilizada.
  72 + <br>
  73 + N&atilde;o altere o tipo de representa&ccedil;&atilde;o se a camada escolhida for uma imagem (dados raster) ou se voc&ecirc; tiver d&uacute;vidas sobre ela.
  74 + <br>
  75 + </p>
  76 + <div class=styled-select>
  77 + <select id=tiporep>
  78 + <option value="">---</option>
  79 + <option value="poligonal">poligonal</option>
  80 + <option value="linear">linear</option>
  81 + <option value="pontual">pontual</option>
  82 + </select>
  83 + </div>
  84 + </div>
  85 + <div id=listatemas class=paragrafo></div>
  86 + </div>
  87 +
  88 + <div id="aguarde">Aguarde...</div>
  89 +
  90 + <script type="text/javascript" src="index.js"></script>
  91 + <script type="text/javascript">
  92 + $.material.init();
  93 + var b = new YAHOO.widget.Button("getCapabilities", {
  94 + onclick : {
  95 + fn : getcapabilities
  96 + }
  97 + });
  98 + b.addClass("rodar");
  99 + g_locaplic = "../..";
  100 + iniciaListaWS();
  101 + function iniciaListaWS() {
  102 + g_RSSwms = new Array("");
  103 + aguarde("block");
  104 +
  105 + if (document.getElementById("RSSwms")) {
  106 + if (g_RSSwms.length > 0) {
  107 + var p = g_locaplic
  108 + + "/classesphp/wscliente.php?funcao=listaRSSwsARRAY&rss="
  109 + + g_RSSwms.join("|") + "&tipo=WMS";
  110 + var cp = new cpaint();
  111 + //cp.set_debug(2)
  112 + cp.set_response_type("JSON");
  113 + cp.call(p, "listaRSSwsARRAY", mostraRetornowmsRSS);
  114 + }
  115 + }
  116 + }
  117 + function mostraRetornowmsRSS(retorno) {
  118 + var reg = /Erro/gi;
  119 + if (retorno.data.rss.search(reg) != -1) {
  120 + i3GEO.janela.tempoMsg("OOps! Ocorreu um erro\n" + retorno.data);
  121 + return;
  122 + }
  123 + var canais = retorno.data.canais;
  124 + var ncanais = canais.length;
  125 + $i("RSSbt").innerHTML = retorno.data.rss;
  126 + var i, ins = "";
  127 + ins += "<select class='form-control' size='5' onchange='registraws(this.value)' style='width:100%;' >";
  128 + for (i = 0; i < ncanais; i++) {
  129 + var caso = canais[i];
  130 + var valor = "'" + caso.link + "','" + caso.id_ws + "','"
  131 + + caso.tipo_ws + "'";
  132 + ins += "<option value=" + valor + " >" + caso.title
  133 + + "</option>";
  134 + }
  135 + ins += "</select>";
  136 + document.getElementById("RSSwms").innerHTML = ins;
  137 + aguarde("none");
  138 + }
  139 + </script>
  140 +</body>
  141 +</html>
ferramentas/conectarwmsxxx/index.js 0 → 100755
@@ -0,0 +1,361 @@ @@ -0,0 +1,361 @@
  1 +/*
  2 +Title: Conex&atilde;o com WMS
  3 +
  4 +Acrescenta ao mapa um novo tema com base em um endere&ccedil;o de WMS
  5 +
  6 +O usu&aacute;rio pode indicar o endere&ccedil;o ou escolher de uma lista. A lista &eacute; pr&eacute;-definida por meio do sistema de administra&ccedil;&atilde;o
  7 +do i3Geo.
  8 +
  9 +Veja:
  10 +
  11 +<ADICIONATEMAWMS>
  12 +
  13 +Arquivo:
  14 +
  15 +i3geo/ferramentas/conectarwms/index.js
  16 +
  17 +Licenca:
  18 +
  19 +GPL2
  20 +
  21 +i3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet
  22 +
  23 +Direitos Autorais Reservados (c) 2006 Minist&eacute;rio do Meio Ambiente Brasil
  24 +Desenvolvedor: Edmar Moretti edmar.moretti@gmail.com
  25 +
  26 +Este programa &eacute; software livre; voc&ecirc; pode redistribu&iacute;-lo
  27 +e/ou modific&aacute;-lo sob os termos da Licen&ccedil;a P&uacute;blica Geral
  28 +GNU conforme publicada pela Free Software Foundation;
  29 +
  30 +Este programa &eacute; distribu&iacute;do na expectativa de que seja &uacute;til,
  31 +por&eacute;m, SEM NENHUMA GARANTIA; nem mesmo a garantia impl&iacute;cita
  32 +de COMERCIABILIDADE OU ADEQUA&Ccedil;&Atilde;O A UMA FINALIDADE ESPEC&Iacute;FICA.
  33 +Consulte a Licen&ccedil;a P&uacute;blica Geral do GNU para mais detalhes.
  34 +Voc&ecirc; deve ter recebido uma c&oacute;pia da Licen&ccedil;a P&uacute;blica Geral do
  35 +GNU junto com este programa; se n&atilde;o, escreva para a
  36 +Free Software Foundation, Inc., no endere&ccedil;o
  37 +59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
  38 +*/
  39 +//variaveis globais
  40 +g_tipo = ""; //tipo de tema
  41 +g_tema = ""; //tema selecionado do ws
  42 +g_legenda = ""; //legenda do tema
  43 +g_nometema = ""; //nome do tema
  44 +g_idws = "";
  45 +g_sid = window.parent.i3GEO.configura.sid;
  46 +var g_tipows = "";//obtido do mapfile
  47 +//ativaGuias("");
  48 +//mostraGuia("guia1");
  49 +i3GEO.guias.mostraGuiaFerramenta("guia1");
  50 +if($i("guia1")){
  51 + $i("guia1").onclick = function(){
  52 + //mostraGuia("guia1");
  53 + i3GEO.guias.mostraGuiaFerramenta("guia1");
  54 + $i("resultadoget").innerHTML = "";
  55 + };
  56 +}
  57 +if($i("guia2")){
  58 + $i("guia2").onclick = function(){clickGuia2();};
  59 +}
  60 +if($i("guia3")){
  61 + $i("guia3").onclick = function(){clickGuia3();};
  62 +}
  63 +function aguarde(valor){
  64 + if(document.getElementById("aguarde"))
  65 + document.getElementById("aguarde").style.display = valor;
  66 +}
  67 +/*
  68 +Function: listaRSS
  69 +
  70 +Monta a lista de servi&ccedil;os WMS cadastrados no sistema de administra&ccedil;&atilde;o do i3Geo
  71 +
  72 +Veja:
  73 +
  74 +<LISTARSSWSARRAY>
  75 +
  76 +Parametros:
  77 +
  78 +g_RSS {Array} - array com a lista de RSS que cont&eacute;m a lista de WMS cadastrados. Se for um array com um &uacute;nico elemento vazio,
  79 +ser&aacute; utilizado o endere&ccedil;o default do i3GEO (g_RSS = new Array(""))
  80 +
  81 +onde {Stribg} - id do elemento HTML que receber&aacute; a lista de endere&ccedil;os formatada
  82 +*/
  83 +function listaRSS(g_RSS,onde)
  84 +{
  85 + var mostraRetornoRSS = function(retorno){
  86 + aguarde("none");
  87 + var reg = /Erro/gi;
  88 + if (retorno.data.rss.search(reg) != -1)
  89 + {
  90 + i3GEO.janela.tempoMsg($trad('erro',i3GEOF.conectarwms.dicionario)+"\n"+retorno.data);
  91 + return;
  92 + }
  93 + var canais = retorno.data.canais;
  94 + var ncanais = canais.length;
  95 + var ins = "<br>"+retorno.data.rss;
  96 + for (var i=0;i<ncanais; i++)
  97 + {
  98 + var caso = canais[i];
  99 + ins += "\<p class=clique onclick=\"registraws('"+caso.link+"','"+caso.id_ws+"','"+caso.tipo_ws+"')\" \>\<b\>"+caso.title+"\<\/b\>&nbsp;"+caso.description+"&nbsp;("+caso.author+")";
  100 + if(caso.nacessos > 0)
  101 + {
  102 + var pc = (parseInt(caso.nacessosok) * 100) / parseInt(caso.nacessos);
  103 + ins += " \<span style=color:gray \>("+$trad('disponibilidade',i3GEOF.conectarwms.dicionario)+": "+pc+"%, "+$trad('acessos',i3GEOF.conectarwms.dicionario)+": "+caso.nacessos+")\<\/span>\<\/p\>";
  104 + }
  105 + }
  106 + document.getElementById(onde).innerHTML = ins+"<br><br>";
  107 + };
  108 + if (document.getElementById(onde))
  109 + {
  110 + if (g_RSS.length > 0)
  111 + {
  112 + var p = "../../classesphp/wscliente.php?funcao=listaRSSwsARRAY&rss="+g_RSS.join("|")+"&tipo=GEORSS";
  113 + var cp = new cpaint();
  114 + //cp.set_debug(2)
  115 + cp.set_response_type("JSON");
  116 + cp.call(p,"listaRSSwsARRAY",mostraRetornoRSS);
  117 + }
  118 + }
  119 +}
  120 +/*
  121 +Function: getcapabilities
  122 +
  123 +Abre uma nova janela com o resultado da chamada GETCAPABILITIES sobre o WMS escolhido
  124 +*/
  125 +function getcapabilities()
  126 +{
  127 + if ($i("servico").value == ""){i3GEO.janela.tempoMsg($trad('servico',i3GEOF.conectarwms.dicionario));}
  128 + else
  129 + {window.open($i("servico").value+"&service=wms&request=getcapabilities&version=1.1.1");}
  130 +}
  131 +/*
  132 +Function: clickGuia2
  133 +
  134 +Mostra as principais informa&ccedil;&otilde;es sobre o WMS escolhido tendo como fonte o getcapabilities
  135 +
  136 +Veja:
  137 +
  138 +<GETCAPABILITIES2>
  139 +*/
  140 +function clickGuia2()
  141 +{
  142 + //mostraGuia("guia2");
  143 + i3GEO.guias.mostraGuiaFerramenta("guia2");
  144 + if ($i("servico").value == ""){i3GEO.janela.tempoMsg($trad('servico',i3GEOF.conectarwms.dicionario));}
  145 + else
  146 + {
  147 + var metadados = function(retorno){
  148 + if (retorno.data != undefined)
  149 + {
  150 + aguarde("none");
  151 + $i("resultadoget").innerHTML = retorno.data;
  152 + }
  153 + else
  154 + {
  155 + aguarde("none");
  156 + $i("resultadoget").innerHTML = "<p style=color:red >"+$trad('erro',i3GEOF.conectarwms.dicionario)+"<br>";
  157 + }
  158 + };
  159 + $i("guia2obj").style.display="block";
  160 + aguarde("block");
  161 + var p = "../../classesphp/mapa_controle.php?g_sid="+g_sid+"&funcao=getcapabilities2&servico="+$i("servico").value;
  162 + var cp = new cpaint();
  163 + //cp.set_debug(2)
  164 + cp.set_response_type("JSON");
  165 + cp.call(p,"getcapabilities2",metadados);
  166 + }
  167 +}
  168 +/*
  169 +Function: clickGuia3
  170 +
  171 +Lista as camadas existentes no WMS escolhido.
  172 +
  173 +O resultado da chamada em PHP &eacute; uma string HTML j&aacute; formatada. O "radio" aponta para a fun&ccedil;&atilde;o "adiciona"
  174 +
  175 +Veja:
  176 +
  177 +<TEMASWMS>
  178 +*/
  179 +function clickGuia3(codLayer)
  180 +{
  181 + //mostraGuia("guia3");
  182 + i3GEO.guias.mostraGuiaFerramenta("guia3");
  183 + var listatemas = function(retorno){
  184 + g_idws = "";
  185 + aguarde("none");
  186 + if ((retorno.data != "erro") && (retorno.data != undefined)){
  187 + $i("listatemas").innerHTML = retorno.data;
  188 + g_tipo = ""; //tipo de tema
  189 + g_tema = ""; //tema selecionado do ws
  190 + g_legenda = ""; //legenda do tema
  191 + g_nometema = ""; //nome do tema
  192 + g_sld = "";
  193 + if ($i("suportasld")){
  194 + if ($i("suportasld").value != "nao") {
  195 + if ($i("textoSLD"))
  196 + $i("textoSLD").style.display = "block";
  197 + }
  198 + }
  199 + //ativa um layer caso tenha sido enviado como um parametro no inicio da ferramenta
  200 + ativaAutoLayer(codLayer);
  201 + }
  202 + else{
  203 + //$i("listatemas").innerHTML = "erro";
  204 + }
  205 + };
  206 + if ($i("servico").value == ""){
  207 + i3GEO.janela.tempoMsg($trad('servico',i3GEOF.conectarwms.dicionario));
  208 + }
  209 + else
  210 + {
  211 + $i("listatemas").innerHTML = "";
  212 + aguarde("block");
  213 + var p = "../../classesphp/mapa_controle.php?g_sid="+g_sid+"&funcao=temaswms&id_ws="+g_idws+"&servico="+$i("servico").value;
  214 + var cp = new cpaint();
  215 + //cp.set_debug(2)
  216 + cp.set_response_type("JSON");
  217 + cp.call(p,"temaswms",listatemas);
  218 + }
  219 +}
  220 +function ativaAutoLayer(codLayer){
  221 + if(codLayer && codLayer != ""){
  222 + var container, rs, nrs, i, r, codLayer1;
  223 + codLayer1 = codLayer.split(":");
  224 + if(codLayer1.length > 0){
  225 + codLayer1 = codLayer1[1];
  226 + }
  227 + else{
  228 + codLayer1 = codLayer1[0];
  229 + }
  230 + container = $i("listatemas");
  231 + if(container){
  232 + rs = container.getElementsByTagName("input");
  233 + nrs = rs.length;
  234 +
  235 + for(i = 0; i < nrs; i++){
  236 + r = rs[i];
  237 + if(r.type === "radio" && (r.value === codLayer || r.value === codLayer1)){
  238 + r.onclick.call();
  239 + r.checked = true;
  240 + r.previousElementSibling.previousElementSibling.previousElementSibling.previousElementSibling.previousElementSibling.previousElementSibling.scrollIntoView(true);
  241 + }
  242 + }
  243 + }
  244 + }
  245 +}
  246 +
  247 +/*
  248 +Function: registraws
  249 +
  250 +Armazena em vari&aacute;veis locais os parametros do WMS escolhido e ativa a guia 3, mostrando a lista de camadas dispon&iacute;veis
  251 +
  252 +Parametros:
  253 +
  254 +nome {string} - nome do WMS
  255 +
  256 +id_ws {String} - id do WMS
  257 +*/
  258 +function registraws(nome,id_ws,tipo)
  259 +{
  260 + $i("servico").value = nome;
  261 + g_tipo = ""; //tipo de tema
  262 + g_tipows = "WMS"; //tipo de servico
  263 + g_tema = ""; //tema selecionado do ws
  264 + g_legenda = ""; //legenda do tema
  265 + g_nometema = ""; //nome do tema
  266 + if(arguments.length == 2)
  267 + g_idws = id_ws;
  268 + else
  269 + g_idws = "";
  270 + if(tipo){
  271 + g_tipows = tipo;
  272 + }
  273 + clickGuia3();
  274 +}
  275 +/*
  276 +Function: seltema
  277 +
  278 +Inclui um LAYER, escolhido de um WMS, no mapa atual
  279 +
  280 +Veja:
  281 +
  282 +<ADICIONATEMAWMS>
  283 +
  284 +*/
  285 +function seltema(tipo,tema,legenda,nometema,nomecamada,sldflag)
  286 +{
  287 + g_tipo = tipo; //tipo de tema
  288 + g_tema = tema; //tema selecionado do ws
  289 + g_legenda = legenda; //legenda do tema
  290 + g_nometema = nometema; //nome do tema
  291 + g_nomecamada = nomecamada; //nome que vai na legenda
  292 + g_sld = sldflag; //suporta ou nao sld
  293 + if (g_tema != "")
  294 + {
  295 + var retorno = function(retorno)
  296 + {
  297 + aguarde("none");
  298 + if(retorno.data != "ok")
  299 + {i3GEO.janela.tempoMsg($trad('erro2',i3GEOF.conectarwms.dicionario));aguarde("none");}
  300 + else
  301 + {window.parent.i3GEO.atualiza();}
  302 + };
  303 + aguarde("block");
  304 + var tiporep = "";
  305 + if($i("tiporep")){
  306 + tiporep = $i("tiporep").value;
  307 + }
  308 + var url = "../../classesphp/mapa_controle.php?g_sid="+g_sid;
  309 + if($i("servico").value.split("?").length === 1){
  310 + $i("servico").value = $i("servico").value+"?";
  311 + }
  312 + if($i("proj").value === ""){
  313 + $i("proj").value = "EPSG:4326";
  314 + }
  315 + var p = "&funcao=adicionatemawms&servico="+$i("servico").value+"&tema="+g_tema+"&nome="+g_nometema+"&proj="+$i("proj").value+"&formato="+$i("formatos").value+"&tipo="+g_tipo+"&versao="+$i("versao").value+"&nomecamada="+g_nomecamada+"&tiporep="+tiporep+"&suportasld="+g_sld+"&formatosinfo="+$i("formatosinfo").value;
  316 + if(g_tipows == "WMS-Tile"){
  317 + p += "&tile=1";
  318 + }
  319 + else{
  320 + p += "&tile=0";
  321 + }
  322 + var cp = new cpaint();
  323 + cp.set_transfer_mode("POST");
  324 + //cp.set_debug(2)
  325 + cp.set_response_type("JSON");
  326 + cp.call(url,"adicionatemawms",retorno,p);
  327 + }
  328 +}
  329 +/*
  330 +Function abrejanelaIframe
  331 +
  332 +Abre uma janela flutuante contendo um iframe
  333 +
  334 +Parametros:
  335 +
  336 +w {string} - largura
  337 +
  338 +h {string} - altura
  339 +
  340 +s {string} - src do iframe
  341 +*/
  342 +function abrejanelaIframe(){
  343 + var s = "../../admin/html/webservices.html?tipo=wms";
  344 + var janelaeditor = i3GEO.janela.cria(
  345 + "1000",
  346 + "500",
  347 + s,
  348 + parseInt(Math.random()*100,10),
  349 + 10,
  350 + s,
  351 + "janela"+window.parent.i3GEO.util.randomRGB(),
  352 + false,
  353 + "hd",
  354 + "",
  355 + "",
  356 + "",
  357 + true,
  358 + window.parent.i3GEO.configura.locaplic+"/imagens/oxygen/16x16/application-x-smb-workgroup.png"
  359 + );
  360 + YAHOO.util.Event.addListener(janelaeditor[0].close, "click", iniciaListaWS,janelaeditor[0].panel,{id:janelaeditor[0].id},true);
  361 +}
0 \ No newline at end of file 362 \ No newline at end of file
ferramentas/conectarwmsxxx/listalayers.php 0 → 100755
@@ -0,0 +1,84 @@ @@ -0,0 +1,84 @@
  1 +<?php
  2 +/**
  3 + * Este programa e utilizado pela ferramenta buscainde
  4 + * E uma copia da ferramenta conctarwms sem mostrar as guias de esolha de servico
  5 + * Isso pq o endereco do servico e um parametro obtido em $_GET["servico"]
  6 + */
  7 +include (dirname(__FILE__)."/../../classesphp/sani_request.php");
  8 +include(dirname(__FILE__)."../../ms_configura.php");
  9 +include(dirname(__FILE__)."../blacklist.php");
  10 +verificaBlFerramentas(basename(dirname(__FILE__)),$i3geoBlFerramentas,true);
  11 +?>
  12 +<html>
  13 +
  14 +<head>
  15 +<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
  16 +<link rel="stylesheet" type="text/css" href="../../css/i3geo_ferramentas6.css">
  17 +<title></title>
  18 +<style type="text/css" >button{background:url(../../imagens/tic.png) 98% 50% no-repeat;}</style>
  19 +<link rel="stylesheet" type="text/css" href="../../pacotes/yui290/build/button/assets/skins/sam/button.css"/>
  20 +<style type="text/css">
  21 +body {
  22 + margin:0;
  23 + padding:0;border:0px;
  24 +}
  25 +p{
  26 + text-align: left;
  27 +}
  28 +.guiaobj {
  29 + background-color: white;
  30 + display: block;
  31 + height: 97%;
  32 + left: 0;
  33 + overflow: auto;
  34 + text-align: left;
  35 + top: 0;
  36 + width: 98%;
  37 +}
  38 +</style>
  39 +</head>
  40 +<body class="yui-skin-sam" style="background-color: white;">
  41 +
  42 + <div class=guiaobj id="guia3obj" style="left:0px;display:block;">
  43 + <div id=listatemas style="display:block;position:relative;top:10px;left:0px;">
  44 + Aguarde...
  45 + </div>
  46 + </div>
  47 +
  48 +<input type=hidden id=servico value="<?php echo $_GET["servico"];?>" />
  49 +
  50 +<script type="text/javascript" src="../../classesjs/i3geo.js"></script>
  51 +<script type="text/javascript" src="index.js"></script>
  52 +
  53 +<script type="text/javascript" >
  54 +//
  55 +//tenta pegar o codigo do layer do endereco do servico
  56 +//
  57 +var buscarEm = ["LAYER","LAYERS","layer","layers","tema","typename","typeName"],
  58 + n = buscarEm.length,
  59 + i,s,partes,
  60 + b = [],
  61 + codLayer = "",
  62 + u = window.location.href;
  63 +
  64 +//acrescenta novas strings
  65 +for(i = 0; i < n; i++){
  66 + b.push("&" + buscarEm[i] + "=");
  67 + b.push("?" + buscarEm[i] + "=");
  68 +}
  69 +n = b.length;
  70 +//quebra as strings pra achar o padrao
  71 +for(i = 0; i < n; i++){
  72 + s = b[i];
  73 + partes = u.split(s);
  74 + if(partes.length > 1){
  75 + partes = partes[1].split("&");
  76 + codLayer = partes[0];
  77 + }
  78 +}
  79 +g_locaplic = "../..";
  80 +//console.info(codLayer)
  81 +clickGuia3(codLayer);
  82 +</script>
  83 +</body>
  84 +</html>
ferramentas/editorgm/editorgm_compacto.js 100644 → 100755
ferramentas/editorol/editorol_compacto.js 100644 → 100755
js/compactados/ajuda_compacto.js 100644 → 100755
js/compactados/analise_compacto.js 100644 → 100755
js/compactados/arvoredecamadas_compacto.js 100644 → 100755
js/compactados/arvoredetemas_compacto.js 100644 → 100755
js/compactados/base64_compacto.js 100644 → 100755
js/compactados/busca_compacto.js 100644 → 100755
js/compactados/caixaDeFerramentas_compacto.js 100644 → 100755
js/compactados/calculo_compacto.js 100644 → 100755
js/compactados/catalogoDir_compacto.js 100644 → 100755
js/compactados/catalogoEstrelas_compacto.js 100644 → 100755
js/compactados/catalogoInde_compacto.js 100644 → 100755
js/compactados/catalogoMapas_compacto.js 100644 → 100755
js/compactados/catalogoMenus_compacto.js 100644 → 100755
js/compactados/catalogoMetaestat_compacto.js 100644 → 100755
js/compactados/catalogoOgc_compacto.js 100644 → 100755
js/compactados/catalogoRegioes_compacto.js 100644 → 100755
js/compactados/catalogoSistemas_compacto.js 100644 → 100755
js/compactados/configura_compacto.js 100644 → 100755
js/compactados/coordenadas_compacto.js 100644 → 100755
js/compactados/desenho_compacto.js 100644 → 100755
js/compactados/dicionario_ajuda_compacto.js 100644 → 100755
js/compactados/dicionario_compacto.js 100644 → 100755
js/compactados/editor_compacto.js 100644 → 100755
js/compactados/eventos_compacto.js 100644 → 100755
js/compactados/guias_compacto.js 100644 → 100755
js/compactados/idioma_compacto.js 100644 → 100755
js/compactados/ini_i3geo_compacto.js 100644 → 100755
js/compactados/interface_compacto.js 100644 → 100755
js/compactados/janela_compacto.js 100644 → 100755
js/compactados/legenda_compacto.js 100644 → 100755
js/compactados/login_compacto.js 100644 → 100755
js/compactados/mapa_compacto.js 100644 → 100755
js/compactados/maparef_compacto.js 100644 → 100755
js/compactados/marcador_compacto.js 100644 → 100755
js/compactados/mustache.js 100644 → 100755
js/compactados/navega_compacto.js 100644 → 100755
js/compactados/php_compacto.js 100644 → 100755
js/compactados/plugini3geo_compacto.js 100644 → 100755
js/compactados/proj4js.js 100644 → 100755
js/compactados/social_compacto.js 100644 → 100755
js/compactados/tema_compacto.js 100644 → 100755
js/compactados/util_compacto.js 100644 → 100755
js/compactados/wicket.js 100644 → 100755
js/i3geo_tudo_compacto7.js.php 100644 → 100755
pacotes/cpaint/cpaint2_compacto.inc.js 100644 → 100755
pacotes/mobileesp/mdetect_compacto.js 100644 → 100755
pacotes/yui290/build/carousel/carousel_compacto.js 100644 → 100755
pacotes/yui290/build/container/container_compacto.js 100644 → 100755
pacotes/yui290/build/container/container_core_compacto.js 100644 → 100755
pacotes/yui290/build/resize/resize_compacto.js 100644 → 100755
pacotes/yui290/build/treeview/treeview_compacto.js 100644 → 100755
pacotes/yui290/build/utilities/utilities_compacto.js 100644 → 100755