From 5b47d67e29e978debe4ce6d4300db5e3b98080a0 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Sun, 13 Mar 2016 00:24:35 -0300 Subject: [PATCH] Correção na opção de inclusão de labels no editor de mapfiles, quando utilizada a opção existente na árvore do editor --- admin/admin.db | Bin 335872 -> 0 bytes admin/dicionario/editormapfile.js | 18 +++++++++--------- admin/js/editormapfile.js | 2 +- admin/js/editormapfile_label.js | 2 ++ admin/php/editormapfile.php | 121 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------ classesphp/funcoes_gerais.php | 3 +-- temas/_lbiomashp.map | 24 ++++++++++++++++-------- 7 files changed, 126 insertions(+), 44 deletions(-) diff --git a/admin/admin.db b/admin/admin.db index 4810c6d..671ac30 100755 Binary files a/admin/admin.db and b/admin/admin.db differ diff --git a/admin/dicionario/editormapfile.js b/admin/dicionario/editormapfile.js index 345ffa4..d6994fe 100755 --- a/admin/dicionario/editormapfile.js +++ b/admin/dicionario/editormapfile.js @@ -7,7 +7,7 @@ i3GEOadmin.editormapfile.dicionario = { es : "" } ], 'txtAjudaMapfile' : [ { - pt : "

Importante: a restrição ao tema por meio da definição de grupos de usuários não bloqueia o acesso por meio de download, WMS, KML, etc. Para bloquear esse tipo de acesso é necessário alterar as opções específicas. Por padrão, esses serviços são habilitados para qualquer usuário, não sendo possível bloquear apenas para determinados grupos.

Este formulário permite criar ou editar os arquivos mapfile que compõem temas no i3geo.

Os arquivo .map são armazenados no diretório i3geo/temas e podem também ser editados manualmente.

Cada arquivo contém layers definidos conforme a sintaxe utilizada pelo Mapserver. Esses arquivos são as estruturas básicas utilizadas pelo i3geo na apresentação de dados e montagem das camadas que são vistas no mapa.

Após criados os mapfiles, deve-se ainda definir as características de cada LAYER.

A lista de IPs dos usuários que podem administrar o i3geo é definida no arquivo i3geo/ms_configura.php

Apenas os mapfiles que forem vinculados a um tema poderão ser vistos na janela de inclusão de temas na árvore de temas. Se você criou um mapfile manualmente, utilize a opção de edição (ícone apresentado ao lado de cada mapfile) para fazer essa associação.

A opção 'Verifica temas sem mapfiles' possibilita resolver problemas decorrentes da eliminação manual de um arquivo mapfile do servidor. Nesses casos, o registro no banco de dados permanece. Com essa opção é possível apagar os registros ou recriar o mapfile perdido.", + pt : "

Importante: a restrição ao tema por meio da definição de grupos de usuários não bloqueia o acesso por meio de download, WMS, KML, etc. Para bloquear esse tipo de acesso é necessário alterar as opções específicas. Por padrão, esses serviços são habilitados para qualquer usuário, não sendo possível bloquear apenas para determinados grupos.

Este formulário permite criar ou editar os arquivos mapfile que compõem temas no i3geo.

Os arquivo .map são armazenados no diret�rio i3geo/temas e podem também ser editados manualmente.

Cada arquivo contém layers definidos conforme a sintaxe utilizada pelo Mapserver. Esses arquivos são as estruturas básicas utilizadas pelo i3geo na apresentação de dados e montagem das camadas que são vistas no mapa.

Ap�s criados os mapfiles, deve-se ainda definir as características de cada LAYER.

A lista de IPs dos usuários que podem administrar o i3geo é definida no arquivo i3geo/ms_configura.php

Apenas os mapfiles que forem vinculados a um tema poderão ser vistos na janela de inclusão de temas na árvore de temas. Se você criou um mapfile manualmente, utilize a opção de edição (ícone apresentado ao lado de cada mapfile) para fazer essa associação.

A opção 'Verifica temas sem mapfiles' possibilita resolver problemas decorrentes da eliminação manual de um arquivo mapfile do servidor. Nesses casos, o registro no banco de dados permanece. Com essa opção é possível apagar os registros ou recriar o mapfile perdido.", en : "", es : "" } ], @@ -167,7 +167,7 @@ i3GEOadmin.editormapfile.dicionario = { es : "" } ], 'apenasShp' : [ { - pt : "Opcao disponivel apenas para o tipo shapefile", // esta sem acento pois alguns navegadores não aceitam acentuacao em alert + pt : "Opcao disponivel apenas para o tipo shapefile", // esta sem acento pois alguns navegadores n�o aceitam acentuacao em alert en : "", es : "" } ], @@ -327,7 +327,7 @@ i3GEOadmin.editormapfile.dicionario = { es : "" } ], 'legendaImg' : [ { - pt : "URL de uma imagem que será utilizada em substituição à geração normal da legenda ", + pt : "URL de uma imagem que será utilizada em substituição � geração normal da legenda ", en : "", es : "" } ], @@ -1297,12 +1297,12 @@ i3GEOadmin.editormapfile.dicionario = { es : "" } ], 'ltempoconvencode' : [ { - pt : "Aplica conversão do código de caracteres? Pode ser necessário para corrigir problemas de acentuação", + pt : "Aplica conversão do c�digo de caracteres? Pode ser necessário para corrigir problemas de acentuação", en : "", es : "" } ], 'ltempoconvencodeTitulo' : [ { - pt : "Aplica conversão do código de caracteres? Pode ser necessário para corrigir problemas de acentuação", + pt : "Aplica conversão do c�digo de caracteres? Pode ser necessário para corrigir problemas de acentuação", en : "", es : "" } ], @@ -1387,7 +1387,7 @@ i3GEOadmin.editormapfile.dicionario = { es : "" } ], 'itenslink' : [ { - pt : "Lista de links que serão incluídos em cada resultado de busca da ferramenta de identificação. A lista de links deve ser separada por ',', podendo-se incluir '' para indicar que o item não tem link. Exemplo de uso para inclusão de links para o site do IBGE quando um município é clicado no mapa:
ITENS 'codigo,nome2,uf'
ITENSDESC 'codigo do IBGE,nome do município,uf'
ITENSLLINK ',http://www.ibge.gov.br/munic2001/tabelas.php?codmun=[codigo]&descricao=[nome],'
Podem ser incluídos comandos javascript, para isso utilize sempre aspas simples para fechar o link e acrescente o código javascript, exemplo:
ITENSLINK \",'../ferramentas/identifica/testelink.php?sid='+i3GEO.configura.sid\"", + pt : "Lista de links que serão incluídos em cada resultado de busca da ferramenta de identificação. A lista de links deve ser separada por ',', podendo-se incluir '' para indicar que o item não tem link. Exemplo de uso para inclusão de links para o site do IBGE quando um município é clicado no mapa:
ITENS 'codigo,nome2,uf'
ITENSDESC 'codigo do IBGE,nome do município,uf'
ITENSLLINK ',http://www.ibge.gov.br/munic2001/tabelas.php?codmun=[codigo]&descricao=[nome],'
Podem ser incluídos comandos javascript, para isso utilize sempre aspas simples para fechar o link e acrescente o c�digo javascript, exemplo:
ITENSLINK \",'../ferramentas/identifica/testelink.php?sid='+i3GEO.configura.sid\"", en : "", es : "" } ], @@ -1427,7 +1427,7 @@ i3GEOadmin.editormapfile.dicionario = { es : "" } ], 'name' : [ { - pt : "Elemento 'NAME'. Não confunda com o nome que aparece no mapa ou na árvore de temas. Normalmente o código recebe o mesmo nome do arquivo mapfile, sem a extensão '.map'", + pt : "Elemento 'NAME'. Não confunda com o nome que aparece no mapa ou na árvore de temas. Normalmente o c�digo recebe o mesmo nome do arquivo mapfile, sem a extensão '.map'", en : "", es : "" } ], @@ -1496,8 +1496,8 @@ i3GEOadmin.editormapfile.dicionario = { en : "", es : "" } ], - '' : [ { - pt : "", + 'colunaLabel' : [ { + pt : "Coluna da tabela de atributos", en : "", es : "" } ], diff --git a/admin/js/editormapfile.js b/admin/js/editormapfile.js index 4e13ba5..f842e52 100755 --- a/admin/js/editormapfile.js +++ b/admin/js/editormapfile.js @@ -889,7 +889,7 @@ function salvarDadosEditor(tipo,codigoMap,codigoLayer,indiceClasse,indiceEstilo, } if(tipo == "classeLabel") { - campos = new Array("encoding","force","partials","mindistance","minfeaturesize","wrap","antialias","buffer","autoangle","angle","offsety","offsetx","position","maxsize","minsize","size","backgroundshadowsizey","backgroundshadowsizex","shadowsizey","shadowsizex","shadowcolor","outlinecolor","color","backgroundshadowcolor","backgroundcolor","type","font"); + campos = new Array("text","encoding","force","partials","mindistance","minfeaturesize","wrap","antialias","buffer","autoangle","angle","offsety","offsetx","position","maxsize","minsize","size","backgroundshadowsizey","backgroundshadowsizex","shadowsizey","shadowsizex","shadowcolor","outlinecolor","color","backgroundshadowcolor","backgroundcolor","type","font"); par = "&codigoMap="+codigoMap+"&codigoLayer="+codigoLayer+"&indiceClasse="+indiceClasse; prog = "../php/editormapfile.php?funcao=alterarClasseLabel" ; } diff --git a/admin/js/editormapfile_label.js b/admin/js/editormapfile_label.js index 3414c97..4df44d2 100755 --- a/admin/js/editormapfile_label.js +++ b/admin/js/editormapfile_label.js @@ -22,6 +22,8 @@ function montaEditorClasseLabel(dados) core_montaEditor(temp,"450px","500px","","Label "+dados.codigoMap,true,true,false); var param = { "linhas":[ + {ajuda:$trad("colunaLabel",i3GEOadmin.editormapfile.dicionario), + titulo:$trad("colunaLabel",i3GEOadmin.editormapfile.dicionario),id:"text",value:dados.text,tipo:"text"}, {ajuda:$trad("colorLabel",i3GEOadmin.editormapfile.dicionario), titulo:$trad("colorLabelTitulo",i3GEOadmin.editormapfile.dicionario),id:"color",value:dados.color,tipo:"cor"}, {ajuda:$trad("sizeLabel",i3GEOadmin.editormapfile.dicionario), diff --git a/admin/php/editormapfile.php b/admin/php/editormapfile.php index 9d84b0a..84e31d3 100755 --- a/admin/php/editormapfile.php +++ b/admin/php/editormapfile.php @@ -350,7 +350,7 @@ switch (strtoupper($funcao)) maporigem {string} - nome completo do arquivo mapfile que contem o layer que será utilizado para alterar o original - nomelayer {string} - c�digo do layer em mapfile que será utilizado para atualizar codigoMap + nomelayer {string} - codigo do layer em mapfile que será utilizado para atualizar codigoMap Retorno: @@ -2201,7 +2201,7 @@ function pegaClasseLabel() $v = versao(); $vi = $v["inteiro"]; if($vi >= 60200){ - $nlabel = $classe->numlabels; + $nlabels = $classe->numlabels; if($nlabels > 0){ $label = $classe->getLabel(0); } @@ -2216,25 +2216,26 @@ function pegaClasseLabel() { $dados["font"] = $label->font; $dados["type"] = $label->type; - $dados["backgroundcolor"] = $label->backgroundcolor->red.",".$label->backgroundcolor->green.",".$label->backgroundcolor->blue; - $dados["backgroundshadowcolor"] = $label->backgroundshadowcolor->red.",".$label->backgroundshadowcolor->green.",".$label->backgroundshadowcolor->blue; + //$dados["backgroundcolor"] = $label->backgroundcolor->red.",".$label->backgroundcolor->green.",".$label->backgroundcolor->blue; + //$dados["backgroundshadowcolor"] = $label->backgroundshadowcolor->red.",".$label->backgroundshadowcolor->green.",".$label->backgroundshadowcolor->blue; $dados["color"] = $label->color->red.",".$label->color->green.",".$label->color->blue; $dados["outlinecolor"] = $label->outlinecolor->red.",".$label->outlinecolor->green.",".$label->outlinecolor->blue; $dados["shadowcolor"] = $label->shadowcolor->red.",".$label->shadowcolor->green.",".$label->shadowcolor->blue; $dados["shadowsizex"] = $label->shadowsizex; $dados["shadowsizey"] = $label->shadowsizey; - $dados["backgroundshadowsizex"] = $label->backgroundshadowsizex; - $dados["backgroundshadowsizey"] = $label->backgroundshadowsizey; + //$dados["backgroundshadowsizex"] = $label->backgroundshadowsizex; + //$dados["backgroundshadowsizey"] = $label->backgroundshadowsizey; $dados["size"] = $label->size; + $dados["minsize"] = $label->minsize; $dados["maxsize"] = $label->maxsize; $dados["position"] = $label->position; $dados["offsetx"] = $label->offsetx; $dados["offsety"] = $label->offsety; $dados["angle"] = $label->angle; - $dados["autoangle"] = $label->autoangle; + //$dados["autoangle"] = $label->autoangle; $dados["buffer"] = $label->buffer; - $dados["antialias"] = $label->antialias; + //$dados["antialias"] = $label->antialias; $dados["wrap"] = $label->wrap; $dados["minfeaturesize"] = $label->minfeaturesize; $dados["autominfeaturesize"] = $label->autominfeaturesize; @@ -2259,7 +2260,13 @@ function pegaClasseLabel() } function alterarClasseLabel() { - global $codigoMap,$codigoLayer,$indiceClasse,$locaplic,$autoangle,$encoding,$force,$partials,$mindistance,$minfeaturesize,$wrap,$antialias,$buffer,$angle,$offsety,$offsetx,$position,$maxsize,$minsize,$size,$backgroundshadowsizey,$backgroundshadowsizex,$shadowsizey,$shadowsizex,$shadowcolor,$outlinecolor,$color,$backgroundshadowcolor,$backgroundcolor,$type,$font; + global $text,$codigoMap,$codigoLayer,$indiceClasse,$locaplic,$autoangle,$encoding,$force,$partials,$mindistance,$minfeaturesize,$wrap,$antialias,$buffer,$angle,$offsety,$offsetx,$position,$maxsize,$minsize,$size,$backgroundshadowsizey,$backgroundshadowsizex,$shadowsizey,$shadowsizex,$shadowcolor,$outlinecolor,$color,$backgroundshadowcolor,$backgroundcolor,$type,$font; + if(!isset($text)){ + $text = ""; + } + else{ + $text = "[".$text."]"; + } $dados = array(); $mapfile = $locaplic."/temas/".$codigoMap.".map"; $mapa = ms_newMapObj($mapfile); @@ -2268,38 +2275,104 @@ function alterarClasseLabel() return "erro. Layer METAESTAT"; } $classe = $layer->getclass($indiceClasse); - $label = $classe->label; - if ($label != "") - { - $label->set("font",$font); - $label->set("type",$type); + $v = versao(); + $vi = $v["inteiro"]; + if($vi >= 60300){ + while($classe->numlabels > 0){ + $classe->removeLabel(0); + } + } + if($text == ""){ + if($vi >= 60300){ + $indiceLabel = $classe->addLabel(new labelObj()); + $label = $classe->getLabel($indiceLabel); + } + else{ + $label = $classe->label; + } + } + elseif ($vi >= 60300 && $classe->numlabels == 0){ + if($wrap != ""){ + $s = "CLASS LABEL WRAP '$wrap' TEXT '".$text."' END END"; + $classe->updateFromString($s); + } + else{ + $s = "CLASS LABEL TEXT '".$text."' END END"; + $classe->updateFromString($s); + } + } + + if($vi >= 60300){ + $label = $classe->getLabel(0); + } + else{ + $label = $classe->label; + } + + if($wrap != ""){ + $label->set("maxlength",1); + } + if($fonte != "bitmap"){ + //para funcionar na versao 7 do mapserver + $label->updateFromString("LABEL type truetype END"); + $label->set("font",$fonte); + $label->set("size",$tamanho); + } + else{ + //para funcionar na versao 7 do mapserver + $label->updateFromString("LABEL type bitmap END"); + $t = MS_TINY; + if ($tamanho > 5 ){ + $t = MS_TINY; + } + if ($tamanho >= 7 ){ + $t = MS_SMALL; + } + if ($tamanho >= 10 ){ + $t = MS_MEDIUM; + } + if ($tamanho >= 12 ){ + $t = MS_LARGE; + } + if ($tamanho >= 14 ){ + $t = MS_GIANT; + } + $label->set("size",$t); + } + if ($label != ""){ + //$label->set("type",$type); corE($label,$backgroundcolor,"backgroundcolor"); corE($label,$backgroundshadowcolor,"backgroundshadowcolor"); corE($label,$color,"color"); corE($label,$outlinecolor,"outlinecolor"); - corE($label,$shadowcolor,"shadowcolor"); + if(!empty($sombra) && !empty($backgroundshadowsizex)){ + corE($label,$sombra,"backgroundshadowcolor",$backgroundshadowsizex,$backgroundshadowsizey); + } $label->set("shadowsizex",$shadowsizex); $label->set("shadowsizey",$shadowsizey); - $label->set("backgroundshadowsizex",$backgroundshadowsizex); - $label->set("backgroundshadowsizey",$backgroundshadowsizey); - $label->set("size",$size); + //$label->set("backgroundshadowsizex",$backgroundshadowsizex); + //$label->set("backgroundshadowsizey",$backgroundshadowsizey); + $label->set("minsize",$minsize); $label->set("maxsize",$maxsize); - $label->set("position",$position); + //$label->set("position",$position); + $label->set("offsetx",$offsetx); $label->set("offsety",$offsety); $label->set("angle",$angle); - $label->set("autoangle",$autoangle); - $label->set("buffer",$buffer); - $label->set("antialias",$antialias); + + //$label->set("autoangle",$autoangle); + //$label->set("buffer",$buffer); + //$label->set("antialias",$antialias); $label->set("wrap",$wrap); $label->set("minfeaturesize",$minfeaturesize); - //$label->set("autominfeaturesize",$autominfeaturesize); $label->set("mindistance",$mindistance); $label->set("partials",$partials); $label->set("force",$force); $label->set("encoding",$encoding); - $label->set("autoangle",$autoangle); + + $p = array("MS_AUTO"=>MS_AUTO,"MS_UL"=>MS_UL,"MS_LR"=>MS_LR,"MS_UR"=>MS_UR,"MS_LL"=>MS_LL,"MS_CR"=>MS_CR,"MS_CL"=>MS_CL,"MS_UC"=>MS_UC,"MS_LC"=>MS_LC,"MS_CC"=>MS_CC); + $label->set("position",$p[$position]); } $mapa->save($mapfile); removeCabecalho($mapfile); diff --git a/classesphp/funcoes_gerais.php b/classesphp/funcoes_gerais.php index a6f0495..68632be 100755 --- a/classesphp/funcoes_gerais.php +++ b/classesphp/funcoes_gerais.php @@ -75,8 +75,7 @@ function corE($label,$cor,$elemento,$sombrax=1,$sombray=1) { $versao = versao(); $versao = $versao["principal"]; - if (is_string($cor)) - { + if (is_string($cor)){ $cor = str_replace(","," ",$cor); if (count(explode(" ",$cor)) == 3) { diff --git a/temas/_lbiomashp.map b/temas/_lbiomashp.map index 32e04ac..3355271 100755 --- a/temas/_lbiomashp.map +++ b/temas/_lbiomashp.map @@ -5,25 +5,21 @@ MAP CONNECTION "" DATA "/var/www/i3geo/aplicmap/dados/biomas.shp" METADATA - "METAESTAT_ID_MEDIDA_VARIAVEL" "" - "TIP" "CD_LEGENDA" "CACHE" "sim" + "TIP" "CD_LEGENDA" "CLASSE" "SIM" "permitekmz" "sim" - "iconetema" "" "ITENSDESC" "Bioma Teste de acentuação" - "ESCALA" "1000000" "TILES" "SIM" - "METAESTAT_CODIGO_TIPO_REGIAO" "" + "ESCALA" "1000000" "extensao" "-76 -39 -29 9" "permitedownload" "sim" - "metaestat" "" "download" "SIM" "itembuscarapida" "CD_LEGENDA" "ITENS" "CD_LEGENDA" - "transitioneffect" "SIM" - "permiteogc" "sim" "permitekml" "sim" + "permiteogc" "sim" + "transitioneffect" "SIM" "TEMA" "_Biomas SHP (acentução)" END # METADATA NAME "_lbiomashp" @@ -38,6 +34,18 @@ MAP CLASS NAME "CAATINGA" EXPRESSION ('[CD_LEGENDA]'eq'CAATINGA') + LABEL + FONT "" + MAXSIZE 0 + MINSIZE 0 + SIZE 0 + MINDISTANCE 0 + MINFEATURESIZE 0 + OFFSET 0 0 + PARTIALS FALSE + SHADOWSIZE 0 0 + TEXT "[CD_LEGENDA]" + END # LABEL STYLE COLOR 183 247 169 OUTLINECOLOR 255 255 255 -- libgit2 0.21.2