From 7d456a3f0eeba77f90cdf44690b54695bc6c2f5b Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Sun, 21 Nov 2010 18:34:02 +0000 Subject: [PATCH] Incluída opção para plicar um SLD em um layer do mapa --- aplicmap/dados/testeestados.sld | 225 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ aplicmap/ogcws.map | 1 + classesjs/classe_arvoredecamadas.js | 1 + classesjs/classe_tema.js | 15 ++++++++++++++- classesjs/dicionario.js | 11 +++++++++-- classesjs/dicionario_ajuda.js | 8 ++++++++ classesphp/funcoes_gerais.php | 1 + ferramentas/aplicarsld/index.js.php | 133 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ferramentas/aplicarsld/upload.php | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 9 files changed, 472 insertions(+), 3 deletions(-) create mode 100644 aplicmap/dados/testeestados.sld create mode 100644 ferramentas/aplicarsld/index.js.php create mode 100644 ferramentas/aplicarsld/upload.php diff --git a/aplicmap/dados/testeestados.sld b/aplicmap/dados/testeestados.sld new file mode 100644 index 0000000..e0ba872 --- /dev/null +++ b/aplicmap/dados/testeestados.sld @@ -0,0 +1,225 @@ + + +estados + + + +AC + + +#ed279e +1.00 + + + + +AL + + +#4e0a61 +1.00 + + + + +AM + + +#618dfb +1.00 + + + + +BA + + +#9d7c5b +1.00 + + + + +CE + + +#1f9317 +1.00 + + + + +DF + + +#0317c2 +1.00 + + + + +ES + + +#98648b +1.00 + + + + +GO + + +#da3ada +1.00 + + + + +MA + + +#c2a8ec +1.00 + + + + +MG + + +#d28d2a +1.00 + + + + +MS + + +#7c232f +1.00 + + + + +MT + + +#a3af5f +1.00 + + + + +PA + + +#c32b3d +1.00 + + + + +PB + + +#0d528d +1.00 + + + + +PE + + +#c3c52a +1.00 + + + + +PI + + +#bde029 +1.00 + + + + +PR + + +#54e477 +1.00 + + + + +RJ + + +#5ec2f1 +1.00 + + + + +RN + + +#5a5059 +1.00 + + + + +RO + + +#2bf095 +1.00 + + + + +SC + + +#58922d +1.00 + + + + +SE + + +#576abf +1.00 + + + + +SP + + +#6c6a59 +1.00 + + + + +TO + + +#ff8b01 +1.00 + + + + + + + diff --git a/aplicmap/ogcws.map b/aplicmap/ogcws.map index 517a5d3..2e26041 100644 --- a/aplicmap/ogcws.map +++ b/aplicmap/ogcws.map @@ -7,6 +7,7 @@ MAP IMAGECOLOR 255 255 255 SIZE 450 450 STATUS ON + CONFIG "MS_NONSQUARE" "YES" OUTPUTFORMAT NAME "png" MIMETYPE "image/png" diff --git a/classesjs/classe_arvoredecamadas.js b/classesjs/classe_arvoredecamadas.js index 58a74ca..7c03613 100644 --- a/classesjs/classe_arvoredecamadas.js +++ b/classesjs/classe_arvoredecamadas.js @@ -775,6 +775,7 @@ i3GEO.arvoreDeCamadas = { i3GEO.arvoreDeCamadas.adicionaOpcaoTema($trad("t42"),$trad("t42"),'i3GEO.tema.dialogo.cortina(\"'+ltema.name+'\")',node); } i3GEO.arvoreDeCamadas.adicionaOpcaoTema($trad("t38"),$trad("t39"),'i3GEO.tema.dialogo.sld(\"'+ltema.name+'\")',node); + i3GEO.arvoreDeCamadas.adicionaOpcaoTema($trad("t43"),$trad("t43"),'i3GEO.tema.dialogo.aplicarsld(\"'+ltema.name+'\")',node); if(ltema.editorsql == "sim" || ltema.editorsql == "SIM") {i3GEO.arvoreDeCamadas.adicionaOpcaoTema($trad("t40"),$trad("t41"),'i3GEO.tema.dialogo.editorsql(\"'+ltema.name+'\")',node);} diff --git a/classesjs/classe_tema.js b/classesjs/classe_tema.js index b6ff98f..bfa8a31 100644 --- a/classesjs/classe_tema.js +++ b/classesjs/classe_tema.js @@ -505,13 +505,26 @@ i3GEO.tema = { Parametros: - idtema - id ue identifica o tema no map file. + idtema - id que identifica o tema no map file. */ sld: function(idtema){ i3GEO.mapa.ativaTema(idtema); i3GEO.janela.cria("500px","350px",i3GEO.configura.locaplic+"/classesphp/mapa_controle.php?funcao=tema2sld&tema="+idtema+"&g_sid="+i3GEO.configura.sid,"","","SLD    "); }, /* + Function: aplicarsld + + Fax o upload de um arquivo SLD (xml) e aplica ao tema + + Parametros: + + idtema - id que identifica o tema no map file. + */ + aplicarsld: function(idtema){ + i3GEO.mapa.ativaTema(idtema); + if(typeof(i3GEOF.download) === 'undefined') + {i3GEO.util.dialogoFerramenta("i3GEO.tema.dialogo.aplicarsld()","aplicarsld","aplicarsld");} }, + /* Function: editorsql Abre a janela de diálogo da ferramenta editorsql diff --git a/classesjs/dicionario.js b/classesjs/dicionario.js index 63017ff..3953143 100644 --- a/classesjs/dicionario.js +++ b/classesjs/dicionario.js @@ -721,7 +721,7 @@ it:"Exporta a legenda para o padrão SLD." }], "t39":[ { -pt:"SLD...", +pt:"Exportar SLD...", en:"SLD...", es:"SLD...", it:"SLD..." @@ -735,7 +735,7 @@ it:"Abre a ferramenta que permite alterar o SQL de acesso aos dados" }], "t41":[ { -pt:"SQL...", +pt:"Editar SQL...", en:"SQL...", es:"SQL...", it:"SQL..." @@ -747,6 +747,13 @@ en:"Curtain...", es:"Cortina...", it:"Tenda..." }], +"t43":[ +{ +pt:"Aplicar SLD...", +en:"Aplicar SLD...", +es:"Aplicar SLD...", +it:"Aplicar SLD..." +}], //guia adiciona "a1":[ { diff --git a/classesjs/dicionario_ajuda.js b/classesjs/dicionario_ajuda.js index 7c5a912..909713e 100644 --- a/classesjs/dicionario_ajuda.js +++ b/classesjs/dicionario_ajuda.js @@ -770,6 +770,14 @@ g_traducao_ajuda = { complemento:"", tela:"", apijs:"i3GEO.tema.dialogo.cortina()" + }, + "91": { + titulo: "Aplicar SLD", + diretorio:"i3geo/classesjs/classe_tema.js", + categoria:"5", + pt:"Aplica um arquivo XML, no formato SLD, ao tema ativo.", + complemento:"SLD é um formato padrão que permite definir filtros e simbologia. Vários softwraes permitem criar arquivos nesse padrão.", + apijs:"i3GEO.tema.dialogo.aplicarsld()" } } }; diff --git a/classesphp/funcoes_gerais.php b/classesphp/funcoes_gerais.php index 782251f..9ef4d13 100644 --- a/classesphp/funcoes_gerais.php +++ b/classesphp/funcoes_gerais.php @@ -618,6 +618,7 @@ function gravaDados($dados,$arq) { fwrite($fp,$dado."\n"); } + fclose($fp); } /* Function: listaTrueType diff --git a/ferramentas/aplicarsld/index.js.php b/ferramentas/aplicarsld/index.js.php new file mode 100644 index 0000000..6aac99b --- /dev/null +++ b/ferramentas/aplicarsld/index.js.php @@ -0,0 +1,133 @@ + +/*jslint plusplus:false,white:false,undef: false, rhino: true, onevar: true, evil: true */ +/* +Title: aplicarsld + +Envia para o servidor um arquivo no formato SLD local e aplica ao tema ativo. + +Veja: + + + +Arquivo: + +i3geo/ferramentas/aplicarsld/index.js.php + +Licenca: + +GPL2 + +I3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet + +Direitos Autorais Reservados (c) 2006 Ministério do Meio Ambiente Brasil +Desenvolvedor: Edmar Moretti edmar.moretti@mma.gov.br + +Este programa é software livre; você pode redistribuí-lo +e/ou modificá-lo sob os termos da Licença Pública Geral +GNU conforme publicada pela Free Software Foundation; +tanto a versão 2 da Licença. +Este programa é distribuído na expectativa de que seja útil, +porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita +de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. +Consulte a Licença Pública Geral do GNU para mais detalhes. +Você deve ter recebido uma cópia da Licença Pública Geral do +GNU junto com este programa; se não, escreva para a +Free Software Foundation, Inc., no endereço +59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. +*/ + + +if(typeof(i3GEOF) === 'undefined'){ + i3GEOF = []; +} +/* +Classe: i3GEOF.aplicarsld +*/ +i3GEOF.aplicarsld = { + /* + Variavel: aguarde + + Estilo do objeto DOM com a imagem de aguarde existente no cabeçalho da janela. + */ + aguarde: "", + /* + Function: inicia + + Inicia a ferramenta. É chamado por criaJanelaFlutuante + + Parametro: + + iddiv {String} - id do div que receberá o conteudo HTML da ferramenta + */ + inicia: function(iddiv){ + try{ + $i(iddiv).innerHTML += i3GEOF.aplicarsld.html(); + new YAHOO.widget.Button( + "i3GEOaplicarsldbotao1", + {onclick:{fn: i3GEOF.aplicarsld.submete}} + ); + } + catch(erro){alert(erro);} + }, + /* + Function: html + + Gera o código html para apresentação das opções da ferramenta + + Retorno: + + String com o código html + */ + html:function(){ + var ins = '
' + + '

