Commit e31a03a6635baeebea38fb480fa8d1435c401983

Authored by Edmar Moretti
1 parent 9d255116

V 6 - inclusão da rotina de corte de imagens no gerador de serviços OGC

admin/admin.db
No preview for this file type
classesphp/mapa_openlayers.php
@@ -203,11 +203,11 @@ if(isset($_GET["map_size"])){ @@ -203,11 +203,11 @@ if(isset($_GET["map_size"])){
203 $map_size = explode(" ",$_GET["map_size"]); 203 $map_size = explode(" ",$_GET["map_size"]);
204 $mapa->setsize($map_size[0],$map_size[1]); 204 $mapa->setsize($map_size[0],$map_size[1]);
205 } 205 }
  206 +
206 if(isset($_GET["mapext"])){ 207 if(isset($_GET["mapext"])){
207 $mapext = explode(" ",$_GET["mapext"]); 208 $mapext = explode(" ",$_GET["mapext"]);
208 $mapa->setExtent($mapext[0],$mapext[1],$mapext[2],$mapext[3]); 209 $mapa->setExtent($mapext[0],$mapext[1],$mapext[2],$mapext[3]);
209 } 210 }
210 -  
211 // 211 //
212 //qd a cahamda e para um WMS, redireciona para ogc.php 212 //qd a cahamda e para um WMS, redireciona para ogc.php
213 // 213 //
@@ -251,7 +251,8 @@ if($_GET["tipolayer"] != "fundo") @@ -251,7 +251,8 @@ if($_GET["tipolayer"] != "fundo")
251 //antes de gerar a imagem 251 //antes de gerar a imagem
252 // 252 //
253 if($cortePixels > 0){ 253 if($cortePixels > 0){
254 - //$imagemBranco = $mapa->prepareImage(); 254 + $mapa->prepareImage();
  255 + echo $mapa->scaledenom;exit;
255 $escalaInicial = $mapa->scaledenom; 256 $escalaInicial = $mapa->scaledenom;
256 $extensaoInicial = $mapa->extent; 257 $extensaoInicial = $mapa->extent;
257 $wh = 256+($cortePixels*2); 258 $wh = 256+($cortePixels*2);
@@ -261,7 +262,6 @@ if($cortePixels > 0){ @@ -261,7 +262,6 @@ if($cortePixels > 0){
261 $mapa->zoomScale($escalaInicial, $ponto, $wh, $wh, $extensaoInicial); 262 $mapa->zoomScale($escalaInicial, $ponto, $wh, $wh, $extensaoInicial);
262 } 263 }
263 264
264 -  
265 //se nao houver selecao 265 //se nao houver selecao
266 if($qy != true){ 266 if($qy != true){
267 $img = $mapa->draw(); 267 $img = $mapa->draw();
@@ -389,7 +389,7 @@ else{ @@ -389,7 +389,7 @@ else{
389 } 389 }
390 } 390 }
391 function salvaCacheImagem($cachedir,$map,$tms){ 391 function salvaCacheImagem($cachedir,$map,$tms){
392 - global $img,$cortePixels,$cortePixels; 392 + global $img,$cortePixels;
393 if($cachedir == ""){ 393 if($cachedir == ""){
394 $nome = dirname(dirname($map))."/cache".$tms; 394 $nome = dirname(dirname($map))."/cache".$tms;
395 } 395 }
@@ -406,6 +406,11 @@ function salvaCacheImagem($cachedir,$map,$tms){ @@ -406,6 +406,11 @@ function salvaCacheImagem($cachedir,$map,$tms){
406 if($cortePixels > 0){ 406 if($cortePixels > 0){
407 $img = imagecreatefrompng($nome); 407 $img = imagecreatefrompng($nome);
408 $imgc = imagecreate(256,256); 408 $imgc = imagecreate(256,256);
  409 + //@FIXME necessario, sem isso algumas imagens sao geradas de forma errada
  410 + imagesavealpha($imgc, true);
  411 + $color = imagecolorallocatealpha($imgc,0x00,0x00,0x00,127);
  412 + imagefill($imgc, 0, 0, $color);
  413 +
409 imagecopy( $imgc, $img, 0 , 0 , $cortePixels , $cortePixels , 256, 256 ); 414 imagecopy( $imgc, $img, 0 , 0 , $cortePixels , $cortePixels , 256, 256 );
410 imagepng($imgc,$nome); 415 imagepng($imgc,$nome);
411 } 416 }
mashups/openlayers.php
@@ -461,7 +461,7 @@ i3GEO.editorOL.mapa = new OpenLayers.Map( @@ -461,7 +461,7 @@ i3GEO.editorOL.mapa = new OpenLayers.Map(
461 { 461 {
462 autoUpdateSize: false, 462 autoUpdateSize: false,
463 controls:[], 463 controls:[],
464 - resolutions: [0.703125,0.3515625,0.17578125,0.087890625,0.0439453125,0.02197265625,0.010986328125,0.0054931640625,0.00274658203125,0.001373291015625,0.0006866455078125,0.00034332275390625,0.000171661376953125,0.0000858306884765625,0.00004291534423828125,0.000021457672119140625,0.000010728836059570312,0.000005364418029785156,0.000002682209014892578] 464 + resolutions: [0.703125, 0.3515625, 0.17578125, 0.087890625, 0.0439453125, 0.02197265625, 0.010986328125, 0.0054931640625, 0.00274658203125, 0.001373291015625, 0.0006866455078125, 0.00034332275390625, 0.000171661376953125, 0.0000858306884765625, 0.00004291534423828125, 0.000021457672119140625, 0.000010728836059570312, 0.000005364418029785156, 0.000002682209014892578]
465 } 465 }
466 ); 466 );
467 i3GEO.editorOL.inicia(); 467 i3GEO.editorOL.inicia();
@@ -22,7 +22,7 @@ Este programa é distribuído na expectativa de que seja útil @@ -22,7 +22,7 @@ Este programa é distribuído na expectativa de que seja útil
22 porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita 22 porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita
23 de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. 23 de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA.
24 Consulte a Licença Pública Geral do GNU para mais detalhes. 24 Consulte a Licença Pública Geral do GNU para mais detalhes.
25 -Você deve ter recebido uma cópia da Licença Pública Geral do 25 +Você deve ter recebido uma copia da Licença Pública Geral do
26 GNU junto com este programa; se não, escreva para a 26 GNU junto com este programa; se não, escreva para a
27 Free Software Foundation, Inc., no endereço 27 Free Software Foundation, Inc., no endereço
28 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. 28 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
@@ -230,6 +230,8 @@ if(isset($_GET["DESLIGACACHE"]) && $_GET["DESLIGACACHE"] == "sim"){ @@ -230,6 +230,8 @@ if(isset($_GET["DESLIGACACHE"]) && $_GET["DESLIGACACHE"] == "sim"){
230 $nomeMapfileTmp = $dir_tmp."/ogc_".md5($tema)."_".$agora.".map"; 230 $nomeMapfileTmp = $dir_tmp."/ogc_".md5($tema)."_".$agora.".map";
231 $nomeMapfileTmp = str_replace(",","",$nomeMapfileTmp); 231 $nomeMapfileTmp = str_replace(",","",$nomeMapfileTmp);
232 $nomeMapfileTmp = str_replace(" ","",$nomeMapfileTmp); 232 $nomeMapfileTmp = str_replace(" ","",$nomeMapfileTmp);
  233 +//essa variavel e usada para definir se a imagem final gerada devera ser cortada ou nao
  234 +$cortePixels = 0;
233 if(file_exists($nomeMapfileTmp) && $tipo == ""){ 235 if(file_exists($nomeMapfileTmp) && $tipo == ""){
234 $oMap = ms_newMapobj($nomeMapfileTmp); 236 $oMap = ms_newMapobj($nomeMapfileTmp);
235 } 237 }
@@ -269,7 +271,7 @@ else{ @@ -269,7 +271,7 @@ else{
269 //para o caso do tema ser um arquivo mapfile existente em uma pasta qualquer 271 //para o caso do tema ser um arquivo mapfile existente em uma pasta qualquer
270 //$temai3geo = true indica que o layer será buscado na pasta i3geo/temas 272 //$temai3geo = true indica que o layer será buscado na pasta i3geo/temas
271 $temai3geo = true; 273 $temai3geo = true;
272 - //FIXME não aceita gvp quando o caminho é completo 274 + //FIXME nao aceita gvp quando o caminho e completo
273 if(file_exists($_GET["tema"]) && !isset($id_medida_variavel)){ 275 if(file_exists($_GET["tema"]) && !isset($id_medida_variavel)){
274 $nmap = ms_newMapobj($_GET["tema"]); 276 $nmap = ms_newMapobj($_GET["tema"]);
275 $temai3geo = false; 277 $temai3geo = false;
@@ -293,7 +295,6 @@ else{ @@ -293,7 +295,6 @@ else{
293 if($teste != "" && $l->data == ""){ 295 if($teste != "" && $l->data == ""){
294 $id_medida_variavel = $teste; 296 $id_medida_variavel = $teste;
295 } 297 }
296 -  
297 } 298 }
298 if(isset($id_medida_variavel)){ 299 if(isset($id_medida_variavel)){
299 $temai3geo = false; 300 $temai3geo = false;
@@ -351,8 +352,7 @@ else{ @@ -351,8 +352,7 @@ else{
351 } 352 }
352 if($l->type == MS_LAYER_RASTER && $l->numclasses > 0){ 353 if($l->type == MS_LAYER_RASTER && $l->numclasses > 0){
353 $c = $l->getclass(0); 354 $c = $l->getclass(0);
354 - if($c->name == "")  
355 - { 355 + if($c->name == ""){
356 $c->name = " "; 356 $c->name = " ";
357 } 357 }
358 } 358 }
@@ -424,8 +424,7 @@ else{ @@ -424,8 +424,7 @@ else{
424 } 424 }
425 if($l->type == MS_LAYER_RASTER && $l->numclasses > 0){ 425 if($l->type == MS_LAYER_RASTER && $l->numclasses > 0){
426 $c = $l->getclass(0); 426 $c = $l->getclass(0);
427 - if($c->name == "")  
428 - { 427 + if($c->name == ""){
429 $c->name = " "; 428 $c->name = " ";
430 } 429 }
431 } 430 }
@@ -434,7 +433,13 @@ else{ @@ -434,7 +433,13 @@ else{
434 if($extensao == ""){ 433 if($extensao == ""){
435 $extensao = $extensaoMap; 434 $extensao = $extensaoMap;
436 } 435 }
437 - $l->setmetadata("wms_extent",$extensao); 436 + $l->setmetadata("wms_extent",$extensao);
  437 + //
  438 + //numero de pixels que serao considerados para corte da imagem no caso de cache ativo e tema de pontos
  439 + //
  440 + if ($l->getmetadata("cortepixels") != ""){
  441 + $cortePixels = $l->getmetadata("cortepixels");
  442 + }
438 } 443 }
439 $req->setParameter("LAYERS", implode(",",$layers)); 444 $req->setParameter("LAYERS", implode(",",$layers));
440 $req->setParameter("STYLES", ""); 445 $req->setParameter("STYLES", "");
@@ -486,8 +491,7 @@ else{ @@ -486,8 +491,7 @@ else{
486 if (($conta >= $int[0]) && ($conta <= $int[1])){ 491 if (($conta >= $int[0]) && ($conta <= $int[1])){
487 $l = $nmap->getlayerbyname($t); 492 $l = $nmap->getlayerbyname($t);
488 $extensao = $l->getmetadata("EXTENSAO"); 493 $extensao = $l->getmetadata("EXTENSAO");
489 - if($extensao == "")  
490 - { 494 + if($extensao == ""){
491 $extensao = $extensaoMap; 495 $extensao = $extensaoMap;
492 } 496 }
493 $l->setmetadata("wms_extent",$extensao); 497 $l->setmetadata("wms_extent",$extensao);
@@ -512,8 +516,15 @@ else{ @@ -512,8 +516,15 @@ else{
512 $l->setmetadata("wms_attribution_logourl_width","50"); 516 $l->setmetadata("wms_attribution_logourl_width","50");
513 $l->setmetadata("wms_attribution_logourl_href",$mini); 517 $l->setmetadata("wms_attribution_logourl_href",$mini);
514 } 518 }
  519 + //
  520 + //numero de pixels que serao considerados para corte da imagem no caso de cache ativo e tema de pontos
  521 + //
  522 + if ($l->getmetadata("cortepixels") != ""){
  523 + $cortePixels = $l->getmetadata("cortepixels");
  524 + }
515 cloneInlineSymbol($l,$nmap,$oMap); 525 cloneInlineSymbol($l,$nmap,$oMap);
516 - ms_newLayerObj($oMap, $l); 526 + ms_newLayerObj($oMap, $l);
  527 +
517 } 528 }
518 } 529 }
519 } 530 }
@@ -537,12 +548,12 @@ else{ @@ -537,12 +548,12 @@ else{
537 } 548 }
538 if(ob_get_contents ()){ 549 if(ob_get_contents ()){
539 ob_end_clean(); 550 ob_end_clean();
540 -} 551 +}
541 // 552 //
542 //verifica se a requisicao e do tipo TMS. 553 //verifica se a requisicao e do tipo TMS.
543 // 554 //
544 // 555 //
545 -//calcula a extensao geografica com base no x,y,z em requisições TMS 556 +//calcula a extensao geografica com base no x,y,z em requisisoes TMS
546 //quando for do tipo tms $_GET["tms"] contem os parametros do tile 557 //quando for do tipo tms $_GET["tms"] contem os parametros do tile
547 //essa rotina faz um exit ao final 558 //essa rotina faz um exit ao final
548 //o cache tms so fucniona se houver apenas uma camada no mapa 559 //o cache tms so fucniona se houver apenas uma camada no mapa
@@ -563,11 +574,33 @@ if(isset($_GET[&quot;tms&quot;])){ @@ -563,11 +574,33 @@ if(isset($_GET[&quot;tms&quot;])){
563 if($cache == true){ 574 if($cache == true){
564 carregaCacheImagem($cachedir,$nomeMapfileTmp,$_GET["tms"]); 575 carregaCacheImagem($cachedir,$nomeMapfileTmp,$_GET["tms"]);
565 } 576 }
  577 + $layer0 = $oMap->getlayer(0);
  578 + //
  579 + //numero de pixels que serao considerados para corte da imagem no caso de cache ativo e tema de pontos
  580 + //
  581 + if ($layer0->getmetadata("cortepixels") != ""){
  582 + $cortePixels = $layer0->getmetadata("cortepixels");
  583 + }
566 //se nao existir, salva a imagem 584 //se nao existir, salva a imagem
567 //echo $lon1." ".$lat1." ".$lon2." ".$lat2;exit; 585 //echo $lon1." ".$lat1." ".$lon2." ".$lat2;exit;
568 - $oMap->setExtent($lon1,$lat1,$lon2,$lat2);  
569 $oMap->setsize(256,256); 586 $oMap->setsize(256,256);
570 - $oMap->getlayer(0)->set("status",MS_DEFAULT); 587 + $oMap->setExtent($lon1,$lat1,$lon2,$lat2);
  588 +
  589 + $layer0->set("status",MS_DEFAULT);
  590 + //
  591 + //se o layer foi marcado para corte altera os parametros para ampliar o mapa
  592 + //antes de gerar a imagem
  593 + //
  594 + if($cortePixels > 0){
  595 + //$oMap->prepareImage();
  596 + $escalaInicial = $oMap->scaledenom;
  597 + $extensaoInicial = $oMap->extent;
  598 + $wh = 256+($cortePixels*2);
  599 + $oMap->setsize($wh,$wh);
  600 + $ponto = new pointObj();
  601 + $ponto->setxy(($wh/2),($wh/2));
  602 + $oMap->zoomScale($escalaInicial, $ponto, $wh, $wh, $extensaoInicial);
  603 + }
571 $img = $oMap->draw(); 604 $img = $oMap->draw();
572 if($img->imagepath == ""){ 605 if($img->imagepath == ""){
573 exit; 606 exit;
@@ -585,6 +618,12 @@ if(isset($_GET[&quot;Z&quot;]) &amp;&amp; isset($_GET[&quot;X&quot;])){ @@ -585,6 +618,12 @@ if(isset($_GET[&quot;Z&quot;]) &amp;&amp; isset($_GET[&quot;X&quot;])){
585 $y = $_GET["Y"]; 618 $y = $_GET["Y"];
586 $z = $_GET["Z"]; 619 $z = $_GET["Z"];
587 $layer0 = $oMap->getlayer(0); 620 $layer0 = $oMap->getlayer(0);
  621 + //
  622 + //numero de pixels que serao considerados para corte da imagem no caso de cache ativo e tema de pontos
  623 + //
  624 + if ($layer0->getmetadata("cortepixels") != ""){
  625 + $cortePixels = $layer0->getmetadata("cortepixels");
  626 + }
588 if($cache == true){ 627 if($cache == true){
589 carregaCacheImagem($cachedir,$nomeMapfileTmp,"/googlemaps/$layer0->name/$z/$x/$y"); 628 carregaCacheImagem($cachedir,$nomeMapfileTmp,"/googlemaps/$layer0->name/$z/$x/$y");
590 } 629 }
@@ -607,20 +646,30 @@ if(isset($_GET[&quot;Z&quot;]) &amp;&amp; isset($_GET[&quot;X&quot;])){ @@ -607,20 +646,30 @@ if(isset($_GET[&quot;Z&quot;]) &amp;&amp; isset($_GET[&quot;X&quot;])){
607 $poPoint2 = ms_newpointobj(); 646 $poPoint2 = ms_newpointobj();
608 $poPoint2->setXY($lon2, $lat2); 647 $poPoint2->setXY($lon2, $lat2);
609 $poPoint2->project($projInObj, $projOutObj); 648 $poPoint2->project($projInObj, $projOutObj);
  649 + $oMap->setsize(256,256);
610 $oMap->setExtent($poPoint1->x,$poPoint1->y,$poPoint2->x,$poPoint2->y); 650 $oMap->setExtent($poPoint1->x,$poPoint1->y,$poPoint2->x,$poPoint2->y);
611 - $oMap->setsize(256,256); 651 +
612 $oMap->getlayer(0)->set("status",MS_DEFAULT); 652 $oMap->getlayer(0)->set("status",MS_DEFAULT);
613 $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"); 653 $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");
614 $layer0->setProjection("proj=latlong,a=6378137,b=6378137"); 654 $layer0->setProjection("proj=latlong,a=6378137,b=6378137");
615 - //$oMap->save(); 655 + //
  656 + //se o layer foi marcado para corte altera os parametros para ampliar o mapa
  657 + //antes de gerar a imagem
  658 + //
  659 + if($cortePixels > 0){
  660 + //$oMap->prepareImage();
  661 + $escalaInicial = $oMap->scaledenom;
  662 + $extensaoInicial = $oMap->extent;
  663 + $wh = 256+($cortePixels*2);
  664 + $oMap->setsize($wh,$wh);
  665 + $ponto = new pointObj();
  666 + $ponto->setxy(($wh/2),($wh/2));
  667 + $oMap->zoomScale($escalaInicial, $ponto, $wh, $wh, $extensaoInicial);
  668 + }
616 $img = $oMap->draw(); 669 $img = $oMap->draw();
617 if($img->imagepath == ""){ 670 if($img->imagepath == ""){
618 exit; 671 exit;
619 } 672 }
620 - /**  
621 - * @TODO ativar cache  
622 - */  
623 -  
624 if($cache == true){ 673 if($cache == true){
625 salvaCacheImagem($cachedir,$nomeMapfileTmp,"/googlemaps/$layer0->name/$z/$x/$y"); 674 salvaCacheImagem($cachedir,$nomeMapfileTmp,"/googlemaps/$layer0->name/$z/$x/$y");
626 } 675 }
@@ -701,8 +750,8 @@ function ogc_imprimeAjuda(){ @@ -701,8 +750,8 @@ function ogc_imprimeAjuda(){
701 echo "Para escolher um tema, utilize:<br>"; 750 echo "Para escolher um tema, utilize:<br>";
702 echo "ogc.php?lista=temas - para listar os temas dispon&iacute;veis<br>"; 751 echo "ogc.php?lista=temas - para listar os temas dispon&iacute;veis<br>";
703 echo "Para usar esse web service, al&eacute;m dos par&acirc;metros normais, vc dever&aacute; incluir o par&acirc;metro &tema=,<br>"; 752 echo "Para usar esse web service, al&eacute;m dos par&acirc;metros normais, vc dever&aacute; incluir o par&acirc;metro &tema=,<br>";
704 - echo "ou seja,http://[host]/i3geo/ogc.php?tema=[código do tema]<br>";  
705 - echo "no lugar do código pode ser especificado tamb&eacute;m um arquivo mapfile qualquer. Nesse caso, deve ser digitado o caminho completo no servidor<br><br>"; 753 + echo "ou seja,http://[host]/i3geo/ogc.php?tema=[c&oacute;digo do tema]<br>";
  754 + echo "no lugar do c&ocaute;digo pode ser especificado tamb&eacute;m um arquivo mapfile qualquer. Nesse caso, deve ser digitado o caminho completo no servidor<br><br>";
706 echo "Utilize o sistema de administra&ccedil;&atilde;o do i3Geo para configurar quais os temas da pasta i3geo/temas podem ser utilizados."; 755 echo "Utilize o sistema de administra&ccedil;&atilde;o do i3Geo para configurar quais os temas da pasta i3geo/temas podem ser utilizados.";
707 echo "Utilize o parametro &intervalo=0,20 para definir o n&uacute;mero de temas desejado na fun&ccedil;&atilde;o getcapabilities."; 756 echo "Utilize o parametro &intervalo=0,20 para definir o n&uacute;mero de temas desejado na fun&ccedil;&atilde;o getcapabilities.";
708 echo "Utilize o parametro restauramapa para indicar o ID de um mapa salvo no banco de dados de administra&ccedil;&atilde;o para utiliz&aacute;-lo como um WMS"; 757 echo "Utilize o parametro restauramapa para indicar o ID de um mapa salvo no banco de dados de administra&ccedil;&atilde;o para utiliz&aacute;-lo como um WMS";
@@ -800,7 +849,7 @@ function carregaCacheImagem($cachedir,$map,$tms){ @@ -800,7 +849,7 @@ function carregaCacheImagem($cachedir,$map,$tms){
800 } 849 }
801 } 850 }
802 function salvaCacheImagem($cachedir,$map,$tms){ 851 function salvaCacheImagem($cachedir,$map,$tms){
803 - global $img,$dir_tmp; 852 + global $img,$dir_tmp,$cortePixels;
804 if($cachedir == ""){ 853 if($cachedir == ""){
805 $nome = $dir_tmp."/cache".$tms; 854 $nome = $dir_tmp."/cache".$tms;
806 } 855 }
@@ -810,8 +859,22 @@ function salvaCacheImagem($cachedir,$map,$tms){ @@ -810,8 +859,22 @@ function salvaCacheImagem($cachedir,$map,$tms){
810 @mkdir(dirname($nome),0777,true); 859 @mkdir(dirname($nome),0777,true);
811 chmod(dirname($nome),0777); 860 chmod(dirname($nome),0777);
812 $img->saveImage($nome); 861 $img->saveImage($nome);
813 - chmod($nome,0777);  
814 - 862 + //
  863 + //corta a imagem gerada para voltar ao tamanho normal
  864 + //
  865 + if($cortePixels > 0){
  866 + $img = imagecreatefrompng($nome);
  867 + $imgc = imagecreate(256,256);
  868 +
  869 + imagesavealpha($imgc, true);
  870 + // Fill the image with transparent color
  871 + $color = imagecolorallocatealpha($imgc,0x00,0x00,0x00,127);
  872 + imagefill($imgc, 0, 0, $color);
  873 +
  874 + imagecopy($imgc, $img, 0 , 0 , $cortePixels , $cortePixels , 256, 256);
  875 + imagepng($imgc,$nome);
  876 + }
  877 + chmod($nome,0777);
815 header('Content-Length: '.filesize($nome)); 878 header('Content-Length: '.filesize($nome));
816 header('Content-Type: image/png'); 879 header('Content-Type: image/png');
817 header('Cache-Control: max-age=3600, must-revalidate'); 880 header('Cache-Control: max-age=3600, must-revalidate');
@@ -838,10 +901,29 @@ function nomeRand($n=10) @@ -838,10 +901,29 @@ function nomeRand($n=10)
838 return $nomes; 901 return $nomes;
839 } 902 }
840 function renderNocacheTms(){ 903 function renderNocacheTms(){
841 - global $img,$i3georendermode,$dir_tmp;  
842 - if($i3georendermode == 0 || !isset($i3georendermode)){  
843 - $nomer = $dir_tmp."/temp".nomeRand().".png";  
844 - $img->saveImage($nomer); 904 + global $img,$i3georendermode,$dir_tmp,$cortePixels;
  905 + if($i3georendermode == 1 && $cortePixels == 0){
  906 + ob_clean();
  907 + header('Content-Type: image/png');
  908 + $img->saveImage();
  909 + exit;
  910 + }
  911 + if($i3georendermode == 1 && $cortePixels > 0){
  912 + $i3georendermode = 0;
  913 + }
  914 + $nomer = $dir_tmp."/temp".nomeRand().".png";
  915 + $img->saveImage($nomer);
  916 + //
  917 + //corta a imagem gerada para voltar ao tamanho normal
  918 + //
  919 + if($cortePixels > 0){
  920 + $img = imagecreatefrompng($nomer);
  921 + $imgc = imagecreate(256,256);
  922 + imagecopy( $imgc, $img, 0 , 0 , $cortePixels , $cortePixels , 256, 256 );
  923 + imagepng($imgc,$nomer);
  924 + }
  925 + if($i3georendermode == 0 || !isset($i3georendermode)){
  926 +
845 header('Content-Length: '.filesize($nomer)); 927 header('Content-Length: '.filesize($nomer));
846 header('Content-Type: image/png'); 928 header('Content-Type: image/png');
847 header('Cache-Control: max-age=3600, must-revalidate'); 929 header('Cache-Control: max-age=3600, must-revalidate');
@@ -849,14 +931,7 @@ function renderNocacheTms(){ @@ -849,14 +931,7 @@ function renderNocacheTms(){
849 header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($nomer)).' GMT', true, 200); 931 header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($nomer)).' GMT', true, 200);
850 fpassthru(fopen($nomer, 'rb')); 932 fpassthru(fopen($nomer, 'rb'));
851 } 933 }
852 - if($i3georendermode == 1){  
853 - ob_clean();  
854 - header('Content-Type: image/png');  
855 - $img->saveImage();  
856 - }  
857 if($i3georendermode == 2){ 934 if($i3georendermode == 2){
858 - $nomer = $dir_tmp."/temp".nomeRand().".png";  
859 - $img->saveImage($nomer);  
860 ob_clean(); 935 ob_clean();
861 header('Cache-Control: public, max-age=22222222'); 936 header('Cache-Control: public, max-age=22222222');
862 header('Expires: ' . gmdate('D, d M Y H:i:s', time()+48*60*60) . ' GMT'); 937 header('Expires: ' . gmdate('D, d M Y H:i:s', time()+48*60*60) . ' GMT');
temas/_lbiomashp.map
@@ -6,7 +6,7 @@ MAP @@ -6,7 +6,7 @@ MAP
6 DATA "/var/www/i3geo/aplicmap/dados/biomas.shp" 6 DATA "/var/www/i3geo/aplicmap/dados/biomas.shp"
7 METADATA 7 METADATA
8 "METAESTAT_ID_MEDIDA_VARIAVEL" "" 8 "METAESTAT_ID_MEDIDA_VARIAVEL" ""
9 - "cache" "" 9 + "cache" "SIM"
10 "CLASSE" "SIM" 10 "CLASSE" "SIM"
11 "permitekmz" "nao" 11 "permitekmz" "nao"
12 "METAESTAT_CODIGO_TIPO_REGIAO" "" 12 "METAESTAT_CODIGO_TIPO_REGIAO" ""