Commit e157b68852e3de407cf8f533f8286cd685a0bbda

Authored by Edmar Moretti
1 parent ef39184d
Exists in master

--no commit message

Showing 2 changed files with 480 additions and 475 deletions   Show diff stats
@@ -201,6 +201,8 @@ A:hover { @@ -201,6 +201,8 @@ A:hover {
201 ins += 201 ins +=
202 "<p><a target=blank href='"+servico+"OUTPUTFORMAT=csv&bbox=-76.5125927,-39.3925675209,-29.5851853,9.49014852081&service=wfs&version=1.1.0&request=getfeature&layers="+tema+"&typeName="+tema+"' />download CSV via WFS</a>"; 202 "<p><a target=blank href='"+servico+"OUTPUTFORMAT=csv&bbox=-76.5125927,-39.3925675209,-29.5851853,9.49014852081&service=wfs&version=1.1.0&request=getfeature&layers="+tema+"&typeName="+tema+"' />download CSV via WFS</a>";
203 ins += 203 ins +=
  204 + "<p><a target=blank href='"+servico+"OUTPUTFORMAT=csv&bbox=-76.5125927,-39.3925675209,-29.5851853,9.49014852081&service=wfs&version=1.1.0&request=getfeature&layers="+tema+"&typeName="+tema+"&ows_geomtype=none' />download CSV via WFS mas sem a geometria</a>";
  205 + ins +=
204 "<p><a target=blank href='"+servico+"OUTPUTFORMAT=kmz&bbox=-76.5125927,-39.3925675209,-29.5851853,9.49014852081&service=wfs&version=1.1.0&request=getfeature&layers="+tema+"&typeName="+tema+"' />download KMZ</a>"; 206 "<p><a target=blank href='"+servico+"OUTPUTFORMAT=kmz&bbox=-76.5125927,-39.3925675209,-29.5851853,9.49014852081&service=wfs&version=1.1.0&request=getfeature&layers="+tema+"&typeName="+tema+"' />download KMZ</a>";
205 ins += 207 ins +=
206 "<p><a target=blank href='"+servico+"OUTPUTFORMAT=geojson&bbox=-76.5125927,-39.3925675209,-29.5851853,9.49014852081&service=wfs&version=1.1.0&request=getfeature&layers="+tema+"&typeName="+tema+"' />GeoJson</a>"; 208 "<p><a target=blank href='"+servico+"OUTPUTFORMAT=geojson&bbox=-76.5125927,-39.3925675209,-29.5851853,9.49014852081&service=wfs&version=1.1.0&request=getfeature&layers="+tema+"&typeName="+tema+"' />GeoJson</a>";
1 -<?php 1 +<?php
2 /* 2 /*
3 Title: Gerador de servi&ccedil;os OGC 3 Title: Gerador de servi&ccedil;os OGC
4 4
@@ -38,36 +38,37 @@ ajuda - (opcional) mostra uma ajuda ao usu&amp;aacute;rio @@ -38,36 +38,37 @@ ajuda - (opcional) mostra uma ajuda ao usu&amp;aacute;rio
38 38
39 tema - (opcional) nome do tema que ser&aacute; mostrado no servi&ccedil;o. Se for definido, o web service conter&aacute; apenas esse tema. O tema &eacute; o nome do mapfile existente em i3geo/temas, mas pode ser especificado um mapfile existente em outra pasta. Nesse caso, deve-se especificar o caminho completo para o arquivo. Se n&atilde;o for definido, ser&atilde;o considerados todos os temas 39 tema - (opcional) nome do tema que ser&aacute; mostrado no servi&ccedil;o. Se for definido, o web service conter&aacute; apenas esse tema. O tema &eacute; o nome do mapfile existente em i3geo/temas, mas pode ser especificado um mapfile existente em outra pasta. Nesse caso, deve-se especificar o caminho completo para o arquivo. Se n&atilde;o for definido, ser&atilde;o considerados todos os temas
40 40
41 -intervalo - (opcional) valor inicial e final com o n&uacute;mero de temas que ser&atilde;o mostrados no servi&ccedil;o  
42 -  
43 legenda - (opcional) mostra a legenda no corpo do mapa sim|nao 41 legenda - (opcional) mostra a legenda no corpo do mapa sim|nao
44 42
45 perfil - (opcional) perfil utilizado para restringir os temas que ser&atilde;o mostrados 43 perfil - (opcional) perfil utilizado para restringir os temas que ser&atilde;o mostrados
46 44
47 -format - (opcional) pode ser utilizado a op&ccedil;&atilde;o &format=application/openlayers para  
48 -abrir o mashup do OpenLayers com as camadas definida em temas.  
49 -Na gera&ccedil;&atilde;o da legenda pode ser utilizado text/html para gerar no formato html.  
50 - 45 +format - (opcional) pode ser utilizado a op&ccedil;&atilde;o &format=application/openlayers para
  46 +abrir o mashup do OpenLayers com as camadas definida em temas.
  47 +Na gera&ccedil;&atilde;o da legenda pode ser utilizado text/html para gerar no formato html.
  48 +
51 OUTPUTFORMAT - em getfeature, aceita tamb&eacute;m shape-zip para download de shapefile e csv para download de csv compactado 49 OUTPUTFORMAT - em getfeature, aceita tamb&eacute;m shape-zip para download de shapefile e csv para download de csv compactado
52 - 50 +
  51 +ows_geomtype - permite definir o tipo de geometria conforme utilizado pelo parametro GEOMETRY do OGR (veja http://gdal.org/drv_csv.html)
  52 +afeta o OUTPUTFORMAT csv. Utilize &ows_geomtype=none para obter um csv sem a coluna geometry
  53 +
53 id_medida_variavel - id da medida de variavel - utilizado apenas quando a fonte para definicao do layer for o sistema de metadados estatisticos 54 id_medida_variavel - id da medida de variavel - utilizado apenas quando a fonte para definicao do layer for o sistema de metadados estatisticos
54 -nao deve ser utilizado junto com tema  
55 - 55 +nao deve ser utilizado junto com tema
  56 +
56 restauramapa - ID de um mapa salvo no sistema de administracao. O mapa e restaurado e tratado como WMS 57 restauramapa - ID de um mapa salvo no sistema de administracao. O mapa e restaurado e tratado como WMS
57 -  
58 -DESLIGACACHE (opcional) {sim|nao} - forca a nao usar o cache de imagens qd definido como "sim", do contr&aacute;rio, o uso ou n&atilde;o do cache ser&aacute; definido automaticamente  
59 -  
60 -filtros - filtros podem ser adicionados incluindo o parametro da seguinte forma: &map_layer_<nomedotema>_filter=  
61 -  
62 -Exemplo de filtro  
63 -  
64 -http://localhost/i3geo/ogc.php?map_layer__lbiomashp_filter=(('[CD_LEGENDA]'='CAATINGA'))&tema=_lbiomashp&SRS=EPSG:4618&WIDTH=500&HEIGHT=500&BBOX=-76.5125927,-39.3925675209,-29.5851853,9.49014852081&FORMAT=image/png&service=wms&version=1.1.0&request=getmap&layers=_lbiomashp  
65 -  
66 -no caso de camadas Postgis basta usar map_layer__lbiomashp_filter=cd_legenda='CAATINGA' 58 +
  59 +DESLIGACACHE (opcional) {sim|nao} - forca a nao usar o cache de imagens qd definido como "sim", do contr&aacute;rio, o uso ou n&atilde;o do cache ser&aacute; definido automaticamente
  60 +
  61 +filtros - filtros podem ser adicionados incluindo o parametro da seguinte forma: &map_layer_<nomedotema>_filter=
  62 +
  63 +Exemplo de filtro
  64 +
  65 +http://localhost/i3geo/ogc.php?map_layer__lbiomashp_filter=(('[CD_LEGENDA]'='CAATINGA'))&tema=_lbiomashp&SRS=EPSG:4618&WIDTH=500&HEIGHT=500&BBOX=-76.5125927,-39.3925675209,-29.5851853,9.49014852081&FORMAT=image/png&service=wms&version=1.1.0&request=getmap&layers=_lbiomashp
  66 +
  67 +no caso de camadas Postgis basta usar map_layer__lbiomashp_filter=cd_legenda='CAATINGA'
67 68
68 Exemplos: 69 Exemplos:
69 -  
70 -ogc.php?temas=biomashp&format=application/openlayers&bbox=-54,-14,-50,-10 70 +
  71 +ogc.php?temas=biomashp&format=application/openlayers&bbox=-54,-14,-50,-10
71 72
72 ogc.php?lista=temas 73 ogc.php?lista=temas
73 74
@@ -75,39 +76,38 @@ ogc.php?tema=bioma @@ -75,39 +76,38 @@ ogc.php?tema=bioma
75 76
76 ogc.php?tema=/var/www/i3geo/aplicmap/geral1debianv6.map&layers=mundo 77 ogc.php?tema=/var/www/i3geo/aplicmap/geral1debianv6.map&layers=mundo
77 78
78 -ogc.php?intervalo=0,50  
79 */ 79 */
80 -$_GET = array_merge($_GET,$_POST); 80 +$_GET = array_merge($_GET,$_POST);
81 // 81 //
82 //caso nenhum parametros tenha sido enviado 82 //caso nenhum parametros tenha sido enviado
83 // 83 //
84 if(count($_GET) == 0){ 84 if(count($_GET) == 0){
85 $tipo="metadados"; 85 $tipo="metadados";
86 - $_GET["REQUEST"] = "getCapabilities"; 86 + $_GET["REQUEST"] = "getCapabilities";
87 $_GET["request"] = "getCapabilities"; 87 $_GET["request"] = "getCapabilities";
88 $_GET["SERVICE"] = "WMS"; 88 $_GET["SERVICE"] = "WMS";
89 -} 89 +}
90 // 90 //
91 //compatibiliza chamadas fora do padrao 91 //compatibiliza chamadas fora do padrao
92 // 92 //
93 if(isset($_GET["outputFormat"]) && $_GET["outputFormat"] != ""){ 93 if(isset($_GET["outputFormat"]) && $_GET["outputFormat"] != ""){
94 $_GET["OUTPUTFORMAT"] = $_GET["outputFormat"]; 94 $_GET["OUTPUTFORMAT"] = $_GET["outputFormat"];
95 -} 95 +}
96 if(isset($_GET["outputformat"]) && $_GET["outputformat"] != ""){ 96 if(isset($_GET["outputformat"]) && $_GET["outputformat"] != ""){
97 $_GET["OUTPUTFORMAT"] = $_GET["outputformat"]; 97 $_GET["OUTPUTFORMAT"] = $_GET["outputformat"];
98 } 98 }
99 $cache = true; 99 $cache = true;
100 //require_once(dirname(__FILE__)."/classesphp/carrega_ext.php"); 100 //require_once(dirname(__FILE__)."/classesphp/carrega_ext.php");
101 include(dirname(__FILE__)."/ms_configura.php"); 101 include(dirname(__FILE__)."/ms_configura.php");
102 -include(dirname(__FILE__)."/classesphp/pega_variaveis.php");  
103 -include(dirname(__FILE__)."/classesphp/funcoes_gerais.php"); 102 +include(dirname(__FILE__)."/classesphp/pega_variaveis.php");
  103 +include(dirname(__FILE__)."/classesphp/funcoes_gerais.php");
104 // 104 //
105 //imprime na tela a ajuda 105 //imprime na tela a ajuda
106 // 106 //
107 if(isset($ajuda)){ 107 if(isset($ajuda)){
108 ogc_imprimeAjuda(); 108 ogc_imprimeAjuda();
109 exit; 109 exit;
110 -} 110 +}
111 // 111 //
112 //pega os enderecos para compor a url de chamada do gerador de web services 112 //pega os enderecos para compor a url de chamada do gerador de web services
113 // 113 //
@@ -115,35 +115,35 @@ $protocolo = explode(&quot;/&quot;,$_SERVER[&#39;SERVER_PROTOCOL&#39;]); @@ -115,35 +115,35 @@ $protocolo = explode(&quot;/&quot;,$_SERVER[&#39;SERVER_PROTOCOL&#39;]);
115 $protocolo = $protocolo[0]; 115 $protocolo = $protocolo[0];
116 $protocolo1 = strtolower($protocolo) . '://'.$_SERVER['SERVER_NAME']; 116 $protocolo1 = strtolower($protocolo) . '://'.$_SERVER['SERVER_NAME'];
117 $protocolo = strtolower($protocolo) . '://'.$_SERVER['SERVER_NAME'] .":". $_SERVER['SERVER_PORT']; 117 $protocolo = strtolower($protocolo) . '://'.$_SERVER['SERVER_NAME'] .":". $_SERVER['SERVER_PORT'];
118 -$urli3geo = str_replace("/ogc.php","",$protocolo.$_SERVER["PHP_SELF"]); 118 +$urli3geo = str_replace("/ogc.php","",$protocolo.$_SERVER["PHP_SELF"]);
119 // 119 //
120 //imprime na tela a lista de temas disponiveis 120 //imprime na tela a lista de temas disponiveis
121 // 121 //
122 if(isset($lista) && $lista != ""){ 122 if(isset($lista) && $lista != ""){
123 include_once(dirname(__FILE__)."/classesphp/classe_menutemas.php"); 123 include_once(dirname(__FILE__)."/classesphp/classe_menutemas.php");
124 - if($lista == "temas"){  
125 - ogc_imprimeListaDeTemas();  
126 - } 124 + if($lista == "temas"){
  125 + ogc_imprimeListaDeTemas();
  126 + }
127 if($lista == "temaswfs"){ 127 if($lista == "temaswfs"){
128 ogc_imprimeListaDeTemasWfs(); 128 ogc_imprimeListaDeTemasWfs();
129 } 129 }
130 exit; 130 exit;
131 -} 131 +}
132 // 132 //
133 //define um nome para o mapfile caso a origem seja o sistema de metadados estatisticos 133 //define um nome para o mapfile caso a origem seja o sistema de metadados estatisticos
134 // 134 //
135 if(isset($id_medida_variavel) && $id_medida_variavel != ""){ 135 if(isset($id_medida_variavel) && $id_medida_variavel != ""){
136 $tema = "ogcmetaestat".$id_medida_variavel; 136 $tema = "ogcmetaestat".$id_medida_variavel;
137 -}  
138 -//  
139 -//compatibiliza variaveis  
140 -// 137 +}
  138 +//
  139 +//compatibiliza variaveis
  140 +//
141 if(!isset($tema) && isset($layers)){ 141 if(!isset($tema) && isset($layers)){
142 $tema = $layers; 142 $tema = $layers;
143 -} 143 +}
144 if(!isset($tema) && isset($LAYERS)){ 144 if(!isset($tema) && isset($LAYERS)){
145 $tema = $LAYERS; 145 $tema = $LAYERS;
146 -} 146 +}
147 if(!isset($tema) && isset($temas)){ 147 if(!isset($tema) && isset($temas)){
148 $tema = $temas; 148 $tema = $temas;
149 } 149 }
@@ -152,27 +152,27 @@ if(isset($typeName)){ @@ -152,27 +152,27 @@ if(isset($typeName)){
152 } 152 }
153 if(!isset($tema) && isset($typename)){ 153 if(!isset($tema) && isset($typename)){
154 $tema = $typename; 154 $tema = $typename;
155 -}  
156 -//  
157 -//garante que layers possam ser especificados de diferentes maneiras  
158 -// 155 +}
  156 +//
  157 +//garante que layers possam ser especificados de diferentes maneiras
  158 +//
159 $_GET["layers"] = $tema; 159 $_GET["layers"] = $tema;
160 -$_GET["LAYERS"] = $tema;  
161 -$layers = $tema;  
162 -//  
163 -//verifica o OUTPUTFORMAT e o cache de arquivo  
164 -//  
165 -if(!empty($OUTPUTFORMAT)){  
166 - carregaCacheArquivo();  
167 -}  
168 -//  
169 -//para o caso da requisicao kml 160 +$_GET["LAYERS"] = $tema;
  161 +$layers = $tema;
  162 +//
  163 +//verifica o OUTPUTFORMAT e o cache de arquivo
  164 +//
  165 +if(!empty($OUTPUTFORMAT)){
  166 + carregaCacheArquivo();
  167 +}
  168 +//
  169 +//para o caso da requisicao kml
170 // 170 //
171 if(strtolower($OUTPUTFORMAT) == "kml" || strtolower($OUTPUTFORMAT) == "kmz"){ 171 if(strtolower($OUTPUTFORMAT) == "kml" || strtolower($OUTPUTFORMAT) == "kmz"){
172 $urln = "pacotes/kmlmapserver/kmlservice.php?request=kmz&map=".$tema."&typename=".$tema; 172 $urln = "pacotes/kmlmapserver/kmlservice.php?request=kmz&map=".$tema."&typename=".$tema;
173 header("Location:".$urln); 173 header("Location:".$urln);
174 exit; 174 exit;
175 -} 175 +}
176 // 176 //
177 //usa o epsg correto ao inves do apelido inventado pelo Google 177 //usa o epsg correto ao inves do apelido inventado pelo Google
178 // 178 //
@@ -183,31 +183,31 @@ if($_GET[&quot;SRS&quot;] == &quot;EPSG:900913&quot; || $_GET[&quot;srs&quot;] == &quot;EPSG:900913&quot;){ @@ -183,31 +183,31 @@ if($_GET[&quot;SRS&quot;] == &quot;EPSG:900913&quot; || $_GET[&quot;srs&quot;] == &quot;EPSG:900913&quot;){
183 if(!isset($_GET["srs"]) && !isset($_GET["SRS"])){ 183 if(!isset($_GET["srs"]) && !isset($_GET["SRS"])){
184 $_GET["srs"] = "EPSG:4326"; 184 $_GET["srs"] = "EPSG:4326";
185 $_GET["SRS"] = "EPSG:4326"; 185 $_GET["SRS"] = "EPSG:4326";
186 -}  
187 -//  
188 -//trata geojson da mesma forma que json  
189 -// 186 +}
  187 +//
  188 +//trata geojson da mesma forma que json
  189 +//
190 if(strtolower($OUTPUTFORMAT) == "geojson"){ 190 if(strtolower($OUTPUTFORMAT) == "geojson"){
191 $OUTPUTFORMAT = "json"; 191 $OUTPUTFORMAT = "json";
192 -} 192 +}
193 // 193 //
194 //recupera um mapa salvo no banco de administracao 194 //recupera um mapa salvo no banco de administracao
195 // 195 //
196 if(!empty($restauramapa)){ 196 if(!empty($restauramapa)){
197 - restauraMapaSalvo();  
198 -} 197 + restauraMapaSalvo();
  198 +}
199 // 199 //
200 //para operar como o Geoserver, abre o openlayers 200 //para operar como o Geoserver, abre o openlayers
201 // 201 //
202 if(isset($format) && strtolower($format) == "application/openlayers"){ 202 if(isset($format) && strtolower($format) == "application/openlayers"){
203 $urln = dirname($_SERVER["PHP_SELF"])."/mashups/openlayers.php?layers=".$layers."&mapext=".$bbox."&botoes=pan,zoombox,zoomtot,identifica"; 203 $urln = dirname($_SERVER["PHP_SELF"])."/mashups/openlayers.php?layers=".$layers."&mapext=".$bbox."&botoes=pan,zoombox,zoomtot,identifica";
204 - //echo $urln;exit;  
205 - if(!headers_sent()){  
206 - header("Location:".$urln); 204 + //echo $urln;exit;
  205 + if(!headers_sent()){
  206 + header("Location:".$urln);
  207 + }
  208 + else{
  209 + echo "<meta http-equiv='refresh' content='0;url=$urln'>";
207 } 210 }
208 - else{  
209 - echo "<meta http-equiv='refresh' content='0;url=$urln'>";  
210 - }  
211 //exit.... 211 //exit....
212 } 212 }
213 // 213 //
@@ -215,16 +215,16 @@ if(isset($format) &amp;&amp; strtolower($format) == &quot;application/openlayers&quot;){ @@ -215,16 +215,16 @@ if(isset($format) &amp;&amp; strtolower($format) == &quot;application/openlayers&quot;){
215 // 215 //
216 error_reporting(0); 216 error_reporting(0);
217 $versao = versao(); 217 $versao = versao();
218 -$versao = $versao["principal"]; 218 +$versao = $versao["principal"];
219 219
220 -$req = ms_newowsrequestobj(); 220 +$req = ms_newowsrequestobj();
221 $tipo = ""; 221 $tipo = "";
222 222
223 if(isset($_GET["sld"]) || isset($_GET["filter"])){ 223 if(isset($_GET["sld"]) || isset($_GET["filter"])){
224 $cache = false; 224 $cache = false;
225 -}  
226 -//  
227 -//inclui todos os parametros na requisicao e aproveita para verificar getcapabilities 225 +}
  226 +//
  227 +//inclui todos os parametros na requisicao e aproveita para verificar getcapabilities
228 // 228 //
229 foreach ($_GET as $k=>$v){ 229 foreach ($_GET as $k=>$v){
230 $req->setParameter(strtoupper($k), $v); 230 $req->setParameter(strtoupper($k), $v);
@@ -232,54 +232,54 @@ foreach ($_GET as $k=&gt;$v){ @@ -232,54 +232,54 @@ foreach ($_GET as $k=&gt;$v){
232 $tipo = "metadados"; 232 $tipo = "metadados";
233 $cache = false; 233 $cache = false;
234 } 234 }
235 -}  
236 -//  
237 -//cria uma lista de epsgs para o getcapabilities  
238 -//  
239 -$req->setParameter("srsName",$req->getValueByName("SRS")); 235 +}
  236 +//
  237 +//cria uma lista de epsgs para o getcapabilities
  238 +//
  239 +$req->setParameter("srsName",$req->getValueByName("SRS"));
240 $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"; 240 $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";
241 241
242 -if(isset($version) && !isset($VERSION)){  
243 - $VERSION = $version; 242 +if(isset($version) && !isset($VERSION)){
  243 + $VERSION = $version;
244 } 244 }
245 if(!isset($VERSION)){ 245 if(!isset($VERSION)){
246 - $req->setParameter("VeRsIoN","1.1.1");  
247 -}  
248 -//  
249 -//nome do mapfile que ficara em cache  
250 -//  
251 -$agora = intval(time() / 1000);  
252 -//acrescenta ao nome a indicacao do tipo de TMS 246 + $req->setParameter("VeRsIoN","1.1.1");
  247 +}
  248 +//
  249 +//nome do mapfile que ficara em cache
  250 +//
  251 +$agora = intval(time() / 1000);
  252 +//acrescenta ao nome a indicacao do tipo de TMS
253 if(isset($_GET["tms"])){ 253 if(isset($_GET["tms"])){
254 $agora .= "tms"; 254 $agora .= "tms";
255 -}  
256 -if(isset($_GET["Z"]) && isset($_GET["X"])){  
257 - $agora .= "google";  
258 -}  
259 -//  
260 -//se o outputformat for definido, evita o cahce de arquivo  
261 -//o mesmo se existir filtro para o layer  
262 -//  
263 -if(isset($_GET["OUTPUTFORMAT"]) || !empty($_GET["map_layer_".$tema."_filter"])){  
264 - $_GET["DESLIGACACHE"] = "sim";  
265 -}  
266 -if(isset($_GET["DESLIGACACHE"]) && $_GET["DESLIGACACHE"] == "sim"){  
267 - $agora = time();  
268 - $cache = false;  
269 -}  
270 -$nomeMapfileTmp = $dir_tmp."/ogc_".md5(implode("",$_GET))."_".$agora.".map";  
271 -//essa variavel e usada para definir se a imagem final gerada devera ser cortada ou nao  
272 -$cortePixels = 0;  
273 -if(file_exists($nomeMapfileTmp) && $tipo == ""){  
274 - $oMap = ms_newMapobj($nomeMapfileTmp);  
275 -}  
276 -else{ 255 +}
  256 +if(isset($_GET["Z"]) && isset($_GET["X"])){
  257 + $agora .= "google";
  258 +}
  259 +//
  260 +//se o outputformat for definido, evita o cahce de arquivo
  261 +//o mesmo se existir filtro para o layer
  262 +//
  263 +if(isset($_GET["OUTPUTFORMAT"]) || !empty($_GET["map_layer_".$tema."_filter"])){
  264 + $_GET["DESLIGACACHE"] = "sim";
  265 +}
  266 +if(isset($_GET["DESLIGACACHE"]) && $_GET["DESLIGACACHE"] == "sim"){
  267 + $agora = time();
  268 + $cache = false;
  269 +}
  270 +$nomeMapfileTmp = $dir_tmp."/ogc_".md5(implode("",$_GET))."_".$agora.".map";
  271 +//essa variavel e usada para definir se a imagem final gerada devera ser cortada ou nao
  272 +$cortePixels = 0;
  273 +if(file_exists($nomeMapfileTmp) && $tipo == ""){
  274 + $oMap = ms_newMapobj($nomeMapfileTmp);
  275 +}
  276 +else{
277 if(empty($ogcwsmap)){ 277 if(empty($ogcwsmap)){
278 $oMap = ms_newMapobj($locaplic."/aplicmap/ogcwsv".$versao.".map"); 278 $oMap = ms_newMapobj($locaplic."/aplicmap/ogcwsv".$versao.".map");
279 } 279 }
280 else{ 280 else{
281 $oMap = ms_newMapobj($ogcwsmap); 281 $oMap = ms_newMapobj($ogcwsmap);
282 - } 282 + }
283 $proto = "http" . ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "s" : "") . "://"; 283 $proto = "http" . ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "s" : "") . "://";
284 $server = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME']; 284 $server = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME'];
285 $or = $urli3geo."/ogc.php"; 285 $or = $urli3geo."/ogc.php";
@@ -299,15 +299,15 @@ else{ @@ -299,15 +299,15 @@ else{
299 $oMap->setmetadata("wms_attribution_logourl_href",$urli3geo."/imagens/i3geo.png"); 299 $oMap->setmetadata("wms_attribution_logourl_href",$urli3geo."/imagens/i3geo.png");
300 $oMap->setmetadata("wms_attribution_onlineresource",$urli3geo); 300 $oMap->setmetadata("wms_attribution_onlineresource",$urli3geo);
301 $oMap->setmetadata("wms_attribution_title",$tituloInstituicao); 301 $oMap->setmetadata("wms_attribution_title",$tituloInstituicao);
302 - $oMap->setmetadata("ows_enable_request","*");  
303 - //parametro mandatario  
304 - if($oMap->getmetadata("wms_srs") == ""){  
305 - $oMap->setmetadata("wms_srs","EPSG:4326"); 302 + $oMap->setmetadata("ows_enable_request","*");
  303 + //parametro mandatario
  304 + if($oMap->getmetadata("wms_srs") == ""){
  305 + $oMap->setmetadata("wms_srs","EPSG:4326");
306 } 306 }
307 $e = $oMap->extent; 307 $e = $oMap->extent;
308 - $extensaoMap = ($e->minx)." ".($e->miny)." ".($e->maxx)." ".($e->maxy); 308 + $extensaoMap = ($e->minx)." ".($e->miny)." ".($e->maxx)." ".($e->maxy);
309 //gera o mapa 309 //gera o mapa
310 - if ($tema != ""){ 310 + if ($tema != ""){
311 $listatema = explode(" ",$tema); 311 $listatema = explode(" ",$tema);
312 //para o caso do tema ser um arquivo mapfile existente em uma pasta qualquer 312 //para o caso do tema ser um arquivo mapfile existente em uma pasta qualquer
313 //$temai3geo = true indica que o layer ser&aacute; buscado na pasta i3geo/temas 313 //$temai3geo = true indica que o layer ser&aacute; buscado na pasta i3geo/temas
@@ -319,7 +319,7 @@ else{ @@ -319,7 +319,7 @@ else{
319 $nmap->setmetadata("ows_enable_request","*"); 319 $nmap->setmetadata("ows_enable_request","*");
320 } 320 }
321 foreach ($listatema as $tx){ 321 foreach ($listatema as $tx){
322 - $extensao = ".map"; 322 + $extensao = ".map";
323 if($temai3geo == true && file_exists($locaplic."/temas/".$tx.".php")){ 323 if($temai3geo == true && file_exists($locaplic."/temas/".$tx.".php")){
324 $extensao = ".php"; 324 $extensao = ".php";
325 } 325 }
@@ -328,15 +328,15 @@ else{ @@ -328,15 +328,15 @@ else{
328 } 328 }
329 if($extensao == ".map"){ 329 if($extensao == ".map"){
330 //cria o mapfile com base no sistema de metadados estatisticos 330 //cria o mapfile com base no sistema de metadados estatisticos
331 - //verifica se o id_medida_variavel existe no mapfile e nao foi passado como um parametro  
332 - if(!isset($id_medida_variavel) && $temai3geo == true){  
333 - $nmap = ms_newMapobj($locaplic."/temas/".$tx.".map");  
334 - $l = $nmap->getlayer(0);  
335 - $teste = $l->getmetadata("METAESTAT_ID_MEDIDA_VARIAVEL");  
336 - if($teste != "" && $l->data == ""){  
337 - $id_medida_variavel = $teste;  
338 - }  
339 - } 331 + //verifica se o id_medida_variavel existe no mapfile e nao foi passado como um parametro
  332 + if(!isset($id_medida_variavel) && $temai3geo == true){
  333 + $nmap = ms_newMapobj($locaplic."/temas/".$tx.".map");
  334 + $l = $nmap->getlayer(0);
  335 + $teste = $l->getmetadata("METAESTAT_ID_MEDIDA_VARIAVEL");
  336 + if($teste != "" && $l->data == ""){
  337 + $id_medida_variavel = $teste;
  338 + }
  339 + }
340 if(isset($id_medida_variavel)){ 340 if(isset($id_medida_variavel)){
341 $temai3geo = false; 341 $temai3geo = false;
342 include("admin/php/classe_metaestat.php"); 342 include("admin/php/classe_metaestat.php");
@@ -346,32 +346,32 @@ else{ @@ -346,32 +346,32 @@ else{
346 $nmap = ms_newMapobj($mapfileMetaestat["mapfile"]); 346 $nmap = ms_newMapobj($mapfileMetaestat["mapfile"]);
347 $nmap->setmetadata("ows_enable_request","*"); 347 $nmap->setmetadata("ows_enable_request","*");
348 $req->setParameter("LAYERS", "ogcmetaestat".$id_medida_variavel); 348 $req->setParameter("LAYERS", "ogcmetaestat".$id_medida_variavel);
349 - } 349 + }
350 if($temai3geo == true){ 350 if($temai3geo == true){
351 $nmap = ms_newMapobj($locaplic."/temas/".$tx.".map"); 351 $nmap = ms_newMapobj($locaplic."/temas/".$tx.".map");
352 $nmap->setmetadata("ows_enable_request","*"); 352 $nmap->setmetadata("ows_enable_request","*");
353 } 353 }
354 - if($temai3geo == false || empty($layers)){  
355 - $ts = $nmap->getalllayernames();  
356 - $nmap->setmetadata("ows_enable_request","*"); 354 + if($temai3geo == false || empty($layers)){
  355 + $ts = $nmap->getalllayernames();
  356 + $nmap->setmetadata("ows_enable_request","*");
357 } 357 }
358 else{ 358 else{
359 $ts = explode(",",str_replace(" ",",",$layers)); 359 $ts = explode(",",str_replace(" ",",",$layers));
360 } 360 }
361 - foreach ($ts as $t){ 361 + foreach ($ts as $t){
362 $l = $nmap->getlayerbyname($t); 362 $l = $nmap->getlayerbyname($t);
363 - $permite = $l->getmetadata("permiteogc"); 363 + $permite = $l->getmetadata("permiteogc");
364 if(strtolower($permite) != "nao"){ 364 if(strtolower($permite) != "nao"){
365 //necess&aacute;rio pq o mapfile pode ter todos os layers como default 365 //necess&aacute;rio pq o mapfile pode ter todos os layers como default
366 if($temai3geo == false){ 366 if($temai3geo == false){
367 $l->set("status",MS_OFF); 367 $l->set("status",MS_OFF);
368 - } 368 + }
369 /* 369 /*
370 if($cache == true && strtolower($l->getmetadata('cache')) == 'sim' && $tipo == '' && count($tema) == 1){ 370 if($cache == true && strtolower($l->getmetadata('cache')) == 'sim' && $tipo == '' && count($tema) == 1){
371 carregaCacheImagem($_GET['BBOX'],$tx,$_GET['WIDTH'],$_GET['HEIGHT'],$cachedir); 371 carregaCacheImagem($_GET['BBOX'],$tx,$_GET['WIDTH'],$_GET['HEIGHT'],$cachedir);
372 - } 372 + }
373 */ 373 */
374 - $l->setmetadata("ows_title",pegaNome($l)); 374 + $l->setmetadata("ows_title",pegaNome($l));
375 $l->setmetadata("ows_srs",$listaepsg); 375 $l->setmetadata("ows_srs",$listaepsg);
376 $l->set("group",""); 376 $l->set("group","");
377 //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 377 //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
@@ -382,7 +382,7 @@ else{ @@ -382,7 +382,7 @@ else{
382 $l->set("template","none.htm"); 382 $l->set("template","none.htm");
383 $l->set("dump",MS_TRUE); 383 $l->set("dump",MS_TRUE);
384 $l->setmetadata("WMS_INCLUDE_ITEMS","all"); 384 $l->setmetadata("WMS_INCLUDE_ITEMS","all");
385 - $l->setmetadata("WFS_INCLUDE_ITEMS","all"); 385 + $l->setmetadata("WFS_INCLUDE_ITEMS","all");
386 386
387 if(file_exists($locaplic."/temas/miniaturas/".$t.".map.mini.png")){ 387 if(file_exists($locaplic."/temas/miniaturas/".$t.".map.mini.png")){
388 $mini = $proto.$server.dirname($_SERVER['PHP_SELF'])."/temas/miniaturas/".$t.".map.mini.png"; 388 $mini = $proto.$server.dirname($_SERVER['PHP_SELF'])."/temas/miniaturas/".$t.".map.mini.png";
@@ -393,8 +393,8 @@ else{ @@ -393,8 +393,8 @@ else{
393 } 393 }
394 if($l->type == MS_LAYER_RASTER && $l->numclasses > 0){ 394 if($l->type == MS_LAYER_RASTER && $l->numclasses > 0){
395 $c = $l->getclass(0); 395 $c = $l->getclass(0);
396 - if($c->name == ""){  
397 - $c->name = " "; 396 + if($c->name == ""){
  397 + $c->name = " ";
398 } 398 }
399 } 399 }
400 //inclui extensao geografica 400 //inclui extensao geografica
@@ -423,26 +423,26 @@ else{ @@ -423,26 +423,26 @@ else{
423 } 423 }
424 autoClasses($l,$oMap); 424 autoClasses($l,$oMap);
425 if($versao > 5){ 425 if($versao > 5){
426 - $pr = $l->getProcessing();  
427 - if(!in_array("LABEL_NO_CLIP=True",$pr)){  
428 - $l->setprocessing("LABEL_NO_CLIP=True");  
429 - }  
430 - if(!in_array("POLYLINE_NO_CLIP=True",$pr)){  
431 - $l->setprocessing("POLYLINE_NO_CLIP=True");  
432 - }  
433 - }  
434 - //  
435 - //verifica se existem parametros de substituicao passados via url  
436 - //  
437 - $parametro = $_GET["map_layer_".$l->name."_filter"];  
438 - //echo $parametro;exit;  
439 - if(!empty($parametro)){  
440 - $l->setfilter($parametro);  
441 - $cache = false;  
442 - } 426 + $pr = $l->getProcessing();
  427 + if(!in_array("LABEL_NO_CLIP=True",$pr)){
  428 + $l->setprocessing("LABEL_NO_CLIP=True");
  429 + }
  430 + if(!in_array("POLYLINE_NO_CLIP=True",$pr)){
  431 + $l->setprocessing("POLYLINE_NO_CLIP=True");
  432 + }
  433 + }
  434 + //
  435 + //verifica se existem parametros de substituicao passados via url
  436 + //
  437 + $parametro = $_GET["map_layer_".$l->name."_filter"];
  438 + //echo $parametro;exit;
  439 + if(!empty($parametro)){
  440 + $l->setfilter($parametro);
  441 + $cache = false;
  442 + }
443 443
444 - ms_newLayerObj($oMap, $l);  
445 - //$req->setParameter("LAYERS", "mundo"); 444 + ms_newLayerObj($oMap, $l);
  445 + //$req->setParameter("LAYERS", "mundo");
446 } 446 }
447 } 447 }
448 } 448 }
@@ -454,10 +454,10 @@ else{ @@ -454,10 +454,10 @@ else{
454 include_once($locaplic."/pacotes/gvsig/gvsig2mapfile/class.gvsig2mapfile.php"); 454 include_once($locaplic."/pacotes/gvsig/gvsig2mapfile/class.gvsig2mapfile.php");
455 $gm = new gvsig2mapfile($locaplic."/temas/".$tx.".gvp"); 455 $gm = new gvsig2mapfile($locaplic."/temas/".$tx.".gvp");
456 $gvsigview = $gm->getViewsNames(); 456 $gvsigview = $gm->getViewsNames();
457 - foreach($gvsigview as $gv){ 457 + foreach($gvsigview as $gv){
458 $dataView = $gm->getViewData($gv); 458 $dataView = $gm->getViewData($gv);
459 $oMap = $gm->addLayers($oMap,$gv,$dataView["layerNames"]); 459 $oMap = $gm->addLayers($oMap,$gv,$dataView["layerNames"]);
460 - } 460 + }
461 $numlayers = $oMap->numlayers; 461 $numlayers = $oMap->numlayers;
462 $lys = array(); 462 $lys = array();
463 //$layers[] = "default"; 463 //$layers[] = "default";
@@ -480,8 +480,8 @@ else{ @@ -480,8 +480,8 @@ else{
480 } 480 }
481 if($l->type == MS_LAYER_RASTER && $l->numclasses > 0){ 481 if($l->type == MS_LAYER_RASTER && $l->numclasses > 0){
482 $c = $l->getclass(0); 482 $c = $l->getclass(0);
483 - if($c->name == ""){  
484 - $c->name = " "; 483 + if($c->name == ""){
  484 + $c->name = " ";
485 } 485 }
486 } 486 }
487 //inclui extensao geografica 487 //inclui extensao geografica
@@ -489,12 +489,12 @@ else{ @@ -489,12 +489,12 @@ else{
489 if($extensao == ""){ 489 if($extensao == ""){
490 $extensao = $extensaoMap; 490 $extensao = $extensaoMap;
491 } 491 }
492 - $l->setmetadata("wms_extent",$extensao);  
493 - //  
494 - //numero de pixels que serao considerados para corte da imagem no caso de cache ativo e tema de pontos  
495 - //  
496 - if ($l->getmetadata("cortepixels") != ""){  
497 - $cortePixels = $l->getmetadata("cortepixels"); 492 + $l->setmetadata("wms_extent",$extensao);
  493 + //
  494 + //numero de pixels que serao considerados para corte da imagem no caso de cache ativo e tema de pontos
  495 + //
  496 + if ($l->getmetadata("cortepixels") != ""){
  497 + $cortePixels = $l->getmetadata("cortepixels");
498 } 498 }
499 } 499 }
500 $req->setParameter("LAYERS", implode(",",$lys)); 500 $req->setParameter("LAYERS", implode(",",$lys));
@@ -502,13 +502,13 @@ else{ @@ -502,13 +502,13 @@ else{
502 } 502 }
503 } 503 }
504 } 504 }
505 - else{  
506 - $intervalo = "0,5000"; 505 + else{
  506 + $intervalo = "0,5000";
507 $conta = 0; 507 $conta = 0;
508 $int = explode(",",$intervalo); 508 $int = explode(",",$intervalo);
509 $codigosTema = array(); 509 $codigosTema = array();
510 - if(empty($perfil)){  
511 - $perfil = ""; 510 + if(empty($perfil)){
  511 + $perfil = "";
512 } 512 }
513 include("classesphp/classe_menutemas.php"); 513 include("classesphp/classe_menutemas.php");
514 $m = new Menutemas("",$perfil,$locaplic,$urli3geo); 514 $m = new Menutemas("",$perfil,$locaplic,$urli3geo);
@@ -541,8 +541,8 @@ else{ @@ -541,8 +541,8 @@ else{
541 if ($oMap->getlayerbyname($t) == ""){ 541 if ($oMap->getlayerbyname($t) == ""){
542 $l = $nmap->getlayerbyname($t); 542 $l = $nmap->getlayerbyname($t);
543 $extensao = $l->getmetadata("EXTENSAO"); 543 $extensao = $l->getmetadata("EXTENSAO");
544 - if($extensao == ""){  
545 - $extensao = $extensaoMap; 544 + if($extensao == ""){
  545 + $extensao = $extensaoMap;
546 } 546 }
547 $l->setmetadata("wms_extent",$extensao); 547 $l->setmetadata("wms_extent",$extensao);
548 $l->setmetadata("ows_title",pegaNome($l)); 548 $l->setmetadata("ows_title",pegaNome($l));
@@ -551,25 +551,25 @@ else{ @@ -551,25 +551,25 @@ else{
551 $l->setmetadata("gml_include_items","all"); 551 $l->setmetadata("gml_include_items","all");
552 $l->set("dump",MS_TRUE); 552 $l->set("dump",MS_TRUE);
553 $l->setmetadata("WMS_INCLUDE_ITEMS","all"); 553 $l->setmetadata("WMS_INCLUDE_ITEMS","all");
554 - $l->setmetadata("WFS_INCLUDE_ITEMS","all");  
555 - if($l->getmetadata("ows_metadataurl_href") == ""){ 554 + $l->setmetadata("WFS_INCLUDE_ITEMS","all");
  555 + if($l->getmetadata("ows_metadataurl_href") == ""){
556 $l->setmetadata("ows_metadataurl_href",$c["fonte"]); 556 $l->setmetadata("ows_metadataurl_href",$c["fonte"]);
557 $l->setmetadata("ows_metadataurl_type","TC211"); 557 $l->setmetadata("ows_metadataurl_type","TC211");
558 $l->setmetadata("ows_metadataurl_format","text/html"); 558 $l->setmetadata("ows_metadataurl_format","text/html");
559 - } 559 + }
560 if(file_exists($locaplic."/temas/miniaturas/".$t.".map.mini.png")){ 560 if(file_exists($locaplic."/temas/miniaturas/".$t.".map.mini.png")){
561 $mini = $proto.$server.dirname($_SERVER['PHP_SELF'])."/temas/miniaturas/".$t.".map.mini.png"; 561 $mini = $proto.$server.dirname($_SERVER['PHP_SELF'])."/temas/miniaturas/".$t.".map.mini.png";
562 $l->setmetadata("wms_attribution_logourl_format","image/png"); 562 $l->setmetadata("wms_attribution_logourl_format","image/png");
563 $l->setmetadata("wms_attribution_logourl_height","50"); 563 $l->setmetadata("wms_attribution_logourl_height","50");
564 $l->setmetadata("wms_attribution_logourl_width","50"); 564 $l->setmetadata("wms_attribution_logourl_width","50");
565 $l->setmetadata("wms_attribution_logourl_href",$mini); 565 $l->setmetadata("wms_attribution_logourl_href",$mini);
566 - }  
567 - //  
568 - //numero de pixels que serao considerados para corte da imagem no caso de cache ativo e tema de pontos  
569 - //  
570 - if ($l->getmetadata("cortepixels") != ""){  
571 - $cortePixels = $l->getmetadata("cortepixels");  
572 - } 566 + }
  567 + //
  568 + //numero de pixels que serao considerados para corte da imagem no caso de cache ativo e tema de pontos
  569 + //
  570 + if ($l->getmetadata("cortepixels") != ""){
  571 + $cortePixels = $l->getmetadata("cortepixels");
  572 + }
573 cloneInlineSymbol($l,$nmap,$oMap); 573 cloneInlineSymbol($l,$nmap,$oMap);
574 ms_newLayerObj($oMap, $l); 574 ms_newLayerObj($oMap, $l);
575 } 575 }
@@ -584,104 +584,104 @@ else{ @@ -584,104 +584,104 @@ else{
584 } 584 }
585 } 585 }
586 } 586 }
587 - }  
588 - } 587 + }
  588 + }
589 // 589 //
590 //a imagem do mapa recebera a legenda 590 //a imagem do mapa recebera a legenda
591 // 591 //
592 if((isset($legenda)) && (strtolower($legenda) == "sim")){ 592 if((isset($legenda)) && (strtolower($legenda) == "sim")){
593 $leg = $oMap->legend; 593 $leg = $oMap->legend;
594 $leg->set("status",MS_EMBED); 594 $leg->set("status",MS_EMBED);
595 - }  
596 - $oMap->setSymbolSet($locaplic."/symbols/".basename($oMap->symbolsetfilename));  
597 - $oMap->setFontSet($locaplic."/symbols/".basename($oMap->fontsetfilename));  
598 - //  
599 - //caso seja download ou json ou csv  
600 - //  
601 - processaOutputformatMapfile();  
602 -  
603 - $oMap->save($nomeMapfileTmp);  
604 - $oMap = ms_newMapobj($nomeMapfileTmp);  
605 -} 595 + }
  596 + $oMap->setSymbolSet($locaplic."/symbols/".basename($oMap->symbolsetfilename));
  597 + $oMap->setFontSet($locaplic."/symbols/".basename($oMap->fontsetfilename));
  598 + //
  599 + //caso seja download ou json ou csv
  600 + //
  601 + processaOutputformatMapfile();
  602 +
  603 + $oMap->save($nomeMapfileTmp);
  604 + $oMap = ms_newMapobj($nomeMapfileTmp);
  605 +}
606 if(ob_get_contents ()){ 606 if(ob_get_contents ()){
607 ob_end_clean(); 607 ob_end_clean();
608 -}  
609 -//  
610 -//verifica se a requisicao e do tipo TMS.  
611 -//  
612 -//  
613 -//calcula a extensao geografica com base no x,y,z em requisisoes TMS  
614 -//quando for do tipo tms $_GET["tms"] contem os parametros do tile  
615 -//essa rotina faz um exit ao final  
616 -//o cache tms so fucniona se houver apenas uma camada no mapa  
617 -//tms e usado basicamente por mashup ou openlayers  
618 -//  
619 -if(isset($_GET["tms"])){  
620 - $temp = explode("/",$_GET["tms"]);  
621 - $z = $temp[2];  
622 - $x = $temp[3];  
623 - $y = str_replace(".png","",$temp[4]);  
624 - $n = pow(2,$z+1);  
625 - $lon1 = $x / $n * 360.0 - 180.0;  
626 - $lon2 = ($x+1) / $n * 360.0 - 180.0;  
627 - $n = pow(2,$z);  
628 - $lat1 = $y / $n * 180.0 - 90.0;  
629 - $lat2 = ($y+1) / $n * 180.0 - 90.0;  
630 - //essa funcao termina o processo se a imagem existir  
631 - if($cache == true){  
632 - carregaCacheImagem($cachedir,$nomeMapfileTmp,$_GET["tms"]);  
633 - }  
634 - $layer0 = $oMap->getlayer(0);  
635 - //  
636 - //numero de pixels que serao considerados para corte da imagem no caso de cache ativo e tema de pontos  
637 - //  
638 - if ($layer0->getmetadata("cortepixels") != ""){  
639 - $cortePixels = $layer0->getmetadata("cortepixels");  
640 - }  
641 - //se nao existir, salva a imagem  
642 - //echo $lon1." ".$lat1." ".$lon2." ".$lat2;exit;  
643 - $oMap->setsize(256,256);  
644 -  
645 - $oMap->setExtent($lon1,$lat1,$lon2,$lat2);  
646 -  
647 - $layer0->set("status",MS_DEFAULT);  
648 - //  
649 - //se o layer foi marcado para corte altera os parametros para ampliar o mapa  
650 - //antes de gerar a imagem  
651 - //  
652 - if($cortePixels > 0){  
653 - //$oMap->prepareImage();  
654 - $escalaInicial = $oMap->scaledenom;  
655 - $extensaoInicial = $oMap->extent;  
656 - $wh = 256+($cortePixels*2);  
657 - $oMap->setsize($wh,$wh);  
658 - $ponto = new pointObj();  
659 - $ponto->setxy(($wh/2),($wh/2));  
660 - $oMap->zoomScale($escalaInicial, $ponto, $wh, $wh, $extensaoInicial);  
661 - }  
662 - $img = $oMap->draw();  
663 - if($img->imagepath == ""){  
664 - exit;  
665 - }  
666 - if($cache == true){  
667 - salvaCacheImagem($cachedir,$nomeMapfileTmp,$_GET["tms"]);  
668 - }  
669 - renderNocacheTms();  
670 -} 608 +}
  609 +//
  610 +//verifica se a requisicao e do tipo TMS.
  611 +//
  612 +//
  613 +//calcula a extensao geografica com base no x,y,z em requisisoes TMS
  614 +//quando for do tipo tms $_GET["tms"] contem os parametros do tile
  615 +//essa rotina faz um exit ao final
  616 +//o cache tms so fucniona se houver apenas uma camada no mapa
  617 +//tms e usado basicamente por mashup ou openlayers
  618 +//
  619 +if(isset($_GET["tms"])){
  620 + $temp = explode("/",$_GET["tms"]);
  621 + $z = $temp[2];
  622 + $x = $temp[3];
  623 + $y = str_replace(".png","",$temp[4]);
  624 + $n = pow(2,$z+1);
  625 + $lon1 = $x / $n * 360.0 - 180.0;
  626 + $lon2 = ($x+1) / $n * 360.0 - 180.0;
  627 + $n = pow(2,$z);
  628 + $lat1 = $y / $n * 180.0 - 90.0;
  629 + $lat2 = ($y+1) / $n * 180.0 - 90.0;
  630 + //essa funcao termina o processo se a imagem existir
  631 + if($cache == true){
  632 + carregaCacheImagem($cachedir,$nomeMapfileTmp,$_GET["tms"]);
  633 + }
  634 + $layer0 = $oMap->getlayer(0);
  635 + //
  636 + //numero de pixels que serao considerados para corte da imagem no caso de cache ativo e tema de pontos
  637 + //
  638 + if ($layer0->getmetadata("cortepixels") != ""){
  639 + $cortePixels = $layer0->getmetadata("cortepixels");
  640 + }
  641 + //se nao existir, salva a imagem
  642 + //echo $lon1." ".$lat1." ".$lon2." ".$lat2;exit;
  643 + $oMap->setsize(256,256);
  644 +
  645 + $oMap->setExtent($lon1,$lat1,$lon2,$lat2);
  646 +
  647 + $layer0->set("status",MS_DEFAULT);
  648 + //
  649 + //se o layer foi marcado para corte altera os parametros para ampliar o mapa
  650 + //antes de gerar a imagem
  651 + //
  652 + if($cortePixels > 0){
  653 + //$oMap->prepareImage();
  654 + $escalaInicial = $oMap->scaledenom;
  655 + $extensaoInicial = $oMap->extent;
  656 + $wh = 256+($cortePixels*2);
  657 + $oMap->setsize($wh,$wh);
  658 + $ponto = new pointObj();
  659 + $ponto->setxy(($wh/2),($wh/2));
  660 + $oMap->zoomScale($escalaInicial, $ponto, $wh, $wh, $extensaoInicial);
  661 + }
  662 + $img = $oMap->draw();
  663 + if($img->imagepath == ""){
  664 + exit;
  665 + }
  666 + if($cache == true){
  667 + salvaCacheImagem($cachedir,$nomeMapfileTmp,$_GET["tms"]);
  668 + }
  669 + renderNocacheTms();
  670 +}
671 // 671 //
672 //verifica se a chamada do servico e do tipo TILE no padrao do Google 672 //verifica se a chamada do servico e do tipo TILE no padrao do Google
673 // 673 //
674 -if(isset($_GET["Z"]) && isset($_GET["X"])){ 674 +if(isset($_GET["Z"]) && isset($_GET["X"])){
675 $x = $_GET["X"]; 675 $x = $_GET["X"];
676 $y = $_GET["Y"]; 676 $y = $_GET["Y"];
677 $z = $_GET["Z"]; 677 $z = $_GET["Z"];
678 - $layer0 = $oMap->getlayer(0);  
679 - //  
680 - //numero de pixels que serao considerados para corte da imagem no caso de cache ativo e tema de pontos  
681 - //  
682 - if ($layer0->getmetadata("cortepixels") != ""){  
683 - $cortePixels = $layer0->getmetadata("cortepixels");  
684 - } 678 + $layer0 = $oMap->getlayer(0);
  679 + //
  680 + //numero de pixels que serao considerados para corte da imagem no caso de cache ativo e tema de pontos
  681 + //
  682 + if ($layer0->getmetadata("cortepixels") != ""){
  683 + $cortePixels = $layer0->getmetadata("cortepixels");
  684 + }
685 if($cache == true){ 685 if($cache == true){
686 carregaCacheImagem($cachedir,$nomeMapfileTmp,"/googlemaps/$layer0->name/$z/$x/$y"); 686 carregaCacheImagem($cachedir,$nomeMapfileTmp,"/googlemaps/$layer0->name/$z/$x/$y");
687 } 687 }
@@ -703,40 +703,40 @@ if(isset($_GET[&quot;Z&quot;]) &amp;&amp; isset($_GET[&quot;X&quot;])){ @@ -703,40 +703,40 @@ if(isset($_GET[&quot;Z&quot;]) &amp;&amp; isset($_GET[&quot;X&quot;])){
703 $poPoint1->project($projInObj, $projOutObj); 703 $poPoint1->project($projInObj, $projOutObj);
704 $poPoint2 = ms_newpointobj(); 704 $poPoint2 = ms_newpointobj();
705 $poPoint2->setXY($lon2, $lat2); 705 $poPoint2->setXY($lon2, $lat2);
706 - $poPoint2->project($projInObj, $projOutObj);  
707 - $oMap->setsize(256,256); 706 + $poPoint2->project($projInObj, $projOutObj);
  707 + $oMap->setsize(256,256);
708 $oMap->setExtent($poPoint1->x,$poPoint1->y,$poPoint2->x,$poPoint2->y); 708 $oMap->setExtent($poPoint1->x,$poPoint1->y,$poPoint2->x,$poPoint2->y);
709 709
710 - $oMap->getlayer(0)->set("status",MS_DEFAULT);  
711 - $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");  
712 - $layer0->setProjection("proj=latlong,a=6378137,b=6378137");  
713 - //  
714 - //se o layer foi marcado para corte altera os parametros para ampliar o mapa  
715 - //antes de gerar a imagem  
716 - //  
717 - if($cortePixels > 0){  
718 - //$oMap->prepareImage();  
719 - $escalaInicial = $oMap->scaledenom;  
720 - $extensaoInicial = $oMap->extent;  
721 - $wh = 256+($cortePixels*2);  
722 - $oMap->setsize($wh,$wh);  
723 - $ponto = new pointObj();  
724 - $ponto->setxy(($wh/2),($wh/2));  
725 - $oMap->zoomScale($escalaInicial, $ponto, $wh, $wh, $extensaoInicial);  
726 - } 710 + $oMap->getlayer(0)->set("status",MS_DEFAULT);
  711 + $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");
  712 + $layer0->setProjection("proj=latlong,a=6378137,b=6378137");
  713 + //
  714 + //se o layer foi marcado para corte altera os parametros para ampliar o mapa
  715 + //antes de gerar a imagem
  716 + //
  717 + if($cortePixels > 0){
  718 + //$oMap->prepareImage();
  719 + $escalaInicial = $oMap->scaledenom;
  720 + $extensaoInicial = $oMap->extent;
  721 + $wh = 256+($cortePixels*2);
  722 + $oMap->setsize($wh,$wh);
  723 + $ponto = new pointObj();
  724 + $ponto->setxy(($wh/2),($wh/2));
  725 + $oMap->zoomScale($escalaInicial, $ponto, $wh, $wh, $extensaoInicial);
  726 + }
727 $img = $oMap->draw(); 727 $img = $oMap->draw();
728 if($img->imagepath == ""){ 728 if($img->imagepath == ""){
729 exit; 729 exit;
730 - } 730 + }
731 if($cache == true){ 731 if($cache == true){
732 - salvaCacheImagem($cachedir,$nomeMapfileTmp,"/googlemaps/$layer0->name/$z/$x/$y");  
733 - }  
734 - renderNocacheTms();  
735 -}  
736 -if(strtolower($req->getValueByName("REQUEST")) == "getlegendgraphic"){  
737 - $l = $oMap->getlayer(0);  
738 - if($req->getValueByName("LAYER") == ""){  
739 - $req->setParameter("LAYER",$l->name); 732 + salvaCacheImagem($cachedir,$nomeMapfileTmp,"/googlemaps/$layer0->name/$z/$x/$y");
  733 + }
  734 + renderNocacheTms();
  735 +}
  736 +if(strtolower($req->getValueByName("REQUEST")) == "getlegendgraphic"){
  737 + $l = $oMap->getlayer(0);
  738 + if($req->getValueByName("LAYER") == ""){
  739 + $req->setParameter("LAYER",$l->name);
740 } 740 }
741 //muda o title se for vazio 741 //muda o title se for vazio
742 $nclass = $l->numclasses; 742 $nclass = $l->numclasses;
@@ -745,29 +745,29 @@ if(strtolower($req-&gt;getValueByName(&quot;REQUEST&quot;)) == &quot;getlegendgraphic&quot;){ @@ -745,29 +745,29 @@ if(strtolower($req-&gt;getValueByName(&quot;REQUEST&quot;)) == &quot;getlegendgraphic&quot;){
745 if($classe->title === ""){ 745 if($classe->title === ""){
746 $classe->title = $classe->name; 746 $classe->title = $classe->name;
747 } 747 }
748 - } 748 + }
749 if($req->getValueByName("FORMAT") == ""){ 749 if($req->getValueByName("FORMAT") == ""){
750 $req->setParameter("FORMAT","image/png"); 750 $req->setParameter("FORMAT","image/png");
751 } 751 }
752 - $legenda = $oMap->legend;  
753 - $legenda->set("status",MS_ON);  
754 - $l->set("minscaledenom",0); 752 + $legenda = $oMap->legend;
  753 + $legenda->set("status",MS_ON);
  754 + $l->set("minscaledenom",0);
755 $l->set("maxscaledenom",0); 755 $l->set("maxscaledenom",0);
756 if($req->getValueByName("FORMAT") == "text/html"){ 756 if($req->getValueByName("FORMAT") == "text/html"){
757 //$req->setParameter("FORMAT","image/png"); 757 //$req->setParameter("FORMAT","image/png");
758 $l = $oMap->getlayerbyname($req->getValueByName("LAYER")); 758 $l = $oMap->getlayerbyname($req->getValueByName("LAYER"));
759 - $l->set("status",MS_DEFAULT);  
760 - //remove offset de simbolos pontuais  
761 - $nclass = $l->numclasses;  
762 - for($cc = 0; $cc < $nclass; $cc++){  
763 - $classe = $l->getclass($cc);  
764 - if($classe->numstyles > 0){  
765 - $estilo = $classe->getstyle(0);  
766 - if($estilo->symbolname != "" && file_exists($estilo->symbolname)){  
767 - $estilo->set("offsetx",0);  
768 - $estilo->set("offsety",0);  
769 - }  
770 - } 759 + $l->set("status",MS_DEFAULT);
  760 + //remove offset de simbolos pontuais
  761 + $nclass = $l->numclasses;
  762 + for($cc = 0; $cc < $nclass; $cc++){
  763 + $classe = $l->getclass($cc);
  764 + if($classe->numstyles > 0){
  765 + $estilo = $classe->getstyle(0);
  766 + if($estilo->symbolname != "" && file_exists($estilo->symbolname)){
  767 + $estilo->set("offsetx",0);
  768 + $estilo->set("offsety",0);
  769 + }
  770 + }
771 } 771 }
772 $legenda->set("template",$locaplic."/aplicmap/legendaOgc.html"); 772 $legenda->set("template",$locaplic."/aplicmap/legendaOgc.html");
773 $tmparray["my_tag"] = "value_of_my_tag"; 773 $tmparray["my_tag"] = "value_of_my_tag";
@@ -775,62 +775,62 @@ if(strtolower($req-&gt;getValueByName(&quot;REQUEST&quot;)) == &quot;getlegendgraphic&quot;){ @@ -775,62 +775,62 @@ if(strtolower($req-&gt;getValueByName(&quot;REQUEST&quot;)) == &quot;getlegendgraphic&quot;){
775 if (function_exists("mb_convert_encoding")){ 775 if (function_exists("mb_convert_encoding")){
776 $leg = mb_convert_encoding($leg,"UTF-8","ISO-8859-1"); 776 $leg = mb_convert_encoding($leg,"UTF-8","ISO-8859-1");
777 } 777 }
778 - echo $leg; 778 + echo $leg;
779 exit; 779 exit;
780 } 780 }
781 - }  
782 -} 781 + }
  782 +}
783 if(strtolower($req->getValueByName("REQUEST")) == "getfeature"){ 783 if(strtolower($req->getValueByName("REQUEST")) == "getfeature"){
784 $l = $oMap->getlayer(0); 784 $l = $oMap->getlayer(0);
785 if($req->getValueByName("TYPENAME") == "" || $req->getValueByName("TYPENAME") == "undefined"){ 785 if($req->getValueByName("TYPENAME") == "" || $req->getValueByName("TYPENAME") == "undefined"){
786 $req->setParameter("TYPENAME",$l->name); 786 $req->setParameter("TYPENAME",$l->name);
787 - }  
788 - if($l->getProjection() == "" ){  
789 - $l->setProjection("proj=latlong,a=6378137,b=6378137");  
790 - }  
791 - if(strtolower($req->getValueByName("SRS")) == "epsg:900913"){  
792 - $req->setParameter("SRS","EPSG:3857");  
793 } 787 }
794 -}  
795 -if(strtolower($req->getValueByName("REQUEST")) == "getfeatureinfo"){  
796 - $l = $oMap->getlayer(0);  
797 - $req->setParameter("LAYERS",$l->name);  
798 - $req->setParameter("QUERY_LAYERS",$l->name);  
799 - if(strtolower($req->getValueByName("SRS")) == "epsg:900913"){  
800 - $req->setParameter("SRS","EPSG:3857");  
801 - $_GET["SRS"] = "EPSG:3857";  
802 - }  
803 -}  
804 -  
805 -ms_ioinstallstdouttobuffer();  
806 -//  
807 -//verifica parametro outputformat e ajusta a requisicao  
808 -//  
809 -if(strtolower($req->getValueByName("REQUEST")) == "getmap" && $req->getValueByName("format") == ""){  
810 - $req->setParameter("format","image/png");  
811 -} 788 + if($l->getProjection() == "" ){
  789 + $l->setProjection("proj=latlong,a=6378137,b=6378137");
  790 + }
  791 + if(strtolower($req->getValueByName("SRS")) == "epsg:900913"){
  792 + $req->setParameter("SRS","EPSG:3857");
  793 + }
  794 +}
  795 +if(strtolower($req->getValueByName("REQUEST")) == "getfeatureinfo"){
  796 + $l = $oMap->getlayer(0);
  797 + $req->setParameter("LAYERS",$l->name);
  798 + $req->setParameter("QUERY_LAYERS",$l->name);
  799 + if(strtolower($req->getValueByName("SRS")) == "epsg:900913"){
  800 + $req->setParameter("SRS","EPSG:3857");
  801 + $_GET["SRS"] = "EPSG:3857";
  802 + }
  803 +}
  804 +
  805 +ms_ioinstallstdouttobuffer();
  806 +//
  807 +//verifica parametro outputformat e ajusta a requisicao
  808 +//
  809 +if(strtolower($req->getValueByName("REQUEST")) == "getmap" && $req->getValueByName("format") == ""){
  810 + $req->setParameter("format","image/png");
  811 +}
812 if(strtolower($req->getValueByName("REQUEST")) == "getfeatureinfo" && $_GET["info_format"] == "text/xml"){ 812 if(strtolower($req->getValueByName("REQUEST")) == "getfeatureinfo" && $_GET["info_format"] == "text/xml"){
813 - $req->setParameter("info_format","application/vnd.ogc.gml");  
814 -}  
815 -//json conforme cesium 813 + $req->setParameter("info_format","application/vnd.ogc.gml");
  814 +}
  815 +//json conforme cesium
816 if(strtolower($req->getValueByName("REQUEST")) == "getfeatureinfo" && $_GET["info_format"] == "application/json"){ 816 if(strtolower($req->getValueByName("REQUEST")) == "getfeatureinfo" && $_GET["info_format"] == "application/json"){
817 - getfeatureinfoJson(); 817 + getfeatureinfoJson();
818 exit; 818 exit;
819 -}  
820 -$oMap->owsdispatch($req); 819 +}
  820 +$oMap->owsdispatch($req);
821 821
822 -$contenttype = ms_iostripstdoutbuffercontenttype();  
823 -  
824 -if(strtolower($request) == "getcapabilities"){  
825 - header('Content-Disposition: attachment; filename=getcapabilities.xml'); 822 +$contenttype = ms_iostripstdoutbuffercontenttype();
  823 +
  824 +if(strtolower($request) == "getcapabilities"){
  825 + header('Content-Disposition: attachment; filename=getcapabilities.xml');
826 } 826 }
827 - 827 +
828 if(!isset($OUTPUTFORMAT)){ 828 if(!isset($OUTPUTFORMAT)){
829 header("Content-type: $contenttype"); 829 header("Content-type: $contenttype");
830 -}  
831 -  
832 -//precisa limpar o cabecalho  
833 -if(strtolower($OUTPUTFORMAT) == "geojson" || strtolower($OUTPUTFORMAT) == "json"){ 830 +}
  831 +
  832 +//precisa limpar o cabecalho
  833 +if(strtolower($OUTPUTFORMAT) == "geojson" || strtolower($OUTPUTFORMAT) == "json"){
834 ms_iostripstdoutbuffercontentheaders(); 834 ms_iostripstdoutbuffercontentheaders();
835 //grava em disco 835 //grava em disco
836 $arq = $dir_tmp."/".$tema.".json"; 836 $arq = $dir_tmp."/".$tema.".json";
@@ -841,31 +841,32 @@ if(strtolower($OUTPUTFORMAT) == &quot;geojson&quot; || strtolower($OUTPUTFORMAT) == &quot;json&quot; @@ -841,31 +841,32 @@ if(strtolower($OUTPUTFORMAT) == &quot;geojson&quot; || strtolower($OUTPUTFORMAT) == &quot;json&quot;
841 ms_iogetStdoutBufferBytes(); 841 ms_iogetStdoutBufferBytes();
842 ms_ioresethandlers(); 842 ms_ioresethandlers();
843 exit; 843 exit;
844 -}  
845 -if(strtolower($OUTPUTFORMAT) == "shape-zip"){  
846 - //grava em disco 844 +}
  845 +if(strtolower($OUTPUTFORMAT) == "shape-zip"){
  846 + //grava em disco
847 $arq = $dir_tmp."/".$tema."_shapefile.zip"; 847 $arq = $dir_tmp."/".$tema."_shapefile.zip";
848 - $contents = ms_iogetstdoutbufferstring();  
849 - file_put_contents($arq,$contents);  
850 - //envia para download  
851 - header('Content-Disposition: attachment; filename='.$tema.'_shapefile.zip');  
852 - ms_iogetStdoutBufferBytes();  
853 - ms_ioresethandlers(); 848 + $contents = ms_iogetstdoutbufferstring();
  849 + file_put_contents($arq,$contents);
  850 + //envia para download
  851 + header('Content-Disposition: attachment; filename='.$tema.'_shapefile.zip');
  852 + ms_iogetStdoutBufferBytes();
  853 + ms_ioresethandlers();
854 exit; 854 exit;
855 } 855 }
856 -if(strtolower($OUTPUTFORMAT) == "csv"){ 856 +if(strtolower($OUTPUTFORMAT) == "csv"){
  857 + ms_iostripstdoutbuffercontentheaders();
857 //grava em disco 858 //grava em disco
858 - $arq = $dir_tmp."/".$tema.".csv"; 859 + $arq = $dir_tmp."/".$tema.$ows_geomtype.".csv";
859 $contents = ms_iogetstdoutbufferstring(); 860 $contents = ms_iogetstdoutbufferstring();
860 file_put_contents($arq,$contents); 861 file_put_contents($arq,$contents);
861 //envia para download 862 //envia para download
862 - header('Content-Disposition: attachment; filename='.$tema.'.csv'); 863 + header('Content-Disposition: attachment; filename='.$tema.$ows_geomtype.'.csv');
863 header("Content-type: text/csv"); 864 header("Content-type: text/csv");
864 ms_iogetStdoutBufferBytes(); 865 ms_iogetStdoutBufferBytes();
865 ms_ioresethandlers(); 866 ms_ioresethandlers();
866 exit; 867 exit;
867 } 868 }
868 -$buffer = ms_iogetStdoutBufferBytes(); 869 +$buffer = ms_iogetStdoutBufferBytes();
869 870
870 ms_ioresethandlers(); 871 ms_ioresethandlers();
871 // 872 //
@@ -873,13 +874,13 @@ ms_ioresethandlers(); @@ -873,13 +874,13 @@ ms_ioresethandlers();
873 // 874 //
874 function ogc_pegaListaDeMenus(){ 875 function ogc_pegaListaDeMenus(){
875 global $perfil,$locaplic,$urli3geo; 876 global $perfil,$locaplic,$urli3geo;
876 - if(!isset($perfil)){  
877 - $perfil = ""; 877 + if(!isset($perfil)){
  878 + $perfil = "";
878 } 879 }
879 $m = new Menutemas("",$perfil,$locsistemas,$locaplic,"",$urli3geo); 880 $m = new Menutemas("",$perfil,$locsistemas,$locaplic,"",$urli3geo);
880 foreach($m->pegaListaDeMenus() as $menu) 881 foreach($m->pegaListaDeMenus() as $menu)
881 - {  
882 - $menus[] = $urli3geo."/admin/xmlmenutemas.php?id_menu=".$menu["idmenu"]; 882 + {
  883 + $menus[] = $urli3geo."/admin/xmlmenutemas.php?id_menu=".$menu["idmenu"];
883 } 884 }
884 return $menus; 885 return $menus;
885 } 886 }
@@ -891,11 +892,11 @@ function ogc_imprimeAjuda(){ @@ -891,11 +892,11 @@ function ogc_imprimeAjuda(){
891 echo "ogc.php?lista=temas - para listar os temas dispon&iacute;veis<br>"; 892 echo "ogc.php?lista=temas - para listar os temas dispon&iacute;veis<br>";
892 echo "Para usar esse web service voce pode usar o parametro &tema=,<br>"; 893 echo "Para usar esse web service voce pode usar o parametro &tema=,<br>";
893 echo "ou seja,http://[host]/i3geo/ogc.php?tema=[codigo do tema]<br>"; 894 echo "ou seja,http://[host]/i3geo/ogc.php?tema=[codigo do tema]<br>";
894 - echo "no lugar do codigo pode ser especificado um arquivo mapfile qualquer. "; 895 + echo "no lugar do codigo pode ser especificado um arquivo mapfile qualquer. ";
895 echo "Nesse caso, deve ser digitado o caminho completo no servidor<br><br>"; 896 echo "Nesse caso, deve ser digitado o caminho completo no servidor<br><br>";
896 echo "Utilize o sistema de administracao do i3Geo para configurar quais os temas da pasta i3geo/temas podem ser utilizados.<br><br>"; 897 echo "Utilize o sistema de administracao do i3Geo para configurar quais os temas da pasta i3geo/temas podem ser utilizados.<br><br>";
897 - echo "Utilize o parametro restauramapa para indicar o ID de um mapa salvo no banco <br>";  
898 - echo "de dados de administracao para utiliza-lo como um WMS"; 898 + echo "Utilize o parametro restauramapa para indicar o ID de um mapa salvo no banco <br>";
  899 + echo "de dados de administracao para utiliza-lo como um WMS";
899 } 900 }
900 function ogc_imprimeListaDeTemas(){ 901 function ogc_imprimeListaDeTemas(){
901 global $urli3geo,$perfil,$locaplic; 902 global $urli3geo,$perfil,$locaplic;
@@ -969,52 +970,52 @@ function ogc_imprimeListaDeTemasWfs(){ @@ -969,52 +970,52 @@ function ogc_imprimeListaDeTemasWfs(){
969 } 970 }
970 echo $imprimir."</body></html>"; 971 echo $imprimir."</body></html>";
971 } 972 }
972 -function carregaCacheImagem($cachedir,$map,$tms){  
973 - global $dir_tmp;  
974 - if($cachedir == ""){  
975 - $nome = $dir_tmp."/cache".$tms;  
976 - }  
977 - else{  
978 - $nome = $cachedir.$tms;  
979 - }  
980 - if(file_exists($nome)){  
981 - header('Content-Length: '.filesize($nome));  
982 - header('Content-Type: image/png');  
983 - header('Cache-Control: max-age=3600, must-revalidate');  
984 - header('Expires: ' . gmdate('D, d M Y H:i:s', time()+24*60*60) . ' GMT');  
985 - header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($nome)).' GMT', true, 200);  
986 - $etag = md5_file($nome);  
987 - header('Etag: '.$etag);  
988 - readfile($nome);  
989 - exit;  
990 - }  
991 -} 973 +function carregaCacheImagem($cachedir,$map,$tms){
  974 + global $dir_tmp;
  975 + if($cachedir == ""){
  976 + $nome = $dir_tmp."/cache".$tms;
  977 + }
  978 + else{
  979 + $nome = $cachedir.$tms;
  980 + }
  981 + if(file_exists($nome)){
  982 + header('Content-Length: '.filesize($nome));
  983 + header('Content-Type: image/png');
  984 + header('Cache-Control: max-age=3600, must-revalidate');
  985 + header('Expires: ' . gmdate('D, d M Y H:i:s', time()+24*60*60) . ' GMT');
  986 + header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($nome)).' GMT', true, 200);
  987 + $etag = md5_file($nome);
  988 + header('Etag: '.$etag);
  989 + readfile($nome);
  990 + exit;
  991 + }
  992 +}
992 function salvaCacheImagem($cachedir,$map,$tms){ 993 function salvaCacheImagem($cachedir,$map,$tms){
993 - global $img,$dir_tmp,$cortePixels; 994 + global $img,$dir_tmp,$cortePixels;
994 if($cachedir == ""){ 995 if($cachedir == ""){
995 $nome = $dir_tmp."/cache".$tms; 996 $nome = $dir_tmp."/cache".$tms;
996 } 997 }
997 else{ 998 else{
998 $nome = $cachedir.$tms; 999 $nome = $cachedir.$tms;
999 - } 1000 + }
1000 @mkdir(dirname($nome),0777,true); 1001 @mkdir(dirname($nome),0777,true);
1001 - chmod(dirname($nome),0777); 1002 + chmod(dirname($nome),0777);
1002 $img->saveImage($nome); 1003 $img->saveImage($nome);
1003 - //  
1004 - //corta a imagem gerada para voltar ao tamanho normal  
1005 - //  
1006 - if($cortePixels > 0){  
1007 - $img = imagecreatefrompng($nome);  
1008 - $imgc = imagecreate(256,256);  
1009 -  
1010 - imagesavealpha($imgc, true);  
1011 - // Fill the image with transparent color  
1012 - $color = imagecolorallocatealpha($imgc,0x00,0x00,0x00,127);  
1013 - imagefill($imgc, 0, 0, $color);  
1014 -  
1015 - imagecopy($imgc, $img, 0 , 0 , $cortePixels , $cortePixels , 256, 256);  
1016 - imagepng($imgc,$nome);  
1017 - } 1004 + //
  1005 + //corta a imagem gerada para voltar ao tamanho normal
  1006 + //
  1007 + if($cortePixels > 0){
  1008 + $img = imagecreatefrompng($nome);
  1009 + $imgc = imagecreate(256,256);
  1010 +
  1011 + imagesavealpha($imgc, true);
  1012 + // Fill the image with transparent color
  1013 + $color = imagecolorallocatealpha($imgc,0x00,0x00,0x00,127);
  1014 + imagefill($imgc, 0, 0, $color);
  1015 +
  1016 + imagecopy($imgc, $img, 0 , 0 , $cortePixels , $cortePixels , 256, 256);
  1017 + imagepng($imgc,$nome);
  1018 + }
1018 chmod($nome,0777); 1019 chmod($nome,0777);
1019 header('Content-Length: '.filesize($nome)); 1020 header('Content-Length: '.filesize($nome));
1020 header('Content-Type: image/png'); 1021 header('Content-Type: image/png');
@@ -1023,55 +1024,54 @@ function salvaCacheImagem($cachedir,$map,$tms){ @@ -1023,55 +1024,54 @@ function salvaCacheImagem($cachedir,$map,$tms){
1023 header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($nome)).' GMT', true, 200); 1024 header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($nome)).' GMT', true, 200);
1024 readfile($nome); 1025 readfile($nome);
1025 exit; 1026 exit;
1026 -}  
1027 -function texto2iso($texto){  
1028 - if (function_exists("mb_convert_encoding")){  
1029 - if (mb_detect_encoding($texto,"UTF-8",true)){  
1030 - $texto = mb_convert_encoding($texto,"ISO-8859-1","UTF-8");  
1031 - }  
1032 - }  
1033 - return $texto;  
1034 -} 1027 +}
  1028 +function texto2iso($texto){
  1029 + if (function_exists("mb_convert_encoding")){
  1030 + if (mb_detect_encoding($texto,"UTF-8",true)){
  1031 + $texto = mb_convert_encoding($texto,"ISO-8859-1","UTF-8");
  1032 + }
  1033 + }
  1034 + return $texto;
  1035 +}
1035 function nomeRand($n=10) 1036 function nomeRand($n=10)
1036 { 1037 {
1037 $nomes = ""; 1038 $nomes = "";
1038 $a = 'azertyuiopqsdfghjklmwxcvbnABCDEFGHIJKLMNOPQRSTUVWXYZ'; 1039 $a = 'azertyuiopqsdfghjklmwxcvbnABCDEFGHIJKLMNOPQRSTUVWXYZ';
1039 $max = 51; 1040 $max = 51;
1040 for($i=0; $i < $n; ++$i) 1041 for($i=0; $i < $n; ++$i)
1041 - {  
1042 - $nomes .= $a{mt_rand(0, $max)}; 1042 + {
  1043 + $nomes .= $a{mt_rand(0, $max)};
1043 } 1044 }
1044 return $nomes; 1045 return $nomes;
1045 -}  
1046 -function renderNocacheTms(){  
1047 - global $img,$i3georendermode,$dir_tmp,$cortePixels;  
1048 - if($i3georendermode == 1 && $cortePixels == 0){  
1049 - ob_clean();  
1050 - header('Content-Type: image/png');  
1051 - $img->saveImage();  
1052 - exit;  
1053 - }  
1054 - if($i3georendermode == 1 && $cortePixels > 0){  
1055 - $i3georendermode = 0;  
1056 - }  
1057 - $nomer = $dir_tmp."/temp".nomeRand().".png";  
1058 - $img->saveImage($nomer);  
1059 - //  
1060 - //corta a imagem gerada para voltar ao tamanho normal  
1061 - //  
1062 - if($cortePixels > 0){  
1063 - $img = imagecreatefrompng($nomer);  
1064 - $imgc = imagecreate(256,256);  
1065 - imagecopy( $imgc, $img, 0 , 0 , $cortePixels , $cortePixels , 256, 256 );  
1066 - imagepng($imgc,$nomer);  
1067 - }  
1068 - if($i3georendermode == 0 || !isset($i3georendermode)){  
1069 -  
1070 - header('Content-Length: '.filesize($nomer));  
1071 - header('Content-Type: image/png');  
1072 - header('Cache-Control: max-age=3600, must-revalidate');  
1073 - header('Expires: ' . gmdate('D, d M Y H:i:s', time()+24*60*60) . ' GMT');  
1074 - header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($nomer)).' GMT', true, 200); 1046 +}
  1047 +function renderNocacheTms(){
  1048 + global $img,$i3georendermode,$dir_tmp,$cortePixels;
  1049 + if($i3georendermode == 1 && $cortePixels == 0){
  1050 + ob_clean();
  1051 + header('Content-Type: image/png');
  1052 + $img->saveImage();
  1053 + exit;
  1054 + }
  1055 + if($i3georendermode == 1 && $cortePixels > 0){
  1056 + $i3georendermode = 0;
  1057 + }
  1058 + $nomer = $dir_tmp."/temp".nomeRand().".png";
  1059 + $img->saveImage($nomer);
  1060 + //
  1061 + //corta a imagem gerada para voltar ao tamanho normal
  1062 + //
  1063 + if($cortePixels > 0){
  1064 + $img = imagecreatefrompng($nomer);
  1065 + $imgc = imagecreate(256,256);
  1066 + imagecopy( $imgc, $img, 0 , 0 , $cortePixels , $cortePixels , 256, 256 );
  1067 + imagepng($imgc,$nomer);
  1068 + }
  1069 + if($i3georendermode == 0 || !isset($i3georendermode)){
  1070 + header('Content-Length: '.filesize($nomer));
  1071 + header('Content-Type: image/png');
  1072 + header('Cache-Control: max-age=3600, must-revalidate');
  1073 + header('Expires: ' . gmdate('D, d M Y H:i:s', time()+24*60*60) . ' GMT');
  1074 + header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($nomer)).' GMT', true, 200);
1075 readfile($nomer); 1075 readfile($nomer);
1076 } 1076 }
1077 if($i3georendermode == 2){ 1077 if($i3georendermode == 2){
@@ -1080,10 +1080,10 @@ function renderNocacheTms(){ @@ -1080,10 +1080,10 @@ function renderNocacheTms(){
1080 header('Expires: ' . gmdate('D, d M Y H:i:s', time()+48*60*60) . ' GMT'); 1080 header('Expires: ' . gmdate('D, d M Y H:i:s', time()+48*60*60) . ' GMT');
1081 header("X-Sendfile: $nomer"); 1081 header("X-Sendfile: $nomer");
1082 header("Content-type: image/png"); 1082 header("Content-type: image/png");
1083 - }  
1084 -}  
1085 -function getfeatureinfoJson(){  
1086 - global $req, $oMap; 1083 + }
  1084 +}
  1085 +function getfeatureinfoJson(){
  1086 + global $req, $oMap;
1087 $req->setParameter("info_format","application/vnd.ogc.gml"); 1087 $req->setParameter("info_format","application/vnd.ogc.gml");
1088 $oMap->owsdispatch($req); 1088 $oMap->owsdispatch($req);
1089 ms_iostripstdoutbuffercontentheaders(); 1089 ms_iostripstdoutbuffercontentheaders();
@@ -1125,10 +1125,10 @@ function getfeatureinfoJson(){ @@ -1125,10 +1125,10 @@ function getfeatureinfoJson(){
1125 for($i = 0; $i < $n; $i++){ 1125 for($i = 0; $i < $n; $i++){
1126 $json = str_ireplace($itens[$i],$itensdesc[$i],$json); 1126 $json = str_ireplace($itens[$i],$itensdesc[$i],$json);
1127 } 1127 }
1128 - echo $json;  
1129 -}  
1130 -function processaOutputformatMapfile(){  
1131 - global $OUTPUTFORMAT, $oMap, $tema; 1128 + echo $json;
  1129 +}
  1130 +function processaOutputformatMapfile(){
  1131 + global $OUTPUTFORMAT, $oMap, $tema, $ows_geomtype;
1132 if(strtolower($OUTPUTFORMAT) == "shape-zip"){ 1132 if(strtolower($OUTPUTFORMAT) == "shape-zip"){
1133 $l = $oMap->getlayer(0); 1133 $l = $oMap->getlayer(0);
1134 $n = $l->name; 1134 $n = $l->name;
@@ -1143,18 +1143,21 @@ function processaOutputformatMapfile(){ @@ -1143,18 +1143,21 @@ function processaOutputformatMapfile(){
1143 $n = $l->name."-csv"; 1143 $n = $l->name."-csv";
1144 $oMap->selectOutputFormat("csv"); 1144 $oMap->selectOutputFormat("csv");
1145 $oMap->outputformat->setOption("STORAGE", "filesystem"); 1145 $oMap->outputformat->setOption("STORAGE", "filesystem");
1146 - $oMap->outputformat->setOption("FILENAME", $tema.".csv"); 1146 + $oMap->outputformat->setOption("FILENAME", $tema.$ows_geomtype.".csv");
1147 $oMap->outputformat->setOption("FORM", "simple"); 1147 $oMap->outputformat->setOption("FORM", "simple");
  1148 + if(isset($ows_geomtype) && $ows_geomtype != ""){
  1149 + $oMap->outputformat->setOption("LCO:GEOMETRY", $ows_geomtype);
  1150 + }
1148 $l->setmetadata("wfs_getfeature_formatlist","csv"); 1151 $l->setmetadata("wfs_getfeature_formatlist","csv");
1149 } 1152 }
1150 if(strtolower($OUTPUTFORMAT) == "geojson" || strtolower($OUTPUTFORMAT) == "json"){ 1153 if(strtolower($OUTPUTFORMAT) == "geojson" || strtolower($OUTPUTFORMAT) == "json"){
1151 $l = $oMap->getlayer(0); 1154 $l = $oMap->getlayer(0);
1152 $oMap->selectOutputFormat("geojson"); 1155 $oMap->selectOutputFormat("geojson");
1153 $l->setmetadata("wfs_getfeature_formatlist","geojson"); 1156 $l->setmetadata("wfs_getfeature_formatlist","geojson");
1154 - }  
1155 -} 1157 + }
  1158 +}
1156 function carregaCacheArquivo(){ 1159 function carregaCacheArquivo(){
1157 - global $dir_tmp, $tema, $OUTPUTFORMAT; 1160 + global $dir_tmp, $tema, $OUTPUTFORMAT, $ows_geomtype;
1158 if(strtolower($OUTPUTFORMAT) == "shape-zip"){ 1161 if(strtolower($OUTPUTFORMAT) == "shape-zip"){
1159 $arq = $dir_tmp."/".$tema."_shapefile.zip"; 1162 $arq = $dir_tmp."/".$tema."_shapefile.zip";
1160 if(file_exists($arq)){ 1163 if(file_exists($arq)){
@@ -1164,9 +1167,9 @@ function carregaCacheArquivo(){ @@ -1164,9 +1167,9 @@ function carregaCacheArquivo(){
1164 } 1167 }
1165 } 1168 }
1166 if(strtolower($OUTPUTFORMAT) == "csv"){ 1169 if(strtolower($OUTPUTFORMAT) == "csv"){
1167 - $arq = $dir_tmp."/".$tema.".csv"; 1170 + $arq = $dir_tmp."/".$tema.$ows_geomtype.".csv";
1168 if(file_exists($arq)){ 1171 if(file_exists($arq)){
1169 - header('Content-Disposition: attachment; filename='.$tema.'.csv'); 1172 + header('Content-Disposition: attachment; filename='.$tema.$ows_geomtype.'.csv');
1170 header("Content-type: text/csv"); 1173 header("Content-type: text/csv");
1171 readfile($arq); 1174 readfile($arq);
1172 exit; 1175 exit;
@@ -1180,9 +1183,9 @@ function carregaCacheArquivo(){ @@ -1180,9 +1183,9 @@ function carregaCacheArquivo(){
1180 exit; 1183 exit;
1181 } 1184 }
1182 } 1185 }
1183 -}  
1184 -function restauraMapaSalvo(){  
1185 - global $restauramapa, $dir_tmp, $tema; 1186 +}
  1187 +function restauraMapaSalvo(){
  1188 + global $restauramapa, $dir_tmp, $tema;
1186 $xbase = restauraMapaAdmin($restauramapa,$dir_tmp); 1189 $xbase = restauraMapaAdmin($restauramapa,$dir_tmp);
1187 $m = ms_newMapObj($xbase); 1190 $m = ms_newMapObj($xbase);
1188 $w = $m->web; 1191 $w = $m->web;
@@ -1203,12 +1206,12 @@ function restauraMapaSalvo(){ @@ -1203,12 +1206,12 @@ function restauraMapaSalvo(){
1203 $_GET["tema"] = $xbase; 1206 $_GET["tema"] = $xbase;
1204 $_GET["layers"] = ""; 1207 $_GET["layers"] = "";
1205 $l = $m->getlayer(0); 1208 $l = $m->getlayer(0);
1206 - $_GET["LAYERS"] = $l->name;  
1207 -} 1209 + $_GET["LAYERS"] = $l->name;
  1210 +}
1208 function converteenc($texto){ 1211 function converteenc($texto){
1209 - if (!mb_detect_encoding($texto,"UTF-8",true)){ 1212 + if (!mb_detect_encoding($texto,"UTF-8",true)){
1210 $texto = mb_convert_encoding($texto,"UTF-8","ISO-8859-1"); 1213 $texto = mb_convert_encoding($texto,"UTF-8","ISO-8859-1");
1211 } 1214 }
1212 return $texto; 1215 return $texto;
1213 -}  
1214 -?> 1216 +}
  1217 +?>