Arquivo SLD:

' + + '

' + + '' + + '' + + '

' + + '
'; + return ins; + }, + /* + Function: criaJanelaFlutuante + + Cria a janela flutuante para controle da ferramenta. + */ + criaJanelaFlutuante: function(){ + var janela,divid,temp,titulo,cabecalho,minimiza; + cabecalho = function(){}; + minimiza = function(){ + i3GEO.janela.minimiza("i3GEOF.aplicarsld"); + }; + titulo = "Aplicar SLD    "; + janela = i3GEO.janela.cria( + "320px", + "280px", + "", + "", + "", + titulo, + "i3GEOF.aplicarsld", + false, + "hd", + cabecalho, + minimiza + ); + divid = janela[2].id; + $i("i3GEOF.aplicarsld_corpo").style.backgroundColor = "white"; + i3GEOF.aplicarsld.aguarde = $i("i3GEOF.aplicarsld_imagemCabecalho").style; + i3GEOF.aplicarsld.inicia(divid); + }, + /* + Function: submete + + Submete o arquivo ao servidor. + */ + submete: function(){ + if(i3GEOF.aplicarsld.aguarde.visibility==="visible") + {return;} + i3GEOF.aplicarsld.aguarde.visibility="visible"; + $i("i3GEOaplicarsldf").submit(); + } +}; + diff --git a/ferramentas/aplicarsld/upload.php b/ferramentas/aplicarsld/upload.php new file mode 100644 index 0000000..5f936e3 --- /dev/null +++ b/ferramentas/aplicarsld/upload.php @@ -0,0 +1,80 @@ + + + + + + + +

