Commit 5dea5c643d74186cb13f532e23741800e208ec77

Authored by Edmar Moretti
1 parent 6278a4ea

Adaptação da ferramenta de geração WMS e WMC para bootstrap e correção de erros …

…na geração dos serviços. Uso da session php para obter o arquivo mapfile ao invés de parâmetro enviado via url
Showing 65 changed files with 1588 additions and 111 deletions   Show diff stats
admin/admin.db
No preview for this file type
classesphp/classe_mapa.php
... ... @@ -1684,7 +1684,7 @@ class Mapa
1684 1684 */
1685 1685 function converteWS($locaplic,$h)
1686 1686 {
1687   - $nomeurl = "/ogc.php?tema=".$this->arquivo;
  1687 + $nomeurl = "/ogc.php?sid=".$this->arquivo;
1688 1688 return($nomeurl);
1689 1689 }
1690 1690 /*
... ... @@ -1704,33 +1704,27 @@ class Mapa
1704 1704  
1705 1705 Endereço do WMC
1706 1706 */
1707   - function converteWMC($locmapserv,$h)
  1707 + function converteWMC($locmapserv,$urli3geo)
1708 1708 {
1709   - $protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']);
1710   - $protocolo = $protocolo[0];
1711   - $protocolo1 = strtolower($protocolo) . '://'.$_SERVER['SERVER_NAME'];
1712   - $protocolo = strtolower($protocolo) . '://'.$_SERVER['SERVER_NAME'] .":". $_SERVER['SERVER_PORT'];
1713   - $urli3geo = str_replace("/classesphp/mapa_controle.php","",$protocolo.$_SERVER["PHP_SELF"]);
  1709 + $r = nomeRandomico(5);
  1710 + $nomews = str_replace(".map",$r."wmc.map",$this->arquivo);
1714 1711  
1715   - $nomews = str_replace(".map","wmc.map",$this->arquivo);
1716 1712 $nomeurl = $locmapserv."?map=".$nomews;
1717 1713 $nomeogc = $urli3geo."/ogc.php?tema=".$nomews;
1718 1714 $w = $this->mapa->web;
1719 1715 $w->set("template","");
1720 1716 // adiciona os parametros no nivel do mapa
1721 1717 $this->mapa->setmetadata("wms_title","i3Geo");
1722   - $this->mapa->setmetadata("wms_onlineresource","http://".$h.$nomeurl);
  1718 + $this->mapa->setmetadata("wms_onlineresource","http://".$nomeurl);
1723 1719 $projecao = pegaProjecaoDefault("epsg");
1724 1720 $this->mapa->setmetadata("wms_srs","EPSG:".$projecao);
1725 1721 $this->mapa->setmetadata("wms_getcontext_enabled","1");
1726   - foreach ($this->layers as $layer)
1727   - {
  1722 + foreach ($this->layers as $layer){
1728 1723 if($layer->connectiontype != 7 && $layer->connectiontype != 9){
1729 1724 $n = pegaNome($layer);
1730 1725 $layer->setmetadata("wms_title",$n);
1731 1726 $codigo = $layer->getmetadata("nomeoriginal");
1732   - if($codigo == "")
1733   - {
  1727 + if($codigo == ""){
1734 1728 $codigo = $layer->name;
1735 1729 }
1736 1730 $layer->setmetadata("wms_server_version","1.0.0");
... ... @@ -1742,14 +1736,14 @@ class Mapa
1742 1736 $layer->setmetadata("wms_format","image/png");
1743 1737 $layer->setmetadata("wms_formatlist","image/gif,image/png,image/png; mode=24bit,image/jpeg,image/wbmp,image/tiff");
1744 1738 $layer->set("dump",MS_TRUE);
1745   - $layer->set("status","ON");
  1739 + $layer->set("status",MS_DEFAULT);
1746 1740 $layer->set("template","none.htm");
1747 1741 $c = $layer->getclass(0);
1748 1742 if ($c->name == "")
1749 1743 {
1750 1744 $c->name = " ";
1751 1745 }
1752   - if($layer->connectiontype != "WS_WMS" && $layer->getmetadata("permiteogc") == "" && $layer->getmetadata("TEMALOCAL") == ""){
  1746 + if($layer->connectiontype != "WS_WMS" && strtolower($layer->getmetadata("permiteogc")) != "nao" && $layer->getmetadata("TEMALOCAL") == ""){
1753 1747 if(ms_GetVersionInt() > 50201)
1754 1748 {
1755 1749 $layer->setconnectiontype(MS_WMS);
... ...
css/i3geo7.css.php 100644 → 100755
ferramentas/convertews/dependencias.php
... ... @@ -17,17 +17,6 @@ header("Content-type: text/javascript");
17 17 include("index.js");
18 18 include("dicionario.js");
19 19 echo "\n";
20   -/**
21   - * Inclui o template mustache do HTML usado para criar o conteudo da janela
22   - */
23   -echo 'i3GEOF.converteMapaWS.MUSTACHE = "';
24   -$texto = file_get_contents("template_mst.html");
25   -$texto = str_replace("\n", "", $texto);
26   -$texto = str_replace("\r", "", $texto);
27   -$texto = str_replace("\t", "", $texto);
28   -$texto = str_replace('"', "'", $texto);
29   -echo $texto;
30   -echo '";';
31 20 if(extension_loaded('zlib')){
32 21 ob_end_flush();
33 22 }
... ...
ferramentas/convertews/dicionario.js
1 1 //+$trad(1,i3GEOF.converteMapaWS.dicionario)+
2 2 i3GEOF.converteMapaWS.dicionario = {
3 3 'ajudaDesktop' : [ {
4   - pt : "Você pode utilizar o endereço em softwares de geoprocessamento instalados em seu computador, como por exemplo, o",
  4 + pt : "Você pode utilizar o endereço em softwares de geoprocessamento instalados em seu computador, como por exemplo, o gvSIG ou QGIS",
5 5 en : "",
6 6 es : "Usted puede utilizar la dirección en el software de geoprocesamiento instalado en su ordenador, como por ejemplo: el"
7 7 } ],
... ...
ferramentas/convertews/exec.php
... ... @@ -17,9 +17,13 @@ Converte o mapa atual em um wms e wmc.
17 17 case "CONVERTEWMSWMC":
18 18 include_once(dirname(__FILE__)."/../../classesphp/classe_mapa.php");
19 19 $m = new Mapa($map_file);
20   - if(!isset($_GET["h"])){$_GET["h"] = "";}
21   - $wms = $m->converteWS($locmapserv,$_GET["h"]);
22   - $wmc = $m->converteWMC($locmapserv,$_GET["h"]);
  20 + $wms = "/ferramentas/convertews/ogc.php?sid=".$g_sid;
  21 + $protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']);
  22 + $protocolo = $protocolo[0];
  23 + $protocolo1 = strtolower($protocolo) . '://'.$_SERVER['SERVER_NAME'];
  24 + $protocolo = strtolower($protocolo) . '://'.$_SERVER['SERVER_NAME'] .":". $_SERVER['SERVER_PORT'];
  25 + $urli3geo = str_replace("/ferramentas/convertews/exec.php","",$protocolo.$_SERVER["PHP_SELF"]);
  26 + $wmc = $m->converteWMC($locmapserv,$urli3geo);
23 27 $retorno = array("wms"=>$wms,"wmc"=>$wmc);
24 28 break;
25 29 }
... ...
ferramentas/convertews/index.js
... ... @@ -60,33 +60,16 @@ i3GEOF.converteMapaWS = {
60 60 /**
61 61 * Susbtitutos para o template
62 62 */
63   - mustacheHash : function() {
  63 + mustacheHash : function(enderecowms,enderecowmc) {
64 64 var dicionario = i3GEO.idioma.objetoIdioma(i3GEOF.converteMapaWS.dicionario);
65 65 dicionario["nomewms"] = enderecowms;
66 66 dicionario["nomewmc"] = enderecowmc;
67   - dicionario["divid"] = $i(divid).innerHTML;
  67 + dicionario["bbox"] = i3GEO.parametros.mapexten.split(" ").join(",");
  68 + dicionario["w"] = i3GEO.parametros.w;
  69 + dicionario["h"] = i3GEO.parametros.h;
68 70 return dicionario;
69 71 },
70 72 /*
71   - Function: iniciaDicionario
72   -
73   - Carrega o dicionário e chama a função que inicia a ferramenta
74   -
75   - O Javascript é carregado com o id i3GEOF.nomedaferramenta.dicionario_script
76   - */
77   - iniciaDicionario: function(){
78   - if(typeof(i3GEOF.converteMapaWS.dicionario) === 'undefined'){
79   - i3GEO.util.scriptTag(
80   - i3GEO.configura.locaplic+"/ferramentas/convertews/dicionario.js",
81   - "i3GEOF.converteMapaWS.iniciaJanelaFlutuante()",
82   - "i3GEOF.converteMapaWS.dicionario_script"
83   - );
84   - }
85   - else{
86   - i3GEOF.converteMapaWS.iniciaJanelaFlutuante();
87   - }
88   - },
89   - /*
90 73 Function: html
91 74  
92 75 Gera o código html para apresentação das opções da ferramenta
... ... @@ -96,19 +79,31 @@ i3GEOF.converteMapaWS = {
96 79 divid {String} - id do div que receberá o conteudo HTML da ferramenta
97 80  
98 81 */
99   - html:function(divid,enderecowms,enderecowmc){
100   - try{
101   - var ins = '<div style=margin-left:5px; ><p class="paragrafo" >'+$trad('ajudaDesktop',i3GEOF.converteMapaWS.dicionario)+' <a href="http://www.gvsig.gva.es/" target=blank > gvSig</a>' +
102   - '<p class="paragrafo" >' + $trad('ajudaWms',i3GEOF.converteMapaWS.dicionario) +
103   - '<p class="paragrafo" >' + $trad('ajudaWmc',i3GEOF.converteMapaWS.dicionario) + '<a href=\"'+enderecowmc+'\" target=_blank >'+$trad('wmc',i3GEOF.converteMapaWS.dicionario)+'</a>' +
104   - '<p class="paragrafo" ><b>WMS: </b></p>' +
105   - '<p class="paragrafo" > <textarea cols="55" rows="3" style=cursor:pointer onclick="javascript:this.select()">' +
106   - enderecowms + '</textarea></p>' +
107   - '<p class="paragrafo" >' +
108   - '<a href="' + enderecowms + '&request=getcapabilities&version=1.1.0&service=wms" target=blank >'+$trad('testa',i3GEOF.converteMapaWS.dicionario)+'<br></div>';
109   - $i(divid).innerHTML += ins;
110   - i3GEOF.converteMapaWS.aguarde.visibility = "hidden";
111   - }catch(e){i3GEO.janela.tempoMsg(e);i3GEOF.converteMapaWS.aguarde.visibility = "hidden";}
  82 + html:function(enderecowms,enderecowmc){
  83 + var ins = Mustache.render(i3GEOF.converteMapaWS.MUSTACHE, i3GEOF.converteMapaWS.mustacheHash(enderecowms,enderecowmc));
  84 + return ins;
  85 + },
  86 + inicia: function(divid){
  87 + if(i3GEOF.converteMapaWS.MUSTACHE == ""){
  88 + $.get(i3GEO.configura.locaplic + "/ferramentas/convertews/template_mst.html", function(template) {
  89 + i3GEOF.converteMapaWS.MUSTACHE = template;
  90 + i3GEOF.converteMapaWS.inicia(divid);
  91 + });
  92 + return;
  93 + }
  94 + var temp = function(retorno){
  95 + var enderecowms = $trad('erroWms',i3GEOF.converteMapaWS.dicionario),
  96 + enderecowmc = $trad('erroWms',i3GEOF.converteMapaWS.dicionario);
  97 + if (retorno.data != undefined){
  98 + enderecowms = i3GEO.configura.locaplic+retorno.data.wms+"&";
  99 + enderecowmc = window.location.protocol+"//"+window.location.host+retorno.data.wmc+"&";
  100 + }
  101 + $i(divid).innerHTML = i3GEOF.converteMapaWS.html(enderecowms,enderecowmc);
  102 + };
  103 + var p = i3GEO.configura.locaplic+"/ferramentas/convertews/exec.php?g_sid="+i3GEO.configura.sid+"&funcao=convertewmswmc";
  104 + var cp = new cpaint();
  105 + cp.set_response_type("JSON");
  106 + cp.call(p,"converteWMSWMC",temp);
112 107 },
113 108 /*
114 109 Function: iniciaJanelaFlutuante
... ... @@ -131,7 +126,7 @@ i3GEOF.converteMapaWS = {
131 126 titulo = "<span class='i3GeoTituloJanelaBsNolink' >WMS</span></div>";
132 127 janela = i3GEO.janela.cria(
133 128 "440px",
134   - "290px",
  129 + "310px",
135 130 "",
136 131 "",
137 132 "",
... ... @@ -150,20 +145,6 @@ i3GEOF.converteMapaWS = {
150 145 "12"
151 146 );
152 147 divid = janela[2].id;
153   - i3GEOF.converteMapaWS.aguarde = $i("i3GEOF.converteMapaWS_imagemCabecalho").style;
154   - i3GEOF.converteMapaWS.aguarde.visibility = "visible";
155   - temp = function(retorno){
156   - var enderecowms = $trad('erroWms',i3GEOF.converteMapaWS.dicionario),
157   - enderecowmc = $trad('erroWms',i3GEOF.converteMapaWS.dicionario);
158   - if (retorno.data != undefined){
159   - enderecowms = i3GEO.configura.locaplic+retorno.data.wms+"&";
160   - enderecowmc = window.location.protocol+"//"+window.location.host+retorno.data.wmc+"&";
161   - }
162   - i3GEOF.converteMapaWS.html(divid,enderecowms,enderecowmc);
163   - };
164   - p = i3GEO.configura.locaplic+"/ferramentas/convertews/exec.php?g_sid="+i3GEO.configura.sid+"&funcao=convertewmswmc&h="+window.location.host;
165   - cp = new cpaint();
166   - cp.set_response_type("JSON");
167   - cp.call(p,"converteWMSWMC",temp);
  148 + i3GEOF.converteMapaWS.inicia(divid);
168 149 }
169 150 };
170 151 \ No newline at end of file
... ...
ferramentas/convertews/ogc.php 0 → 100755
... ... @@ -0,0 +1,1527 @@
  1 +<?php
  2 +include(dirname(__FILE__)."/../../classesphp/sani_request.php");
  3 +include_once (dirname(__FILE__)."/../../classesphp/carrega_ext.php");
  4 +include(dirname(__FILE__)."/../../ms_configura.php");
  5 +$_GET = array_merge($_GET,$_POST);
  6 +
  7 +session_name("i3GeoPHP");
  8 +session_id($_GET["sid"]);
  9 +session_start();
  10 +$_GET["tema"] = $_SESSION["map_file"];
  11 +
  12 +if(isset($_GET["BBOX"])){
  13 + $_GET["BBOX"] = str_replace(" ",",",$_GET["BBOX"]);
  14 +}
  15 +
  16 +if(isset($_GET["tema"])){
  17 + $tema = $_GET["tema"];
  18 +}
  19 +if(isset($_GET["TileMatrix"])){
  20 + $_GET["WIDTH"] = 256;
  21 + $_GET["HEIGHT"] = 256;
  22 + //calcula resolucoes
  23 + $res = array();
  24 + $temp = 0.703125;
  25 + for($i = 0; $i < 40; $i++){
  26 + $res[] = $temp;
  27 + $temp = $temp / 2;
  28 + }
  29 + $_GET["tms"] = "/wmts/".$tema."/".$_GET["TileMatrix"]."/".$_GET["TileCol"]."/".$_GET["TileRow"];
  30 + $_GET["tms"] = str_replace(".png","",$_GET["tms"]).".png";
  31 +
  32 + if($_GET["TileMatrix"]."/".$_GET["TileCol"]."/".$_GET["TileRow"] == "0/0/0" || $_GET["TileCol"] == -1 || $_GET["TileRow"]== -1){
  33 + return;
  34 + }
  35 + $_GET["BBOX"] = $lon1.",".$lat1.",".$lon2.",".$lat2;
  36 + $_GET["SERVICE"] = "WMS";
  37 + $_GET["REQUEST"] = "getMap";
  38 +
  39 +}
  40 +set_time_limit(0);
  41 +ini_set('memory_limit', '512M');
  42 +//
  43 +//caso nenhum parametros tenha sido enviado
  44 +//
  45 +if(count($_GET) == 0){
  46 + $tipo="metadados";
  47 + $_GET["REQUEST"] = "getCapabilities";
  48 + $_GET["request"] = "getCapabilities";
  49 + $_GET["SERVICE"] = "WMS";
  50 +}
  51 +//
  52 +//compatibiliza chamadas fora do padrao
  53 +//
  54 +if(isset($_GET["outputFormat"]) && $_GET["outputFormat"] != ""){
  55 + $_GET["OUTPUTFORMAT"] = $_GET["outputFormat"];
  56 +}
  57 +if(isset($_GET["outputformat"]) && $_GET["outputformat"] != ""){
  58 + $_GET["OUTPUTFORMAT"] = $_GET["outputformat"];
  59 +}
  60 +$cache = true;
  61 +
  62 +include(dirname(__FILE__)."/../../classesphp/funcoes_gerais.php");
  63 +
  64 +if(isset($logExec) && $logExec["ogc"] == true){
  65 + i3GeoLog("prog: ogc url: ".implode("&",array_merge($_GET,$_POST)),$_SESSION["dir_tmp"]);
  66 +}
  67 +//
  68 +//ajusta o default
  69 +//
  70 +if(!isset($_GET["ows_geomtype"]) || $_GET["ows_geomtype"] == ""){
  71 + $ows_geomtype = "none";
  72 +}
  73 +else{
  74 + $ows_geomtype = $_GET["ows_geomtype"];
  75 +}
  76 +
  77 +//
  78 +//imprime na tela a ajuda
  79 +//
  80 +if(isset($_GET["ajuda"])){
  81 + ogc_imprimeAjuda();
  82 + exit;
  83 +}
  84 +//
  85 +//pega os enderecos para compor a url de chamada do gerador de web services
  86 +//
  87 +$protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']);
  88 +$protocolo = $protocolo[0];
  89 +$protocolo1 = strtolower($protocolo) . '://'.$_SERVER['SERVER_NAME'];
  90 +$protocolo = strtolower($protocolo) . '://'.$_SERVER['SERVER_NAME'] .":". $_SERVER['SERVER_PORT'];
  91 +$urli3geo = str_replace("/ogc.php","",$protocolo.$_SERVER["PHP_SELF"]);
  92 +
  93 +//ajusta o OUTPUTFORMAT
  94 +$OUTPUTFORMAT = $_GET["OUTPUTFORMAT"];
  95 +if(strpos(strtolower($OUTPUTFORMAT),"kml") !== false){
  96 + $OUTPUTFORMAT = "kml";
  97 +}
  98 +if(strpos(strtolower($OUTPUTFORMAT),"kmz") !== false){
  99 + $OUTPUTFORMAT = "kmz";
  100 +}
  101 +//
  102 +//para o caso da requisicao kmz
  103 +//kmz nao funciona diretamente com mapserver
  104 +//
  105 +if(strtolower($OUTPUTFORMAT) == "kmz"){
  106 + $urln = "../../pacotes/kmlmapserver/kmlservice.php?request=kmz&map=".$tema."&typename=".$tema;
  107 + header("Location:".$urln);
  108 + exit;
  109 +}
  110 +if(strtolower($OUTPUTFORMAT) == "kml" && $ogrOutput == false){
  111 + $urln = "../../pacotes/kmlmapserver/kmlservice.php?request=kmz&map=".$tema."&typename=".$tema;
  112 + header("Location:".$urln);
  113 + exit;
  114 +}
  115 +if(strtolower($OUTPUTFORMAT) == "shape-zip" && $ogrOutput == false){
  116 + $retorno = downloadTema2("",$tema,$locaplic,$dir_tmp,$postgis_mapa);
  117 + $zip = $retorno["shape-zip"];
  118 + if(file_exists($zip)){
  119 + ob_end_clean();
  120 + header('Content-type: application/zip');
  121 + header('Content-Disposition: attachment; filename='.basename($zip));
  122 + readfile($zip);
  123 + }
  124 + exit;
  125 +}
  126 +//
  127 +//caso seja uma requisição WMS com format
  128 +//
  129 +$format = $_GET["format"];
  130 +if(strpos(strtolower($format),"kml") !== false){
  131 + $urln = "../..pacotes/kmlmapserver/kmlservice.php?request=kml&map=".$tema."&typename=".$tema;
  132 + header("Location:".$urln);
  133 + exit;
  134 +}
  135 +if(strpos(strtolower($format),"kmz") !== false){
  136 + $urln = "../../pacotes/kmlmapserver/kmlservice.php?request=kml&map=".$tema."&typename=".$tema;
  137 + header("Location:".$urln);
  138 + exit;
  139 +}
  140 +//
  141 +//usa o epsg correto ao inves do apelido inventado pelo Google
  142 +//
  143 +if($_GET["SRS"] == "EPSG:900913" || $_GET["srs"] == "EPSG:900913"){
  144 + $_GET["SRS"] = "EPSG:3857";
  145 + $_GET["srs"] = "EPSG:3857";
  146 +}
  147 +if(!isset($_GET["srs"]) && !isset($_GET["SRS"])){
  148 + $_GET["srs"] = "EPSG:4326";
  149 + $_GET["SRS"] = "EPSG:4326";
  150 +}
  151 +
  152 +//
  153 +//trata geojson da mesma forma que json
  154 +//
  155 +if(strtolower($OUTPUTFORMAT) == "geojson"){
  156 + $OUTPUTFORMAT = "json";
  157 +}
  158 +//
  159 +//para operar como o Geoserver, abre o openlayers
  160 +//
  161 +if(isset($format) && strtolower($format) == "application/openlayers"){
  162 + $urln = dirname($_SERVER["PHP_SELF"])."/mashups/openlayers.php?layers=".$layers."&mapext=".$bbox."&botoes=pan,zoombox,zoomtot,identifica,legenda";
  163 + //caso exista o openlayers3
  164 + if(file_exists(dirname(__FILE__)."/mashups/openlayers3.php")){
  165 + $urln = dirname($_SERVER["PHP_SELF"])."/mashups/openlayers3.php?layers=".$layers."&mapext=".$bbox."&botoes=pan,zoombox,zoomtot,identifica,legenda";
  166 + }
  167 + if(!headers_sent()){
  168 + header("Location:".$urln);
  169 + }
  170 + else{
  171 + echo "<meta http-equiv='refresh' content='0;url=$urln'>";
  172 + }
  173 +}
  174 +//
  175 +//pega a versao do Mapserver
  176 +//
  177 +//error_reporting(0);
  178 +$versao = versao();
  179 +$versao = $versao["principal"];
  180 +
  181 +$req = ms_newowsrequestobj();
  182 +$tipo = "";
  183 +
  184 +$cache = false;
  185 +
  186 +//
  187 +//inclui todos os parametros na requisicao e aproveita para verificar getcapabilities
  188 +//
  189 +
  190 +$oMap = ms_newMapobj($tema);
  191 +$c = $oMap->numlayers;
  192 +$ls = array();
  193 +for ($i=0;$i < $c;++$i){
  194 + $l = $oMap->getlayer($i);
  195 + if($l->status == MS_DEFAULT){
  196 + $ls[] = $l->name;
  197 + }
  198 +}
  199 +$_GET["LAYERS"] = implode(",",$ls);
  200 +
  201 +foreach ($_GET as $k=>$v){
  202 + $req->setParameter(strtoupper($k), $v);
  203 + if(strtolower($v) == "getcapabilities"){
  204 + $tipo = "metadados";
  205 + $cache = false;
  206 + }
  207 +}
  208 +//
  209 +//cria uma lista de epsgs para o getcapabilities
  210 +//
  211 +$req->setParameter("srsName",$req->getValueByName("SRS"));
  212 +$listaepsg = $req->getValueByName("SRS")." EPSG:4618 EPSG:4291 EPSG:4326 EPSG:22521 EPSG:22522 EPSG:22523 EPSG:22524 EPSG:22525 EPSG:29101 EPSG:29119 EPSG:29120 EPSG:29121 EPSG:29122 EPSG:29177 EPSG:29178 EPSG:29179 EPSG:29180 EPSG:29181 EPSG:29182 EPSG:29183 EPSG:29184 EPSG:29185";
  213 +$VERSION = $_GET["VERSION"];
  214 +if(isset($_GET["version"]) && !isset($_GET["VERSION"])){
  215 + $VERSION = $_GET["version"];
  216 +}
  217 +if(!isset($VERSION) || $VERSION == ""){
  218 + $req->setParameter("VeRsIoN","1.1.1");
  219 +}
  220 +
  221 +//
  222 +//nome do mapfile que ficara em cache
  223 +//
  224 +
  225 +$agora = intval(time() / 1000);
  226 +//acrescenta ao nome a indicacao do tipo de TMS
  227 +if(isset($_GET["tms"])){
  228 + $agora .= "tms";
  229 +}
  230 +if(isset($_GET["Z"]) && isset($_GET["X"])){
  231 + $agora .= "google";
  232 +}
  233 +//
  234 +//se o outputformat for definido, evita o cahce de arquivo
  235 +//o mesmo se existir filtro para o layer
  236 +//
  237 +if(isset($_GET["OUTPUTFORMAT"]) || !empty($_GET["map_layer_".$tema."_filter"])){
  238 + $_GET["DESLIGACACHE"] = "sim";
  239 +}
  240 +if(isset($_GET["DESLIGACACHE"]) && $_GET["DESLIGACACHE"] == "sim"){
  241 + $agora = time();
  242 + $cache = false;
  243 +}
  244 +//remove o bbox do calculo do nome do mapfile
  245 +$arrayget = $_GET;
  246 +$arrayget["bbox"] = "";
  247 +$arrayget["BBOX"] = "";
  248 +$arrayget["Z"] = "";
  249 +$arrayget["X"] = "";
  250 +$arrayget["Y"] = "";
  251 +$arrayget["tms"] = "";
  252 +$arrayget["TileMatrix"] = "";
  253 +$arrayget["TileCol"] = "";
  254 +$arrayget["TileRow"] = "";
  255 +
  256 +$nomeMapfileTmp = $dir_tmp."/ogc_".md5(implode("",$arrayget))."_".$agora.".map";
  257 +
  258 +//essa variavel e usada para definir se a imagem final gerada devera ser cortada ou nao
  259 +$cortePixels = 0;
  260 +if(empty($ogcwsmap)){
  261 + $ogcwsmap = $_GET["ogcwsmap"];
  262 +}
  263 +$oMap = ms_newMapobj($_SESSION["map_file"]);
  264 +substituiConObj($oMap,$postgis_mapa);
  265 +
  266 + $proto = "http" . ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "s" : "") . "://";
  267 + $server = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME'];
  268 + $or = $urli3geo."/ogc.php";
  269 + if((isset($tema)) && ($tema != "") && ($tipo=="metadados")){
  270 + $or = $or."?tema=".$tema."&";
  271 + }
  272 + //
  273 + //parametros no n&iacute;vel maior
  274 + //
  275 + $oMap->setmetadata("ows_onlineresource",$or);
  276 + $oMap->setmetadata("wms_onlineresource",$or);
  277 + $oMap->setmetadata("wms_title",$tituloInstituicao." - i3geo");
  278 + $oMap->setmetadata("wfs_title",$tituloInstituicao." - i3geo");
  279 + $oMap->setmetadata("wms_attribution_logourl_format","image/png");
  280 + $oMap->setmetadata("wms_attribution_logourl_height","56");
  281 + $oMap->setmetadata("wms_attribution_logourl_width","85");
  282 + $oMap->setmetadata("wms_attribution_logourl_href",$urli3geo."/imagens/i3geo.png");
  283 + $oMap->setmetadata("wms_attribution_onlineresource",$urli3geo);
  284 + $oMap->setmetadata("wms_attribution_title",$tituloInstituicao);
  285 + $oMap->setmetadata("ows_enable_request","*");
  286 + //parametro mandatario
  287 + if($oMap->getmetadata("wms_srs") == ""){
  288 + $projecao = pegaProjecaoDefault("epsg");
  289 + $oMap->setmetadata("wms_srs","EPSG:".$projecao);
  290 + }
  291 + $e = $oMap->extent;
  292 + $extensaoMap = ($e->minx)." ".($e->miny)." ".($e->maxx)." ".($e->maxy);
  293 + //gera o mapa
  294 + if ($tema != ""){
  295 + $listatema = explode(" ",str_replace(","," ",$tema));
  296 + //para o caso do tema ser um arquivo mapfile existente em uma pasta qualquer
  297 + //$temai3geo = true indica que o layer ser&aacute; buscado na pasta i3geo/temas
  298 + $temai3geo = true;
  299 + if(file_exists($_GET["tema"]) && !isset($_GET["id_medida_variavel"])){
  300 + $nmap = ms_newMapobj($_GET["tema"]);
  301 + $temai3geo = false;
  302 + $nmap->setmetadata("ows_enable_request","*");
  303 + }
  304 + //inclui o layer com a grade de coordenadas
  305 + if((isset($_GET["grade"])) && (strtolower($_GET["grade"]) == "sim") && file_exists($locaplic."/temas/gridg.map")){
  306 + $listatema[] = "gridg";
  307 + }
  308 + foreach ($listatema as $tx){
  309 + $extensao = ".map";
  310 + if($temai3geo == true && file_exists($locaplic."/temas/".$tx.".php")){
  311 + //$extensao = ".php";
  312 + }
  313 + if($temai3geo == true && file_exists($locaplic."/temas/".$tx.".gvp")){
  314 + $extensao = ".gvp";
  315 + }
  316 + if($extensao == ".map"){
  317 + //cria o mapfile com base no sistema de metadados estatisticos
  318 + //verifica se o id_medida_variavel existe no mapfile e nao foi passado como um parametro
  319 + if(!isset($_GET["id_medida_variavel"]) && $temai3geo == true){
  320 + $nmap = ms_newMapobj($locaplic."/temas/".$tx.".map");
  321 + $l = $nmap->getlayer(0);
  322 + $teste = $l->getmetadata("METAESTAT_ID_MEDIDA_VARIAVEL");
  323 + if($teste != "" && $l->data == ""){
  324 + $_GET["id_medida_variavel"] = $teste;
  325 + }
  326 + }
  327 +
  328 + if($temai3geo == true){
  329 + $nmap = ms_newMapobj($locaplic."/temas/".$tx.".map");
  330 + $nmap->setmetadata("ows_enable_request","*");
  331 + }
  332 + if($temai3geo == false || empty($layers)){
  333 + $ts = $nmap->getalllayernames();
  334 + $nmap->setmetadata("ows_enable_request","*");
  335 + }
  336 + else{
  337 + $ts = explode(",",str_replace(" ",",",$layers));
  338 + }
  339 + foreach ($ts as $t){
  340 + $l = $nmap->getlayerbyname($t);
  341 + if($l == ""){
  342 + $l = $nmap->getlayer(0);
  343 + }
  344 + //verifica se ja existe layer com mesmo nome
  345 + if($oMap->getlayerbyname($l->name) == ""){
  346 + $permite = $l->getmetadata("permiteogc");
  347 + if(strtolower($permite) != "nao"){
  348 + //necess&aacute;rio pq o mapfile pode ter todos os layers como default
  349 + if($temai3geo == false){
  350 + $l->set("status",MS_OFF);
  351 + }
  352 + else{
  353 + $l->set("status",MS_DEFAULT);
  354 + }
  355 + $l->setmetadata("ows_title",pegaNome($l));
  356 + $l->setmetadata("ows_srs",$listaepsg);
  357 + $l->set("group","");
  358 + //timeout
  359 + $tout = $l->getmetadata("wms_connectiontimeout");
  360 + if($tout == ""){
  361 + $l->setmetadata("wms_connectiontimeout",0);
  362 + }
  363 + //essa linha &eacute; necess&aacute;ria pq as vezes no mapfile n&atilde;o tem nenhum layer com o nome igual ao nome do mapfile
  364 + if(count($ts)==1 && $temai3geo == true){
  365 + $l->set("name",$tx);
  366 + }
  367 + $l->setmetadata("gml_include_items","all");
  368 + $l->set("template","none.htm");
  369 + $l->set("dump",MS_TRUE);
  370 + $l->setmetadata("WMS_INCLUDE_ITEMS","all");
  371 + $l->setmetadata("WFS_INCLUDE_ITEMS","all");
  372 +
  373 + if(file_exists($locaplic."/temas/miniaturas/".$t.".map.mini.png")){
  374 + $mini = $proto.$server.dirname($_SERVER['PHP_SELF'])."/temas/miniaturas/".$t.".map.mini.png";
  375 + $l->setmetadata("wms_attribution_logourl_format","image/png");
  376 + $l->setmetadata("wms_attribution_logourl_height","50");
  377 + $l->setmetadata("wms_attribution_logourl_width","50");
  378 + $l->setmetadata("wms_attribution_logourl_href",$mini);
  379 + }
  380 + if($l->type == MS_LAYER_RASTER && $l->numclasses > 0){
  381 + $c = $l->getclass(0);
  382 + if($c->name == ""){
  383 + $c->name = " ";
  384 + }
  385 + }
  386 + //inclui extensao geografica
  387 + $extensao = $l->getmetadata("EXTENSAO");
  388 + if($extensao == ""){
  389 + $extensao = $extensaoMap;
  390 + }
  391 + $l->setmetadata("wms_extent",$extensao);
  392 + if (!empty($postgis_mapa)){
  393 + if ($l->connectiontype == MS_POSTGIS){
  394 +
  395 + $lcon = $l->connection;
  396 + if (($lcon == " ") || ($lcon == "") || (in_array($lcon,array_keys($postgis_mapa)))){
  397 + //
  398 + //o metadata CONEXAOORIGINAL guarda o valor original para posterior substitui&ccedil;&atilde;o
  399 + //
  400 + if(($lcon == " ") || ($lcon == "")){
  401 + $l->set("connection",$postgis_mapa);
  402 + $l->setmetadata("CONEXAOORIGINAL",$lcon);
  403 + }
  404 + else{
  405 + $l->set("connection",$postgis_mapa[$lcon]);
  406 + $l->setmetadata("CONEXAOORIGINAL",$lcon);
  407 + }
  408 + }
  409 + }
  410 + }
  411 +
  412 + autoClasses($l,$oMap);
  413 +
  414 + if($versao > 5){
  415 + $pr = $l->getProcessing();
  416 + if(!in_array("LABEL_NO_CLIP=True",$pr)){
  417 + $l->setprocessing("LABEL_NO_CLIP=True");
  418 + }
  419 + if(!in_array("POLYLINE_NO_CLIP=True",$pr)){
  420 + $l->setprocessing("POLYLINE_NO_CLIP=True");
  421 + }
  422 + }
  423 +
  424 + //
  425 + //verifica se existem parametros de substituicao passados via url
  426 + //
  427 + $parametro = $_GET["map_layer_".$l->name."_filter"];
  428 + //echo $parametro;exit;
  429 + if(!empty($parametro)){
  430 + $l->setfilter($parametro);
  431 + $cache = false;
  432 + }
  433 + //muda o title se for vazio
  434 + $nclass = $l->numclasses;
  435 + for($i=0;$i<$nclass;$i++){
  436 + $classe = $l->getclass($i);
  437 + if($classe->title == ""){
  438 + $classe->title = $classe->name;
  439 + }
  440 + }
  441 + if($nclass == 1){
  442 + $classe = $l->getclass(0);
  443 + if($classe->name == ""){
  444 + $classe->title = $l->getmetadata("tema");
  445 + $classe->set("name",$l->getmetadata("tema"));
  446 + }
  447 + }
  448 + $layerAdicionado = ms_newLayerObj($oMap, $l);
  449 + corrigeLayerGrid($l,$layerAdicionado);
  450 + corrigeLayerGrid ( $layerAdicionado,$oMap );
  451 + }
  452 + else{
  453 + //a camada nao pode ser usada como servico WMS, entao e enviada uma mensagem
  454 + $l->set("data","");
  455 + $l->set("type",MS_POINT);
  456 + $l->setmetadata("cache","nao");
  457 + //apaga as classes
  458 + $nclass = $l->numclasses;
  459 + for($i=0;$i<$nclass;$i++){
  460 + $classe = $l->getclass($i);
  461 + $classe->set("status",MS_DELETE);
  462 + }
  463 + $l->updatefromstring('
  464 + LAYER
  465 + SIZEUNITS PIXELS
  466 + TRANSFORM FALSE
  467 + CLASS
  468 + LABEL
  469 + SIZE 10
  470 + TYPE truetype
  471 + FONT arial
  472 + COLOR 255 0 0
  473 + POSITION cc
  474 + FORCE true
  475 + END
  476 + END
  477 + FEATURE POINTS 100 100 END
  478 + TEXT "OGC denied" END
  479 + FEATURE POINTS 100 120 END
  480 + TEXT "' . $l->name . '" END
  481 + END
  482 + ');
  483 + ms_newLayerObj($oMap, $l);
  484 + }
  485 + }
  486 + }
  487 + }
  488 +
  489 + }
  490 + }
  491 + else{
  492 + $intervalo = "0,5000";
  493 + $conta = 0;
  494 + $int = explode(",",$intervalo);
  495 + $codigosTema = array();
  496 + if(empty($_GET["perfil"])){
  497 + $perfil = "";
  498 + }
  499 + include("../../classesphp/classe_menutemas.php");
  500 + $m = new Menutemas("",$perfil,$locaplic,$urli3geo);
  501 + $menus = $m->pegaListaDeMenus();
  502 + foreach ($menus as $menu){
  503 + $grupos = $m->pegaListaDeGrupos($menu["idmenu"],$listasistemas="nao",$listasgrupos="sim");
  504 + //temas na raiz do menu
  505 + $lts = $menu["temas"];
  506 + //var_dump($lts);exit;
  507 + foreach($lts as $t){
  508 + if(strtolower($t["ogc_tema"]) != "nao"){
  509 + $codigosTema[$t["codigo_tema"]] = array("tema"=>$t["codigo_tema"],"fonte"=>$t["link_tema"]);
  510 + }
  511 + }
  512 + foreach($grupos as $grupo){
  513 + $lts = $grupo["temasgrupo"];
  514 + //var_dump($lts);
  515 + foreach($lts as $t){
  516 + if(strtolower($t["ogc"]) != "nao"){
  517 + $codigosTema[$t["tid"]] = array("tema"=>$t["tid"],"fonte"=>$t["link"]);
  518 + }
  519 + }
  520 + if(strtolower($grupo["ogc"]) == "sim"){
  521 + foreach($grupo["subgrupos"] as $sgrupo){
  522 + if(strtolower($sgrupo["ogc"]) == "sim"){
  523 + $lts = $m->pegaListaDeTemas($grupo["id_n1"],$sgrupo["id_n2"],$menu["idmenu"]);
  524 + foreach($lts as $t){
  525 + if(strtolower($t["ogc"]) == "sim"){
  526 + $codigosTema[$t["tid"]] = array("tema"=>$t["tid"],"fonte"=>$t["link"]);
  527 + }
  528 + }
  529 + }
  530 + }
  531 + }
  532 + }
  533 + }
  534 + //echo "<pre>".var_dump($codigosTema);exit;
  535 + foreach($codigosTema as $c){
  536 + $codigoTema = $c["tema"];
  537 + if(file_exists($locaplic."/temas/".$codigoTema.".map")){
  538 + if (@ms_newMapobj($locaplic."/temas/".$codigoTema.".map")){
  539 + $nmap = ms_newMapobj($locaplic."/temas/".$codigoTema.".map");
  540 + $nmap->setmetadata("ows_enable_request","*");
  541 + $ts = $nmap->getalllayernames();
  542 + foreach ($ts as $t){
  543 + if ($oMap->getlayerbyname($t) == ""){
  544 + $l = $nmap->getlayerbyname($t);
  545 + $extensao = $l->getmetadata("EXTENSAO");
  546 + if($extensao == ""){
  547 + $extensao = $extensaoMap;
  548 + }
  549 + $l->setmetadata("wms_extent",$extensao);
  550 + $l->setmetadata("ows_title",pegaNome($l));
  551 + $l->setmetadata("ows_srs",$listaepsg);
  552 + $l->set("status",MS_OFF);
  553 + $l->setmetadata("gml_include_items","all");
  554 + $l->set("dump",MS_TRUE);
  555 + $l->setmetadata("WMS_INCLUDE_ITEMS","all");
  556 + $l->setmetadata("WFS_INCLUDE_ITEMS","all");
  557 + if($l->getmetadata("ows_metadataurl_href") == ""){
  558 + $l->setmetadata("ows_metadataurl_href",$c["fonte"]);
  559 + $l->setmetadata("ows_metadataurl_type","TC211");
  560 + $l->setmetadata("ows_metadataurl_format","text/html");
  561 + }
  562 + if(file_exists($locaplic."/temas/miniaturas/".$t.".map.mini.png")){
  563 + $mini = $proto.$server.dirname($_SERVER['PHP_SELF'])."/temas/miniaturas/".$t.".map.mini.png";
  564 + $l->setmetadata("wms_attribution_logourl_format","image/png");
  565 + $l->setmetadata("wms_attribution_logourl_height","50");
  566 + $l->setmetadata("wms_attribution_logourl_width","50");
  567 + $l->setmetadata("wms_attribution_logourl_href",$mini);
  568 + }
  569 + //
  570 + //numero de pixels que serao considerados para corte da imagem no caso de cache ativo e tema de pontos
  571 + //
  572 + if ($l->getmetadata("cortepixels") != ""){
  573 + $cortePixels = $l->getmetadata("cortepixels");
  574 + }
  575 + cloneInlineSymbol($l,$nmap,$oMap);
  576 + ms_newLayerObj($oMap, $l);
  577 + }
  578 + }
  579 + }
  580 + else{
  581 + echo "Erro no arquivo ".$locaplic."/temas/".$codigoTema.".map <br>";
  582 + $error = ms_GetErrorObj();
  583 + while($error && $error->code != MS_NOERR){
  584 + //printf("<br>Error in %s: %s<br>\n", $error->routine, $error->message);
  585 + //$error = $error->next();
  586 + }
  587 + }
  588 + }
  589 + }
  590 + }
  591 + //
  592 + //a imagem do mapa recebera a legenda
  593 + //
  594 + if((isset($_GET["legenda"])) && (strtolower($_GET["legenda"]) == "sim")){
  595 + processaLegenda();
  596 + }
  597 + //
  598 + //a imagem do mapa recebera a barra de escala
  599 + //
  600 + if((isset($_GET["escala"])) && (strtolower($_GET["escala"]) == "sim")){
  601 + processaEscala();
  602 + }
  603 + //
  604 + //aplica os parametros sobre a grade de coordenadas
  605 + //
  606 + if((isset($_GET["grade"])) && (strtolower($_GET["grade"]) == "sim")){
  607 + processaGrade();
  608 + }
  609 + $oMap->setSymbolSet($locaplic."/symbols/".basename($oMap->symbolsetfilename));
  610 + $oMap->setFontSet($locaplic."/symbols/".basename($oMap->fontsetfilename));
  611 + //verifica se existem layers com plugin definido e processa conforme o tipo de plugin
  612 + processaPluginI3geo();
  613 + //
  614 + //caso seja download ou json ou csv
  615 + //
  616 + processaOutputformatMapfile();
  617 +if(ob_get_contents ()){
  618 + ob_end_clean();
  619 +}
  620 +//
  621 +//verifica se a requisicao e do tipo TMS.
  622 +//
  623 +//
  624 +//calcula a extensao geografica com base no x,y,z em requisisoes TMS
  625 +//quando for do tipo tms $_GET["tms"] contem os parametros do tile
  626 +//essa rotina faz um exit ao final
  627 +//o cache tms so fucniona se houver apenas uma camada no mapa
  628 +//tms e usado basicamente por mashup ou openlayers
  629 +//
  630 +if(isset($_GET["tms"])){
  631 + if(!isset($_GET["TileMatrix"])){
  632 + $temp = explode("/",$_GET["tms"]);
  633 + $z = $temp[2];
  634 + $x = $temp[3];
  635 + $y = str_replace(".png","",$temp[4]);
  636 + $n = pow(2,$z+1);
  637 + $lon1 = $x / $n * 360.0 - 180.0;
  638 + $lon2 = ($x+1) / $n * 360.0 - 180.0;
  639 + $n = pow(2,$z);
  640 + $lat1 = $y / $n * 180.0 - 90.0;
  641 + $lat2 = ($y+1) / $n * 180.0 - 90.0;
  642 + }
  643 + else{
  644 + $top_left_minx = -180;
  645 + $top_left_maxy = 90;
  646 +
  647 + $x_size = $res[$_GET["TileMatrix"] - 1] * 256;
  648 + $y_size = $x_size;
  649 +
  650 + $lon1 = $top_left_minx + ($_GET["TileCol"] * $x_size);
  651 + $lat1 = $top_left_maxy - ($_GET["TileRow"] * $y_size) - $y_size;
  652 + $lon2 = $top_left_minx + ($_GET["TileCol"] * $x_size) + $x_size;
  653 + $lat2 = $top_left_maxy - ($_GET["TileRow"] * $y_size);
  654 + }
  655 +
  656 + //essa funcao termina o processo se a imagem existir
  657 + if($cache == true){
  658 + carregaCacheImagem($cachedir,$nomeMapfileTmp,$_GET["tms"]);
  659 + }
  660 +
  661 + $layer0 = $oMap->getlayer(0);
  662 + //
  663 + //numero de pixels que serao considerados para corte da imagem no caso de cache ativo e tema de pontos
  664 + //
  665 + if ($layer0->getmetadata("cortepixels") != ""){
  666 + $cortePixels = $layer0->getmetadata("cortepixels");
  667 + }
  668 + //se nao existir, salva a imagem
  669 + //echo $lon1." ".$lat1." ".$lon2." ".$lat2;exit;
  670 + $oMap->setsize(256,256);
  671 + $oMap->setExtent($lon1,$lat1,$lon2,$lat2);
  672 +
  673 + $layer0->set("status",MS_DEFAULT);
  674 + //
  675 + //se o layer foi marcado para corte altera os parametros para ampliar o mapa
  676 + //antes de gerar a imagem
  677 + //
  678 + if($cortePixels > 0){
  679 + //$oMap->prepareImage();
  680 + $escalaInicial = $oMap->scaledenom;
  681 + $extensaoInicial = $oMap->extent;
  682 + $wh = 256+($cortePixels*2);
  683 + $oMap->setsize($wh,$wh);
  684 + $ponto = new pointObj();
  685 + $ponto->setxy(($wh/2),($wh/2));
  686 + $oMap->zoomScale($escalaInicial, $ponto, $wh, $wh, $extensaoInicial);
  687 + }
  688 +
  689 + $img = $oMap->draw();
  690 +
  691 + if($img->imagepath == ""){
  692 + //tenta mais uma vez
  693 + $img = $oMap->draw();
  694 + }
  695 + if($img->imagepath == ""){
  696 + exit;
  697 + }
  698 + if($cache == true){
  699 + salvaCacheImagem($cachedir,$nomeMapfileTmp,$_GET["tms"]);
  700 + }
  701 + renderNocacheTms();
  702 +}
  703 +
  704 +//
  705 +//verifica se a chamada do servico e do tipo TILE no padrao do Google
  706 +//
  707 +if(isset($_GET["Z"]) && isset($_GET["X"])){
  708 + $x = $_GET["X"];
  709 + $y = $_GET["Y"];
  710 + $z = $_GET["Z"];
  711 + $proj4 = pegaProjecaoDefault("proj4");
  712 + if(file_exists($tema)){
  713 + $layer0 = $oMap->getlayer(0);
  714 + $layer0->set("status",MS_DEFAULT);
  715 + $layer0->setProjection($proj4);
  716 + }
  717 + else{
  718 + //pode ter mais de um tema
  719 + $lista = explode(" ",$tema);
  720 + foreach($lista as $nomeLayer){
  721 + $layer0 = $oMap->getlayerbyname($nomeLayer);
  722 + $layer0->set("status",MS_DEFAULT);
  723 + $layer0->setProjection($proj4);
  724 + }
  725 + }
  726 + //
  727 + //numero de pixels que serao considerados para corte da imagem no caso de cache ativo e tema de pontos
  728 + //
  729 + if ($layer0->getmetadata("cortepixels") != ""){
  730 + $cortePixels = $layer0->getmetadata("cortepixels");
  731 + }
  732 +
  733 + if($cache == true){
  734 + carregaCacheImagem($cachedir,$nomeMapfileTmp,"/googlemaps/$layer0->name/$z/$x/$y");
  735 + }
  736 + $n = pow(2,$z);
  737 + $lon1 = $x / $n * 360.0 - 180.0;
  738 + $lat2 = rad2deg(atan(sinh(pi() * (1 - 2 * $y / $n))));
  739 + $x++;
  740 + $y++;
  741 + $lon2 = $x / $n * 360.0 - 180.0;
  742 + $lat1 = rad2deg(atan(sinh(pi() * (1 - 2 * $y / $n))));
  743 + $x--;
  744 + $y--;
  745 +
  746 + $projInObj = ms_newprojectionobj("proj=latlong,a=6378137,b=6378137");
  747 + $projOutObj = ms_newprojectionobj("proj=merc,a=6378137,b=6378137,lat_ts=0.0,lon_0=0.0,x_0=0.0,y_0=0,k=1.0,units=m");
  748 +
  749 + $poPoint1 = ms_newpointobj();
  750 + $poPoint1->setXY($lon1, $lat1);
  751 + $poPoint1->project($projInObj, $projOutObj);
  752 + $poPoint2 = ms_newpointobj();
  753 + $poPoint2->setXY($lon2, $lat2);
  754 + $poPoint2->project($projInObj, $projOutObj);
  755 + $oMap->setsize(256,256);
  756 + $oMap->setExtent($poPoint1->x,$poPoint1->y,$poPoint2->x,$poPoint2->y);
  757 +
  758 + $oMap->setProjection("proj=merc,a=6378137,b=6378137,lat_ts=0.0,lon_0=0.0,x_0=0.0,y_0=0,k=1.0,units=m");
  759 +
  760 + //
  761 + //se o layer foi marcado para corte altera os parametros para ampliar o mapa
  762 + //antes de gerar a imagem
  763 + //
  764 + if($cortePixels > 0){
  765 + //$oMap->prepareImage();
  766 + $escalaInicial = $oMap->scaledenom;
  767 + $extensaoInicial = $oMap->extent;
  768 + $wh = 256+($cortePixels*2);
  769 + $oMap->setsize($wh,$wh);
  770 + $ponto = new pointObj();
  771 + $ponto->setxy(($wh/2),($wh/2));
  772 + $oMap->zoomScale($escalaInicial, $ponto, $wh, $wh, $extensaoInicial);
  773 + }
  774 + $img = $oMap->draw();
  775 + if($img->imagepath == ""){
  776 + exit;
  777 + }
  778 + if($cache == true){
  779 + salvaCacheImagem($cachedir,$nomeMapfileTmp,"/googlemaps/$layer0->name/$z/$x/$y");
  780 + }
  781 + renderNocacheTms();
  782 +}
  783 +if(strtolower($req->getValueByName("REQUEST")) == "getlegendgraphic"){
  784 + $legenda = $oMap->legend;
  785 + $legenda->set("status",MS_ON);
  786 + $numlayers = $oMap->numlayers;
  787 + for ($i=0;$i < $numlayers;$i++){
  788 + $l = $oMap->getlayer($i);
  789 + $l->set("status",MS_DEFAULT);
  790 + if($req->getValueByName("LAYER") == ""){
  791 + $req->setParameter("LAYER",$l->name);
  792 + }
  793 +
  794 + //muda o title se for vazio
  795 + /*
  796 + $nclass = $l->numclasses;
  797 + for($i=0;$i<$nclass;$i++){
  798 + $classe = $l->getclass($i);
  799 + if($classe->title == ""){
  800 + $classe->title = $classe->name;
  801 + }
  802 + }
  803 + if($nclass == 1){
  804 + $classe = $l->getclass(0);
  805 + if($classe->name == ""){
  806 + $classe->title = $l->getmetadata("tema");
  807 + $classe->set("name",$l->getmetadata("tema"));
  808 + }
  809 + }
  810 + */
  811 + if($req->getValueByName("FORMAT") == ""){
  812 + $req->setParameter("FORMAT","image/png");
  813 + }
  814 + $l->set("minscaledenom",0);
  815 + $l->set("maxscaledenom",0);
  816 + if($req->getValueByName("FORMAT") == "text/html"){
  817 + //remove offset de simbolos pontuais
  818 + $nclass = $l->numclasses;
  819 + for($cc = 0; $cc < $nclass; $cc++){
  820 + $classe = $l->getclass($cc);
  821 + if($classe->numstyles > 0){
  822 + $estilo = $classe->getstyle(0);
  823 + if($estilo->symbolname != "" && file_exists($estilo->symbolname)){
  824 + $estilo->set("offsetx",0);
  825 + $estilo->set("offsety",0);
  826 + }
  827 + }
  828 + }
  829 + }
  830 + }
  831 + if($req->getValueByName("FORMAT") == "text/html"){
  832 + //define qual template utilizar
  833 + if(empty($_GET["templateLegenda"])){
  834 + $legenda->set("template",$locaplic."/aplicmap/legendaOgc.html");
  835 + } else {
  836 + $_GET["templateLegenda"] = str_replace(".htm","",$_GET["templateLegenda"]);
  837 + $_GET["templateLegenda"] = str_replace(".","",$_GET["templateLegenda"]);
  838 + if(file_exists($locaplic."/".$_GET["templateLegenda"].".htm")){
  839 + $legenda->set("template",$locaplic."/".$_GET["templateLegenda"].".htm");
  840 + } else {
  841 + $legenda->set("template",$locaplic."/aplicmap/legendaOgc.html");
  842 + }
  843 + }
  844 + $tmparray["my_tag"] = "value_of_my_tag";
  845 + if($leg = @$oMap->processlegendtemplate($tmparray)){
  846 + if (function_exists("mb_convert_encoding")){
  847 + $leg = mb_convert_encoding($leg,"UTF-8","ISO-8859-1");
  848 + }
  849 + echo $leg;
  850 + exit;
  851 + }
  852 + }
  853 +}
  854 +
  855 +if(strtolower($req->getValueByName("REQUEST")) == "getfeature"){
  856 + $l = $oMap->getlayer(0);
  857 + if($req->getValueByName("TYPENAME") == "" || $req->getValueByName("TYPENAME") == "undefined"){
  858 + $req->setParameter("TYPENAME",$l->name);
  859 + }
  860 + if($l->getProjection() == "" ){
  861 + $l->setProjection(pegaProjecaoDefault("proj4"));
  862 + }
  863 + if(strtolower($req->getValueByName("SRS")) == "epsg:900913"){
  864 + $req->setParameter("SRS","EPSG:3857");
  865 + }
  866 +}
  867 +if(strtolower($req->getValueByName("REQUEST")) == "getfeatureinfo"){
  868 + $l = $oMap->getlayer(0);
  869 + $req->setParameter("LAYERS",$l->name);
  870 + $req->setParameter("QUERY_LAYERS",$l->name);
  871 + if(strtolower($req->getValueByName("SRS")) == "epsg:900913"){
  872 + $req->setParameter("SRS","EPSG:3857");
  873 + $_GET["SRS"] = "EPSG:3857";
  874 + }
  875 +}
  876 +ms_ioinstallstdouttobuffer();
  877 +//
  878 +//verifica parametro outputformat e ajusta a requisicao
  879 +//
  880 +if(strtolower($req->getValueByName("REQUEST")) == "getmap" && $req->getValueByName("format") == ""){
  881 + $req->setParameter("format","image/png");
  882 +}
  883 +if(strtolower($req->getValueByName("REQUEST")) == "getfeatureinfo" && $_GET["info_format"] == "text/xml"){
  884 + $req->setParameter("info_format","application/vnd.ogc.gml");
  885 +}
  886 +//json conforme cesium
  887 +if(strtolower($req->getValueByName("REQUEST")) == "getfeatureinfo" && $_GET["info_format"] == "application/json"){
  888 + getfeatureinfoJson();
  889 + exit;
  890 +}
  891 +if(strtolower($request) == "getcapabilities"){
  892 + //header('Content-Disposition: attachment; filename=getcapabilities.xml');
  893 +}
  894 +elseif(!isset($OUTPUTFORMAT)){
  895 + //$contenttype = ms_iostripstdoutbuffercontenttype();
  896 + header("Content-type: $contenttype");
  897 +}
  898 +//$ogrOutput vem de ms_configura.php
  899 +
  900 +//precisa limpar o cabecalho
  901 +if(strtolower($OUTPUTFORMAT) == "geojson" || strtolower($OUTPUTFORMAT) == "json"){
  902 + $arq = $dir_tmp."/".$tema.".json";
  903 + if(isset($ogrOutput) && $ogrOutput == false){
  904 + exportaGeojson();
  905 + exit;
  906 + }
  907 + $oMap->owsdispatch($req);
  908 +
  909 + $contenttype = ms_iostripstdoutbuffercontenttype();
  910 + ms_iostripstdoutbuffercontentheaders();
  911 + //grava em disco
  912 + $contents = ms_iogetstdoutbufferstring();
  913 + file_put_contents($arq,$contents);
  914 + //envia para download
  915 +
  916 + header("Content-type: application/json; subtype=geojson");
  917 +
  918 + ms_iogetStdoutBufferBytes();
  919 + ms_ioresethandlers();
  920 +
  921 + exit;
  922 +}
  923 +if(strtolower($OUTPUTFORMAT) == "kml"){
  924 + $oMap->owsdispatch($req);
  925 + $contenttype = ms_iostripstdoutbuffercontenttype();
  926 + ms_iostripstdoutbuffercontentheaders();
  927 + //grava em disco
  928 + $arq = $dir_tmp."/".$tema.".kml";
  929 + $contents = ms_iogetstdoutbufferstring();
  930 + file_put_contents($arq,$contents);
  931 + //envia para download
  932 + header('Content-Disposition: attachment; filename='.$tema.'.kml');
  933 + ms_iogetStdoutBufferBytes();
  934 + ms_ioresethandlers();
  935 + exit;
  936 +}
  937 +//kmz nao funciona quando fornecido diretamente pelo mapserver
  938 +if(strtolower($OUTPUTFORMAT) == "kmz"){
  939 + $oMap->owsdispatch($req);
  940 + $contenttype = ms_iostripstdoutbuffercontenttype();
  941 + ms_iostripstdoutbuffercontentheaders();
  942 + //grava em disco
  943 + $arq = $dir_tmp."/".$tema.".kmz";
  944 + $contents = ms_iogetstdoutbufferstring();
  945 + file_put_contents($arq,$contents);
  946 + //envia para download
  947 + header('Content-Disposition: attachment; filename='.$tema.'.kmz');
  948 + ms_iogetStdoutBufferBytes();
  949 + ms_ioresethandlers();
  950 + exit;
  951 +}
  952 +if(strtolower($OUTPUTFORMAT) == "shape-zip"){
  953 + $oMap->owsdispatch($req);
  954 + $contenttype = ms_iostripstdoutbuffercontenttype();
  955 + //grava em disco
  956 + $arq = $dir_tmp."/".$tema."_shapefile.zip";
  957 + $contents = ms_iogetstdoutbufferstring();
  958 + file_put_contents($arq,$contents);
  959 + //envia para download
  960 + header('Content-Disposition: attachment; filename='.$tema.'_shapefile.zip');
  961 + ms_iogetStdoutBufferBytes();
  962 + ms_ioresethandlers();
  963 + exit;
  964 +}
  965 +if(strtolower($OUTPUTFORMAT) == "csv"){
  966 + $arq = $dir_tmp."/".$tema.$ows_geomtype.".csv";
  967 + $fileName = $tema.$ows_geomtype.'.csv';
  968 + if(isset($ogrOutput) && $ogrOutput == false){
  969 + exportaCsv();
  970 + exit;
  971 + }
  972 + //
  973 + $oMap->owsdispatch($req);
  974 + $contenttype = ms_iostripstdoutbuffercontenttype();
  975 + ms_iostripstdoutbuffercontentheaders();
  976 + //grava em disco
  977 + $contents = ms_iogetstdoutbufferstring();
  978 + file_put_contents($arq,$contents);
  979 + //envia para download
  980 + header('Content-Disposition: attachment; filename='.$fileName);
  981 + header("Content-type: text/csv");
  982 + ms_iogetStdoutBufferBytes();
  983 + ms_ioresethandlers();
  984 + exit;
  985 +}
  986 +//echo $req->getValue(1);exit;
  987 +ob_clean();
  988 +$oMap->owsdispatch($req);
  989 +$contenttype = ms_iostripstdoutbuffercontenttype();
  990 +$buffer = ms_iogetStdoutBufferBytes();
  991 +
  992 +ms_ioresethandlers();
  993 +//
  994 +//fun&ccedil;&otilde;es
  995 +//
  996 +function ogc_pegaListaDeMenus(){
  997 + global $perfil,$locaplic,$urli3geo;
  998 + if(!isset($perfil)){
  999 + $perfil = "";
  1000 + }
  1001 + $m = new Menutemas("",$perfil,$locsistemas,$locaplic,"",$urli3geo);
  1002 + foreach($m->pegaListaDeMenus() as $menu)
  1003 + {
  1004 + $menus[] = $urli3geo."/admin/xmlmenutemas.php?id_menu=".$menu["idmenu"];
  1005 + }
  1006 + return $menus;
  1007 +}
  1008 +function ogc_imprimeAjuda(){
  1009 + echo "<pre><b>Construtor de web services do I3Geo.</b><br><br>";
  1010 + echo "Esse programa usa os arquivos mapfiles existentes em <br>";
  1011 + echo "i3geo/temas para gerar web services OGC.<br>";
  1012 + echo "Para escolher um tema, utilize:<br>";
  1013 + echo "ogc.php?lista=temas - para listar os temas dispon&iacute;veis<br>";
  1014 + echo "Para usar esse web service voce pode usar o parametro &tema=,<br>";
  1015 + echo "ou seja,http://[host]/i3geo/ogc.php?tema=[codigo do tema]<br>";
  1016 + echo "no lugar do codigo pode ser especificado um arquivo mapfile qualquer. ";
  1017 + echo "Nesse caso, deve ser digitado o caminho completo no servidor<br><br>";
  1018 + echo "Utilize o sistema de administracao do i3Geo para configurar quais os temas da pasta i3geo/temas podem ser utilizados.<br><br>";
  1019 + echo "Utilize o parametro restauramapa para indicar o ID de um mapa salvo no banco <br>";
  1020 + echo "de dados de administracao para utiliza-lo como um WMS";
  1021 +}
  1022 +function ogc_imprimeListaDeTemas(){
  1023 +}
  1024 +function ogc_imprimeListaDeTemasWfs(){
  1025 +}
  1026 +function carregaCacheImagem($cachedir,$map,$tms){
  1027 + global $dir_tmp;
  1028 + if($cachedir == ""){
  1029 + $nome = $dir_tmp."/cache".$tms;
  1030 + }
  1031 + else{
  1032 + $nome = $cachedir.$tms;
  1033 + }
  1034 + $nome = str_replace(".png","",$nome).".png";
  1035 + if(file_exists($nome)){
  1036 + ob_clean();
  1037 + //header('Content-Length: '.filesize($nome));
  1038 + header('Cache: '.$tms);
  1039 + header('Content-Type: image/png');
  1040 + //header('Cache-Control: max-age=3600, must-revalidate');
  1041 + //header('Expires: ' . gmdate('D, d M Y H:i:s', time()+24*60*60) . ' GMT');
  1042 + //header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($nome)).' GMT', true, 200);
  1043 + //$etag = md5_file($nome);
  1044 + //header('Etag: '.$etag);
  1045 + readfile($nome);
  1046 + exit;
  1047 + }
  1048 +}
  1049 +function salvaCacheImagem($cachedir,$map,$tms){
  1050 + global $img,$dir_tmp,$cortePixels;
  1051 + //por seguranca
  1052 + if($cachedir == ""){
  1053 + $nome = $dir_tmp."/cache".$tms;
  1054 + }
  1055 + else{
  1056 + $nome = $cachedir.$tms;
  1057 + }
  1058 + $nome = str_replace(".png","",$nome).".png";
  1059 + if(!file_exists(dirname($nome))){
  1060 + @mkdir(dirname($nome),0744,true);
  1061 + chmod(dirname($nome),0744);
  1062 + }
  1063 + $img->saveImage($nome);
  1064 + //tenta mais uma vez
  1065 + if(!file_exists($nome)){
  1066 + $img->saveImage($nome);
  1067 + }
  1068 + //
  1069 + //corta a imagem gerada para voltar ao tamanho normal
  1070 + //
  1071 + if($cortePixels > 0){
  1072 + $img = imagecreatefrompng($nome);
  1073 + $imgc = imagecreate(256,256);
  1074 +
  1075 + imagesavealpha($imgc, true);
  1076 + // Fill the image with transparent color
  1077 + $color = imagecolorallocatealpha($imgc,0x00,0x00,0x00,127);
  1078 + imagefill($imgc, 0, 0, $color);
  1079 +
  1080 + imagecopy($imgc, $img, 0 , 0 , $cortePixels , $cortePixels , 256, 256);
  1081 + imagepng($imgc,$nome);
  1082 + }
  1083 + chmod($nome,0744);
  1084 + //header('Content-Length: '.filesize($nome));
  1085 + ob_clean();
  1086 + header('Content-Type: image/png');
  1087 + //header('Cache-Control: max-age=3600, must-revalidate');
  1088 + //header('Expires: ' . gmdate('D, d M Y H:i:s', time()+24*60*60) . ' GMT');
  1089 + //header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($nome)).' GMT', true, 200);
  1090 + readfile($nome);
  1091 + exit;
  1092 +}
  1093 +function texto2iso($texto){
  1094 + if (function_exists("mb_convert_encoding")){
  1095 + if (mb_detect_encoding($texto,"UTF-8",true)){
  1096 + $texto = mb_convert_encoding($texto,"ISO-8859-1","UTF-8");
  1097 + }
  1098 + }
  1099 + return $texto;
  1100 +}
  1101 +function nomeRand($n=10)
  1102 +{
  1103 + $nomes = "";
  1104 + $a = 'azertyuiopqsdfghjklmwxcvbnABCDEFGHIJKLMNOPQRSTUVWXYZ';
  1105 + $max = 51;
  1106 + for($i=0; $i < $n; ++$i)
  1107 + {
  1108 + $nomes .= $a{mt_rand(0, $max)};
  1109 + }
  1110 + return $nomes;
  1111 +}
  1112 +function renderNocacheTms(){
  1113 + global $img,$i3georendermode,$dir_tmp,$cortePixels;
  1114 + if($i3georendermode == 1 && $cortePixels == 0){
  1115 + ob_clean();
  1116 + header('Content-Type: image/png');
  1117 + $img->saveImage();
  1118 + exit;
  1119 + }
  1120 + if($i3georendermode == 1 && $cortePixels > 0){
  1121 + $i3georendermode = 0;
  1122 + }
  1123 + $nomer = $dir_tmp."/temp".nomeRand().".png";
  1124 + $img->saveImage($nomer);
  1125 + //
  1126 + //corta a imagem gerada para voltar ao tamanho normal
  1127 + //
  1128 + if($cortePixels > 0){
  1129 + $img = imagecreatefrompng($nomer);
  1130 + $imgc = imagecreate(256,256);
  1131 + imagecopy( $imgc, $img, 0 , 0 , $cortePixels , $cortePixels , 256, 256 );
  1132 + imagepng($imgc,$nomer);
  1133 + }
  1134 + if($i3georendermode == 0 || !isset($i3georendermode)){
  1135 + ob_clean();
  1136 + //header('Content-Length: '.filesize($nomer));
  1137 + header('Content-Type: image/png');
  1138 + //header('Cache-Control: max-age=3600, must-revalidate');
  1139 + //header('Expires: ' . gmdate('D, d M Y H:i:s', time()+24*60*60) . ' GMT');
  1140 + //header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($nomer)).' GMT', true, 200);
  1141 + readfile($nomer);
  1142 + exit;
  1143 + }
  1144 + if($i3georendermode == 2){
  1145 + ob_clean();
  1146 + //header('Cache-Control: public, max-age=22222222');
  1147 + //header('Expires: ' . gmdate('D, d M Y H:i:s', time()+48*60*60) . ' GMT');
  1148 + header("X-Sendfile: $nomer");
  1149 + header("Content-type: image/png");
  1150 + exit;
  1151 + }
  1152 +}
  1153 +function getfeatureinfoJson(){
  1154 + global $req, $oMap;
  1155 + $req->setParameter("info_format","application/vnd.ogc.gml");
  1156 + $oMap->owsdispatch($req);
  1157 + ms_iostripstdoutbuffercontentheaders();
  1158 + ob_clean();
  1159 + $r = ms_iogetstdoutbufferstring();
  1160 + //$r = converteenc($r);
  1161 + $nome = $oMap->getlayer(0)->name;
  1162 + $xml = simplexml_load_string($r);
  1163 +
  1164 + $json = json_encode($xml);
  1165 + $r = json_decode($json,TRUE);
  1166 + $propriedades = $r[$nome."_layer"];
  1167 + $propriedades = $propriedades[$nome."_feature"];
  1168 + $propriedades = converteenc(json_encode($propriedades));
  1169 + $propriedades = json_decode($propriedades);
  1170 + $n = array();
  1171 + $n[] = array (
  1172 + "type" => "FeatureCollection",
  1173 + "features" => array(
  1174 + array(
  1175 + "type"=>"Feature",
  1176 + "id" => "",
  1177 + "geometry" => array(),
  1178 + "properties" => array(
  1179 + $propriedades
  1180 + ),
  1181 + "geometry_name" => ""
  1182 + )
  1183 + )
  1184 + );
  1185 + header("Content-type: application/json");
  1186 + $json = json_encode($n[0]);
  1187 + //verifica a substituicao de alias
  1188 + $itens = $oMap->getlayer(0)->getmetadata("ITENS"); // itens
  1189 + $itensdesc = $oMap->getlayer(0)->getmetadata("ITENSDESC"); // descri&ccedil;&atilde;o dos itens
  1190 + $itens = explode(",",$itens);
  1191 + $itensdesc = explode(",",converteenc($itensdesc));
  1192 + $n = count($itens);
  1193 + for($i = 0; $i < $n; $i++){
  1194 + $json = str_ireplace($itens[$i],$itensdesc[$i],$json);
  1195 + }
  1196 + echo $json;
  1197 +}
  1198 +function processaOutputformatMapfile(){
  1199 + global $OUTPUTFORMAT, $oMap, $tema, $ows_geomtype;
  1200 + if(strtolower($OUTPUTFORMAT) == "kml"){
  1201 + $l = $oMap->getlayer(0);
  1202 + $n = $l->name;
  1203 + $oMap->selectOutputFormat("kml");
  1204 + $oMap->outputformat->setOption("STORAGE", "filesystem");
  1205 + $oMap->outputformat->setOption("FILENAME", $tema.".kml");
  1206 + $l->setmetadata("wfs_getfeature_formatlist","kml");
  1207 + }
  1208 + if(strtolower($OUTPUTFORMAT) == "shape-zip"){
  1209 + $l = $oMap->getlayer(0);
  1210 + $n = $l->name;
  1211 + $oMap->selectOutputFormat("shape-zip");
  1212 + $oMap->outputformat->setOption("STORAGE", "filesystem");
  1213 + $oMap->outputformat->setOption("FORM", "zip");
  1214 + $oMap->outputformat->setOption("FILENAME", $tema."_shapefile.zip");
  1215 + $l->setmetadata("wfs_getfeature_formatlist","shape-zip");
  1216 + }
  1217 + if(strtolower($OUTPUTFORMAT) == "csv"){
  1218 + $l = $oMap->getlayer(0);
  1219 + $n = $l->name."-csv";
  1220 + $oMap->selectOutputFormat("csv");
  1221 + $oMap->outputformat->setOption("STORAGE", "filesystem");
  1222 + $oMap->outputformat->setOption("FILENAME", $tema.$ows_geomtype.".csv");
  1223 + $oMap->outputformat->setOption("FORM", "simple");
  1224 + if(isset($ows_geomtype) && $ows_geomtype != ""){
  1225 + $oMap->outputformat->setOption("LCO:GEOMETRY", $ows_geomtype);
  1226 + }
  1227 + $l->setmetadata("wfs_getfeature_formatlist","csv");
  1228 + }
  1229 + if(strtolower($OUTPUTFORMAT) == "geojson" || strtolower($OUTPUTFORMAT) == "json"){
  1230 + $l = $oMap->getlayer(0);
  1231 + $oMap->selectOutputFormat("geojson");
  1232 + $l->setmetadata("wfs_getfeature_formatlist","geojson");
  1233 + }
  1234 +}
  1235 +function carregaCacheArquivo(){
  1236 + global $dir_tmp, $tema, $OUTPUTFORMAT, $ows_geomtype;
  1237 + if(strtolower($OUTPUTFORMAT) == "shape-zip"){
  1238 + $arq = $dir_tmp."/".$tema."_shapefile.zip";
  1239 + if(file_exists($arq)){
  1240 + header('Content-Disposition: attachment; filename='.$tema.'_shapefile.zip');
  1241 + readfile($arq);
  1242 + exit;
  1243 + }
  1244 + }
  1245 + if(strtolower($OUTPUTFORMAT) == "csv"){
  1246 + $arq = $dir_tmp."/".$tema.$ows_geomtype.".csv";
  1247 + if(file_exists($arq)){
  1248 + header('Content-Disposition: attachment; filename='.$tema.$ows_geomtype.'.csv');
  1249 + header("Content-type: text/csv");
  1250 + readfile($arq);
  1251 + exit;
  1252 + }
  1253 + }
  1254 + if(strtolower($OUTPUTFORMAT) == "kml"){
  1255 + $arq = $dir_tmp."/".$tema.".kml";
  1256 + if(file_exists($arq)){
  1257 + header('Content-Disposition: attachment; filename='.$tema.'.kml');
  1258 + header("Content-type: application/vnd.google-earth.kml+xml");
  1259 + readfile($arq);
  1260 + exit;
  1261 + }
  1262 + }
  1263 + if(strtolower($OUTPUTFORMAT) == "kmz"){
  1264 + $arq = $dir_tmp."/".$tema.".kmz";
  1265 + if(file_exists($arq)){
  1266 + header('Content-Disposition: attachment; filename='.$tema.'.kmz');
  1267 + header("Content-type: application/vnd.google-earth.kmz");
  1268 + readfile($arq);
  1269 + exit;
  1270 + }
  1271 + }
  1272 + if(strtolower($OUTPUTFORMAT) == "geojson" || strtolower($OUTPUTFORMAT) == "json"){
  1273 + $arq = $dir_tmp."/".$tema.".json";
  1274 + if(file_exists($arq)){
  1275 + header("Content-type: application/json; subtype=geojson");
  1276 + readfile($arq);
  1277 + exit;
  1278 + }
  1279 + }
  1280 +}
  1281 +function converteenc($texto){
  1282 + if (!mb_detect_encoding($texto,"UTF-8",true)){
  1283 + $texto = mb_convert_encoding($texto,"UTF-8","ISO-8859-1");
  1284 + }
  1285 + return $texto;
  1286 +}
  1287 +function processaPluginI3geo(){
  1288 + global $oMap, $locaplic;
  1289 + $numlayers = $oMap->numlayers;
  1290 + for ($i=0;$i < $numlayers;$i++){
  1291 + $l = $oMap->getlayer($i);
  1292 + $c = $l->getmetadata("PLUGINI3GEO");
  1293 + if($c != ""){
  1294 + $cs = json_decode($c,true);
  1295 + if($cs["plugin"] == "parametrossql"){
  1296 + $data = $l->data;
  1297 + $cs = $cs["parametros"];
  1298 + $chaves = array();
  1299 + foreach($cs as $c){
  1300 + $chaves[] = $c["chave"];
  1301 + }
  1302 + $chaves = implode(",",$chaves);
  1303 + $filtro = $l->getFilterString();
  1304 + $chaves = str_ireplace(array(" and ", " or ", "select","from","where","update","delete","insert","--"),"",$chaves);
  1305 + $chaves = explode(",",$chaves);
  1306 + $n = count($chaves);
  1307 + //a variavel $plugin vem da URL e contem os valores
  1308 + //que devem ser substituidos
  1309 + //se $plugin for vazio, usa o primeiro valor definido na configuracao do plugin
  1310 + //A ordem dos valores deve ser exatamente a ordem das chaves
  1311 + if(empty($plugin)){
  1312 + $plugin = array();
  1313 + foreach($cs as $c){
  1314 + if($c["chave"] != ""){
  1315 + //valores definidos no plugin como uma string
  1316 + if($c["valores"] != ""){
  1317 + $temp = explode(",",$c["valores"]);
  1318 + $plugin[] = $temp[0];
  1319 + }
  1320 + elseif ($c["prog"] != ""){
  1321 + $plugin[] = execProg($c["prog"]);
  1322 + }
  1323 + }
  1324 + }
  1325 + $plugin = implode(",",$plugin);
  1326 + }
  1327 + $l->setmetadata("TEMA",$l->getmetadata("TEMA")." - ".$plugin);
  1328 + $valores = str_ireplace(array(" and ", " or ", "select","from","where","update","delete","insert","--"),"",$plugin);
  1329 + $valores = explode(",",strip_tags($valores));
  1330 + for($i = 0; $i < $n; $i++){
  1331 + if($chaves[$i] != ""){
  1332 + $v = (int) $valores[$i];
  1333 + $data = str_replace($chaves[$i],$v,$data);
  1334 + if($filtro != ""){
  1335 + $filtro = str_replace($chaves[$i],$v,$filtro);
  1336 + }
  1337 + }
  1338 + }
  1339 + if($filtro != ""){
  1340 + $l->setfilter($filtro);
  1341 + }
  1342 + $l->set("data",$data);
  1343 + }
  1344 + }
  1345 + }
  1346 +}
  1347 +function processaEscala(){
  1348 + global $oMap, $locaplic, $req;
  1349 + $eb = $oMap->scalebar;
  1350 + $eb->set("status",MS_EMBED);
  1351 + if(!empty($_GET["escala_width"])){
  1352 + $eb->set("width",$_GET["escala_width"]);
  1353 + }
  1354 + if(!empty($_GET["escala_height"])){
  1355 + $eb->set("height",$_GET["escala_height"]);
  1356 + }
  1357 + //0 ou 1
  1358 + if(!empty($_GET["escala_style"])){
  1359 + $eb->set("style",$_GET["escala_style"]);
  1360 + }
  1361 + if(!empty($_GET["escala_intervals"])){
  1362 + $eb->set("intervals",$_GET["escala_intervals"]);
  1363 + }
  1364 + //MS_INCHES, MS_FEET, MS_MILES, MS_METERS, MS_KILOMETERS, MS_DD, MS_PIXELS, MS_NAUTICALMILES
  1365 + if(!empty($_GET["escala_units"])){
  1366 + $eb->set("units",$_GET["escala_units"]);
  1367 + }
  1368 + if(!empty($_GET["escala_color"])){
  1369 + $_GET["escala_color"] = str_replace(","," ",$_GET["escala_color"]);
  1370 + $ncor = explode(" ",$_GET["escala_color"]);
  1371 + $cor = $eb->color;
  1372 + $cor->setRGB($ncor[0],$ncor[1],$ncor[2]);
  1373 + }
  1374 + if(!empty($_GET["escala_backgroundcolor"])){
  1375 + $_GET["escala_backgroundcolor"] = str_replace(","," ",$_GET["escala_backgroundcolor"]);
  1376 + $ncor = explode(" ",$_GET["escala_backgroundcolor"]);
  1377 + $cor = $eb->backgroundcolor;
  1378 + $cor->setRGB($ncor[0],$ncor[1],$ncor[2]);
  1379 + }
  1380 + if(!empty($_GET["escala_outlinecolor"])){
  1381 + $_GET["escala_outlinecolor"] = str_replace(","," ",$_GET["escala_outlinecolor"]);
  1382 + $ncor = explode(" ",$_GET["escala_outlinecolor"]);
  1383 + $cor = $eb->outlinecolor;
  1384 + $cor->setRGB($ncor[0],$ncor[1],$ncor[2]);
  1385 + }
  1386 + //ul|uc|ur|ll|lc|lr
  1387 + if(!empty($_GET["escala_position"])){
  1388 + if($_GET["escala_position"] == "ul") $eb->set("position",MS_UL);
  1389 + if($_GET["escala_position"] == "uc") $eb->set("position",MS_UC);
  1390 + if($_GET["escala_position"] == "ur") $eb->set("position",MS_UR);
  1391 + if($_GET["escala_position"] == "ll") $eb->set("position",MS_LL);
  1392 + if($_GET["escala_position"] == "lc") $eb->set("position",MS_LC);
  1393 + if($_GET["escala_position"] == "lr") $eb->set("position",MS_LR);
  1394 + }
  1395 + //fonte e size so com truetype
  1396 + if (!empty($_GET["escala_font"])){
  1397 + $label = $eb->label;
  1398 + $label->updatefromstring("LABEL TYPE TRUETYPE END");
  1399 + $label->set("font",$_GET["escala_font"]);
  1400 + }
  1401 + if (!empty($_GET["escala_size"])){
  1402 + $label = $eb->label;
  1403 + $label->updatefromstring("LABEL TYPE TRUETYPE END");
  1404 + if(empty($_GET["escala_size"])){
  1405 + $label->set("font","arial");
  1406 + }
  1407 + $label->set("size",$_GET["escala_size"]);
  1408 + }
  1409 +}
  1410 +function processaLegenda(){
  1411 + global $oMap, $locaplic, $req;
  1412 + $leg = $oMap->legend;
  1413 + $leg->set("status",MS_EMBED);
  1414 + if(!empty($_GET["legenda_imagecolor"])){
  1415 + $_GET["legenda_imagecolor"] = str_replace(","," ",$_GET["legenda_imagecolor"]);
  1416 + $ncor = explode(" ",$_GET["legenda_imagecolor"]);
  1417 + $cor = $leg->imagecolor;
  1418 + $cor->setRGB($ncor[0],$ncor[1],$ncor[2]);
  1419 + $req->setParameter("TRANSPARENT",0);
  1420 + }
  1421 + if(!empty($_GET["legenda_keysizex"])){
  1422 + $leg->set("keysizex",$_GET["legenda_keysizex"]);
  1423 + }
  1424 + if(!empty($_GET["legenda_keysizey"])){
  1425 + $leg->set("keysizey",$_GET["legenda_keysizey"]);
  1426 + }
  1427 + if(!empty($_GET["legenda_keyspacingx"])){
  1428 + $leg->set("keyspacingx",$_GET["legenda_keyspacingx"]);
  1429 + }
  1430 + //ul|uc|ur|ll|lc|lr
  1431 + if(!empty($_GET["legenda_position"])){
  1432 + if($_GET["legenda_position"] == "ul") $leg->set("position",MS_UL);
  1433 + if($_GET["legenda_position"] == "uc") $leg->set("position",MS_UC);
  1434 + if($_GET["legenda_position"] == "ur") $leg->set("position",MS_UR);
  1435 + if($_GET["legenda_position"] == "ll") $leg->set("position",MS_LL);
  1436 + if($_GET["legenda_position"] == "lc") $leg->set("position",MS_LC);
  1437 + if($_GET["legenda_position"] == "lr") $leg->set("position",MS_LR);
  1438 + }
  1439 + if(!empty($_GET["legenda_keyspacingy"])){
  1440 + $leg->set("keyspacingy",$_GET["legenda_keyspacingy"]);
  1441 + }
  1442 + if(!empty($_GET["legenda_outlinecolor"])){
  1443 + $_GET["legenda_outlinecolor"] = str_replace(","," ",$_GET["legenda_outlinecolor"]);
  1444 + $ncor = explode(" ",$_GET["legenda_outlinecolor"]);
  1445 + $cor = $leg->outlinecolor;
  1446 + $cor->setRGB($ncor[0],$ncor[1],$ncor[2]);
  1447 + }
  1448 + //fonte e size so com truetype
  1449 + if (!empty($_GET["legenda_font"])){
  1450 + $label = $leg->label;
  1451 + $label->updatefromstring("LABEL TYPE TRUETYPE END");
  1452 + $label->set("font",$_GET["legenda_font"]);
  1453 + }
  1454 + if (!empty($_GET["legenda_size"])){
  1455 + $label = $leg->label;
  1456 + $label->updatefromstring("LABEL TYPE TRUETYPE END");
  1457 + if(empty($_GET["legenda_font"])){
  1458 + $label->set("font","arial");
  1459 + }
  1460 + $label->set("size",$_GET["legenda_size"]);
  1461 + }
  1462 +}
  1463 +function processaGrade(){
  1464 + global $oMap;
  1465 + //veja o mapfile gridg.map em i3geo/temas
  1466 + $layer = $oMap->getlayerbyname("gridg");
  1467 + if($layer != ""){
  1468 + if(!empty($_GET["grade_labelformat"])){
  1469 + $layer->grid->set("labelformat", $_GET["grade_labelformat"]);
  1470 + }
  1471 + if(!empty($_GET["grade_interval"])){
  1472 + $layer->grid->set("mininterval", $_GET["grade_interval"]);
  1473 + $layer->grid->set("maxinterval", $_GET["grade_interval"]);
  1474 + }
  1475 + $classe = $layer->getclass(0);
  1476 + $estilo = $classe->getstyle(0);
  1477 + $label = $classe->getLabel(0);
  1478 + if(!empty($_GET["grade_position"])){
  1479 + //("MS_AUTO"=>MS_AUTO,"MS_UL"=>MS_UL,"MS_LR"=>MS_LR,"MS_UR"=>MS_UR,"MS_LL"=>MS_LL,
  1480 + //"MS_CR"=>MS_CR,"MS_CL"=>MS_CL,"MS_UC"=>MS_UC,"MS_LC"=>MS_LC,"MS_CC"=>MS_CC);
  1481 + if($_GET["grade_position"] == "auto") $label->set("position",MS_AUTO);
  1482 + if($_GET["grade_position"] == "cc") $label->set("position",MS_CC);
  1483 + if($_GET["grade_position"] == "ul") $label->set("position",MS_UL);
  1484 + if($_GET["grade_position"] == "uc") $label->set("position",MS_UC);
  1485 + if($_GET["grade_position"] == "ur") $label->set("position",MS_UR);
  1486 + if($_GET["grade_position"] == "ll") $label->set("position",MS_LL);
  1487 + if($_GET["grade_position"] == "lc") $label->set("position",MS_LC);
  1488 + if($_GET["grade_position"] == "lr") $label->set("position",MS_LR);
  1489 + }
  1490 + //fonte e size so com truetype
  1491 + if (!empty($_GET["grade_font"])){
  1492 + $label->updatefromstring("LABEL TYPE TRUETYPE END");
  1493 + $label->set("font",$_GET["grade_font"]);
  1494 + }
  1495 + if (!empty($_GET["grade_size"])){
  1496 + $label->updatefromstring("LABEL TYPE TRUETYPE END");
  1497 + if(empty($_GET["grade_font"])){
  1498 + $label->set("font","arial");
  1499 + }
  1500 + $label->set("size",$_GET["grade_size"]);
  1501 + }
  1502 + if(!empty($_GET["grade_color"])){
  1503 + $_GET["grade_color"] = str_replace(","," ",$_GET["grade_color"]);
  1504 + $ncor = explode(" ",$_GET["grade_color"]);
  1505 + $cor = $estilo->color;
  1506 + $cor->setRGB($ncor[0],$ncor[1],$ncor[2]);
  1507 + }
  1508 + }
  1509 + else {
  1510 + echo "Layer gridg nao encontrado"; exit;
  1511 + }
  1512 +}
  1513 +//utilizada para obter os dados default quando se utiliza o plugin parametrossql
  1514 +function execProg($prog){
  1515 + //$retorno variavel deve ser retornada pelo programa $prog
  1516 + //veja como exemplo i3geo/aplicmap/daods/listaano.php
  1517 + global $urli3geo;
  1518 + $handle = curl_init();
  1519 + curl_setopt( $handle, CURLOPT_URL, $urli3geo."/".$prog);
  1520 + curl_setopt( $handle, CURLOPT_HEADER, false );
  1521 + curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
  1522 + $str = curl_exec( $handle );
  1523 + curl_close( $handle );
  1524 + $retorno = json_decode($str,true);
  1525 + return $retorno[0]["v"];
  1526 +}
  1527 +?>
... ...
ferramentas/convertews/template_mst.html
1   -<div style='margin-left: 5px;'>
2   - <p class='paragrafo'>
3   - {{{ajudaDesktop}}} <a href='http://www.gvsig.gva.es/' target='blank'>
4   - gvSig</a>
5   - <p class='paragrafo'>{{{ajudaWms}}}
6   - <p class='paragrafo'>
7   - {{{ajudaWmc}}}<a href='\{{{nomewmc}}}\' target='_blank'>{{{wmc}}}</a>
8   - <p class='paragrafo'>
  1 +<div class='container-fluid'>
  2 + <h5>{{{ajudaDesktop}}}</h5>
  3 + <h5>{{{ajudaWms}}}</h5>
  4 + <h5>{{{ajudaWmc}}}</h5>
  5 + <a href='{{{nomewmc}}}' target='_blank'>{{{wmc}}}</a>
  6 + <h5>
9 7 <b>WMS: </b>
10   - </p>
11   - <p class='paragrafo'>
12   - <textarea cols='55' rows='3' style='cursor: pointer'
13   - onclick='javascript:this.select()'>
14   - {{{nomewms}}} </textarea>
15   - </p>
16   - <p class='paragrafo'>
17   - <a
18   - href='{{{nomewms}}}&request=getcapabilities&version=1.1.0&service=wms'
19   - target=blank>{{{testa}}}</a><br>
  8 + </h5>
  9 + <a href='{{{nomewms}}}' target='_blank'>{{{nomewms}}}</a>
  10 + <br>
  11 + <a href='{{{nomewms}}}&request=getcapabilities&version=1.1.0&service=wms' target=blank>{{{testa}}} GetCapabilities</a>
  12 + <br>
  13 + <a href='{{{nomewms}}}&request=getmap&version=1.1.0&service=wms&WIDTH={{{w}}}&HEIGHT={{{h}}}&BBOX={{{bbox}}}' target=blank>{{{testa}}} getMap</a>
  14 +
20 15 </div>
21 16 \ No newline at end of file
... ...
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
js/listaDeFerramentas.js
... ... @@ -18,10 +18,6 @@ i3GEO.listaDeFerramentas = {
18 18 descricao: $trad("descArquivos"),
19 19 id : "arquivos"
20 20 },
21   - //{
22   - // nome : $trad("d32"),
23   - // id : "interface"
24   - //},
25 21 {
26 22 nome : $trad("operacoesMapaTema"),
27 23 descricao: $trad("descOperacoesMapaTema"),
... ...
js/mapa.js
... ... @@ -733,11 +733,6 @@ i3GEO.mapa =
733 733 * Abre a janela de dialogo da ferramenta convertews
734 734 */
735 735 convertews : function() {
736   - if (i3GEO.parametros.mapfile === "") {
737   - i3GEO.janela
738   - .tempoMsg("Essa opcao nao pode ser ativada. Consulte o administrador do sistema. Mapfile nao esta exposto.");
739   - return;
740   - }
741 736 i3GEO.util.dialogoFerramenta(
742 737 "i3GEO.mapa.dialogo.convertews()",
743 738 "convertews",
... ... @@ -751,10 +746,6 @@ i3GEO.mapa =
751 746 * Abre a janela de dialogo da ferramenta convertemapakml
752 747 */
753 748 convertekml : function() {
754   - if (i3GEO.parametros.mapfile === "") {
755   - alert("Essa opcao nao pode ser ativada. Consulte o administrador do sistema. Mapfile nao esta exposto.");
756   - return;
757   - }
758 749 i3GEO.util.dialogoFerramenta(
759 750 "i3GEO.mapa.dialogo.convertekml()",
760 751 "convertemapakml",
... ...
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