From 25f529736aeb7373cb81e8a3dc86cba784768c07 Mon Sep 17 00:00:00 2001 From: edmarmoretti Date: Sun, 30 Oct 2016 15:12:16 -0200 Subject: [PATCH] Correção em bug do Mapserver que não permitia o uso de layers do tipo GRID --- admin/admin.db | Bin 340992 -> 0 bytes classesphp/classe_mapa.php | 1 + classesphp/funcoes_gerais.php | 18 ++++++++++++++++++ ms_criamapa.php | 3 ++- ogc.php | 3 ++- temas/gridg.map | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------- testamapfile.php | 7 +++++-- 7 files changed, 82 insertions(+), 36 deletions(-) diff --git a/admin/admin.db b/admin/admin.db index 4817def..4e8d3fb 100755 Binary files a/admin/admin.db and b/admin/admin.db differ diff --git a/classesphp/classe_mapa.php b/classesphp/classe_mapa.php index 84cfd1a..ca97ba7 100755 --- a/classesphp/classe_mapa.php +++ b/classesphp/classe_mapa.php @@ -1357,6 +1357,7 @@ class Mapa } } } + corrigeLayerGrid($nlayer,$l); } } } diff --git a/classesphp/funcoes_gerais.php b/classesphp/funcoes_gerais.php index cf903fe..9a31835 100755 --- a/classesphp/funcoes_gerais.php +++ b/classesphp/funcoes_gerais.php @@ -3107,4 +3107,22 @@ function checaLoginIp($lista){ exit (); } } +// +//corrige layers do tipo GRID +//bug do mapserver nao permite renderizar grids +//essa funcao corrige esse problema +// +function corrigeLayerGrid($layerOrigem,$layerDestino){ + if($layerOrigem->connectiontype == MS_GRATICULE){ + ms_newgridobj($layerDestino); + $layerDestino->grid->set("labelformat", $layerOrigem->grid->labelformat); + $layerDestino->grid->set("mininterval", $layerOrigem->grid->mininterval); + $layerDestino->grid->set("maxinterval", $layerOrigem->grid->maxinterval); + $layerDestino->grid->set("minsubdivide", $layerOrigem->grid->minsubdivide); + $layerDestino->grid->set("maxsubdivide", $layerOrigem->grid->maxsubdivide); + $layerDestino->grid->set("minarcs", $layerOrigem->grid->minarcs); + $layerDestino->grid->set("maxarcs", $layerOrigem->grid->maxarcs); + //$layerDestino->updatefromstring("LAYER GRID LABELFORMAT '" . $layerOrigem->grid->labelformat . "' END END"); + } +} ?> diff --git a/ms_criamapa.php b/ms_criamapa.php index 3021ea1..f53402b 100755 --- a/ms_criamapa.php +++ b/ms_criamapa.php @@ -908,7 +908,8 @@ function incluiTemasIniciais(){ $layern->set("status",$statustemp); } cloneInlineSymbol($layern,$maptemp,$mapn); - ms_newLayerObj($mapn, $layern); + $layerAdicionado = ms_newLayerObj($mapn, $layern); + corrigeLayerGrid($layern,$layerAdicionado); } } diff --git a/ogc.php b/ogc.php index b8b7204..9f2b57b 100755 --- a/ogc.php +++ b/ogc.php @@ -744,7 +744,8 @@ else{ $classe->set("name",$l->getmetadata("tema")); } } - ms_newLayerObj($oMap, $l); + $layerAdicionado = ms_newLayerObj($oMap, $l); + corrigeLayerGrid($l,$layerAdicionado); } else{ //a camada nao pode ser usada como servico WMS, entao e enviada uma mensagem diff --git a/temas/gridg.map b/temas/gridg.map index 9a8cb6b..4db73be 100755 --- a/temas/gridg.map +++ b/temas/gridg.map @@ -1,33 +1,55 @@ MAP -SYMBOLSET ../symbols/simbolosv6.sym -FONTSET "../symbols/fontes.txt" -LAYER - NAME "gridg" - METADATA - "DESCRIPTION" "Grid" - "TEMA" "Grade" - END - TYPE LINE - STATUS DEFAULT - CLASS - NAME "Graticule" - COLOR 0 0 0 - LABEL - COLOR 255 0 0 - FONT "arial" - TYPE truetype - SIZE 8 - POSITION AUTO - PARTIALS FALSE - BUFFER 2 - OUTLINECOLOR 255 255 255 - END - END - PROJECTION - "init=epsg:4326" - END - GRID - LABELFORMAT "DD" - END -END # Layer -END \ No newline at end of file + FONTSET "../symbols/fontes.txt" + SYMBOLSET "../symbols/simbolos.sym" + LAYER + METADATA + "METAESTAT_ID_MEDIDA_VARIAVEL" "" + "CACHE" "nao" + "DESCRIPTION" "Grid" + "permitekmz" "nao" + "TILES" "nao" + "METAESTAT_CODIGO_TIPO_REGIAO" "" + "permitedownload" "sim" + "metaestat" "" + "download" "sim" + "permitekml" "sim" + "permiteogc" "sim" + "TEMA" "Grade DMS" + END # METADATA + NAME "gridg" + PROJECTION + "proj=longlat" + "ellps=WGS84" + "datum=WGS84" + "no_defs" + END # PROJECTION + STATUS DEFAULT + TILEITEM "location" + TYPE LINE + UNITS METERS + CLASS + NAME "Graticule" + LABEL + FONT "arial" + SIZE 8 + BUFFER 2 + OFFSET 0 0 + OUTLINECOLOR 255 255 255 + PARTIALS FALSE + POSITION CC + SHADOWSIZE 1 1 + TYPE TRUETYPE + END # LABEL + STYLE + COLOR 200 200 200 + END # STYLE + END # CLASS + GRID + LABELFORMAT "DDMMSS" + MAXINTERVAL 10 + MININTERVAL 10 + END # GRID + END # LAYER + +END # MAP + diff --git a/testamapfile.php b/testamapfile.php index d1bb1bb..a3f199b 100755 --- a/testamapfile.php +++ b/testamapfile.php @@ -349,7 +349,10 @@ function verifica($map,$solegenda,$tabela,$cache="sim"){ } //pega simbolos locais e aplica no novo mapa cloneInlineSymbol($layern,$nmapa,$mapa); - ms_newLayerObj($mapa, $layern); + + $layerAdicionado = ms_newLayerObj($mapa, $layern); + + corrigeLayerGrid($layern,$layerAdicionado); /* if ($layern->data == ""){ $dados = $layern->connection; @@ -447,7 +450,7 @@ function verifica($map,$solegenda,$tabela,$cache="sim"){ } else{ $mapa = ms_newMapObj($destino); - restauraCon($destino,$postgis_mapa); + restauraConObj($mapa,$postgis_mapa); $objImagem = @$mapa->draw(); //corrige o titulo da legenda $numlayers = $mapa->numlayers; -- libgit2 0.21.2