+Carregando o arquivo...

"; + $dirmap = dirname($map_file); + //verifica nomes + verificaNome($_FILES['i3GEOaplicarsld']['name']); + //sobe arquivo + $Arquivo = $_FILES['i3GEOaplicarsld']['tmp_name']; + $status = move_uploaded_file($Arquivo,$dirmap."/".$_FILES['i3GEOaplicarsld']['name']); + + if($status != 1) + {echo "

Ocorreu um erro no envio do arquivo SLD";paraAguarde();exit;} + if($status == 1) + { + echo "

Arquivo enviado. Aplicando SLD...$tema

"; + $layer = $mapa->getlayerbyname($tema); + $arq = $dirmap."/".$_FILES['i3GEOaplicarsld']['name']; + $abre = fopen($arq, "r"); + $buffer = fread($abre, filesize($arq)); + fclose($abre); + $layer->applySLD($buffer); + $layer->setmetadata("cache",""); + $salvo = $mapa->save($map_file); + echo "

Aplicado!!! Redesenhando o mapa."; + echo ""; + } + else + { + echo "

Erro ao enviar o arquivo.

"; + paraAguarde(); + exit; + } +} +else +{ + echo "

Erro ao enviar o arquivo. Talvez o tamanho do arquivo seja maior do que o permitido.

"; +} +paraAguarde(); +function paraAguarde(){ + echo ""; +} +function verificaNome($nome) +{ + $nome = strtolower($nome); + $lista = explode(".",$nome); + $extensao = $lista[count($lista) - 1]; + if($extensao != "xml" && $extensao != "sld") + { + echo "Nome de arquivo inválido."; + paraAguarde(); + exit; + } +} +?> + + \ No newline at end of file -- libgit2 0.21.2