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" "" |