Commit e31a03a6635baeebea38fb480fa8d1435c401983
1 parent
9d255116
Exists in
master
and in
7 other branches
V 6 - inclusão da rotina de corte de imagens no gerador de serviços OGC
Showing
5 changed files
with
123 additions
and
43 deletions
Show diff stats
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(); |
ogc.php
@@ -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["tms"])){ | @@ -563,11 +574,33 @@ if(isset($_GET["tms"])){ | ||
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["Z"]) && isset($_GET["X"])){ | @@ -585,6 +618,12 @@ if(isset($_GET["Z"]) && isset($_GET["X"])){ | ||
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["Z"]) && isset($_GET["X"])){ | @@ -607,20 +646,30 @@ if(isset($_GET["Z"]) && isset($_GET["X"])){ | ||
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íveis<br>"; | 751 | echo "ogc.php?lista=temas - para listar os temas disponíveis<br>"; |
703 | echo "Para usar esse web service, além dos parâmetros normais, vc deverá incluir o parâmetro &tema=,<br>"; | 752 | echo "Para usar esse web service, além dos parâmetros normais, vc deverá incluir o parâ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é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ódigo do tema]<br>"; |
754 | + echo "no lugar do c&ocaute;digo pode ser especificado também um arquivo mapfile qualquer. Nesse caso, deve ser digitado o caminho completo no servidor<br><br>"; | ||
706 | echo "Utilize o sistema de administração do i3Geo para configurar quais os temas da pasta i3geo/temas podem ser utilizados."; | 755 | echo "Utilize o sistema de administraçã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úmero de temas desejado na função getcapabilities."; | 756 | echo "Utilize o parametro &intervalo=0,20 para definir o número de temas desejado na função getcapabilities."; |
708 | echo "Utilize o parametro restauramapa para indicar o ID de um mapa salvo no banco de dados de administração para utilizá-lo como um WMS"; | 757 | echo "Utilize o parametro restauramapa para indicar o ID de um mapa salvo no banco de dados de administração para utilizá-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" "" |