/* Title: Data download Sistema de download de dados geográficos. Lista os temas configurados no menu de temas e que permitem download. Para utilizar esse sistema acesse http://localhost/i3geo/datadownload.htm Pode-se usar um parâmetro para abrir o aplicativo e imediatamente mostrar os arquivos para download, por exemplo datadownload.htm?bioma Arquivo: i3geo/classesjs/datadownload.js 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; 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. Veja: */ /* Propriedade: g_locaplic Indica a localização do i3geo. Por default, procura no diretório onde foi executada a plicação datadownload. No caso do datadownload.htm ser disparado de outro local, é necessário definir essa variável antes de chamar a função DDinicia */ var loc = window.location.href; g_locaplic = loc.split("/datadownload.htm"); g_locaplic = g_locaplic[0] var temp = loc.split("?"); if(temp[1]) {temaDownload = temp[1]} else {temaDownload = ""} // //para efeitos de compatibilidade // try{i3GEO.configura.locaplic = g_locaplic} catch(e){} // //diretorio onde esta o i3geo // g_i3geo = "" // //função que será utilizada quando o usuário clicar na árvore // g_arvoreClicks = "" /* Propriedade: g_tipo Tipo de acesso aos dados. g_tipo é uma variável que pode ser definida antes de iniciar a funcao DDinicia g_tipo = "menutemas", indica que a lista de temas para download será buscada no xml com a lista de temas do I3Geo se g_tipo for "dir", a aplicação entenderá que se trata de uma busca em diretórios nesse caso, g_dirbase deve conter a raiz da busca no servidor, por exemplo: g_dirbase = "/opt/www/html/geodados" g_dirarquivos indica o diretório inicial para listagem dos arquivos por default, g_tipo = "menutemas" Exemplo que pode ser utilizado em um HTML armazenado no diretório vegetacao2002: g_tipo = "dir" g_dirbase = "/opt/www/html/geodados/brasil/vegetacao/vegetacao2002" g_dirbaseDown = "http://"+window.location.host+"/geodados/brasil/vegetacao/vegetacao2002" g_dirarquivos = "/opt/www/html/geodados/brasil/vegetacao/vegetacao2002" g_i3geo = "/i3geo" g_locaplic = "http://"+window.location.host+g_i3geo Tipo: {string} Valores: dir - indica que os dados serão buscados em diretórios no servidor. menutemas - indica que os dados serão buscados no arquivo menutemas/menutemas.xml ou no sistema de administração do i3geo */ g_tipo = "menutemas" /* Propriedade: g_dirbaseDown Url para o endereço definido em g_dirbase. É utilizada para montar o link de acesso aos arquivos quando g_tipo = 'dir' Tipo: {string} */ g_dirbaseDown = "" /* Propriedade: g_dirbase Endereço no servidor onde estão os arquivos ou diretórios que poderão ser acessados Tipo: {string} */ g_dirbase = "" /* Propriedade: g_dirarquivos Endereço do diretório que será acessado na inicialização da aplicação Tipo: {string} */ g_dirarquivos = "" /* Function: DDinicia Inicia o aplicativo montando a árvore de opções e preenchendo a DIV arvore. Deve existir no HTML um DIV com id='arvore'. */ function DDinicia() { if(!document.getElementById("arvoreTemas")) { alert("Nao foi encontrado o DIV arvoreTemas"); return; } if (g_tipo == "menutemas") { i3GEO.arvoreDeTemas.INCLUISISTEMAS = false i3GEO.arvoreDeTemas.FILTRADOWNLOAD = true i3GEO.arvoreDeTemas.INCLUIWMS = false i3GEO.arvoreDeTemas.OPCOESADICIONAIS.incluiArvore = false i3GEO.arvoreDeTemas.OPCOESADICIONAIS.incluibusca = false //i3GEO.arvoreDeTemas.TIPOBOTAO = "radio"; i3GEO.arvoreDeTemas.cria("",g_locaplic,"arvoreTemas","datadownload_download\(this.title\)"); } if (g_tipo == "dir") { var p = g_locaplic+"/classesphp/mapa_controle.php?funcao=listaDiretorios&map_file=&diretorio="+g_dirbase; var cp = new cpaint(); //cp.set_debug(2) cp.set_response_type("JSON"); cp.call(p,"listaDiretorios",processaDiretorios); } dataDownloadLinks(g_RSSl) if(temaDownload != ""){ datadownload_download(temaDownload); } } /* Function: processaDiretorios Cahamado pela função DDinicia. Recebe os dados da função Ajax com a lista de diretorios. Monta a árvore para navegação pelos diretórios. Parametros: retorno - string formatada com os dados para montagem da árvore. */ function processaDiretorios(retorno) { if(!document.getElementById("arvoreTemas")) { alert("Nao foi encontrado o DIV arvoreTemas"); return; } if ((retorno.data != "erro") && (retorno.data != undefined)) { treeDir = new Object(); treeDir = treeviewNew("treeDir", "default", "arvoreTemas", null); treeDir.createItem("raiz", "Diretórios", g_locaplic+"/imagens/temas.png", true, true, true, null); treeDir.itemExpand = expandeDiretorio; for (var ig=0;ig
" var volta = function (retorno) { if ((retorno.data != "erro") && (retorno.data != undefined)) { ins += "Diretórios:

" for (var ig=0;ig"+retorno.data.diretorios[ig]+"

" } ins += "Arquivos:

" for (var ig=0;ig"+retorno.data.arquivos[ig]+"

" } document.getElementById("corpo").innerHTML = ins } } var p = g_locaplic+"/classesphp/mapa_controle.php?funcao=listaArquivos&map_file=&diretorio="+dir; var cp = new cpaint(); //cp.set_debug(2) cp.set_response_type("JSON"); cp.call(p,"listaDiretorios",volta); } /* Function: download Gera os arquivos para download do shape file de um tema. Parametros: tema - código do tema para download */ function datadownload_download(tema) { if(!$i("panellistaarquivos")){ YAHOO.namespace("datadownloadLista"); YAHOO.datadownloadLista.panel = new YAHOO.widget.Panel("panellistaarquivos", {zIndex:2000, iframe:false, width:"450px",align:"left", visible:false, draggable:true, close:true, modal:true } ); YAHOO.datadownloadLista.panel.setHeader("Arquivos"); YAHOO.datadownloadLista.panel.setBody(""); YAHOO.datadownloadLista.panel.setFooter(""); YAHOO.datadownloadLista.panel.render(document.body); YAHOO.datadownloadLista.panel.center(); }; YAHOO.datadownloadLista.panel.setBody($trad("d28")); YAHOO.datadownloadLista.panel.show(); //document.getElementById("corpo").innerHTML = "Aguarde. Gerando arquivos..." var p = g_locaplic+"/classesphp/mapa_controle.php?map_file=&funcao=download3&tema="+tema; temaEscolhidoDownload = tema; var cp = new cpaint(); //cp.set_debug(2) cp.set_response_type("JSON"); cp.call(p,"downloadTema2",mostraDownload); } /* Function: mostraDownload Mostra na tela os arquivos convertidos para shape file com link para download. */ function mostraDownload(retorno) { if (retorno.data != undefined) { var retorno = retorno.data var arqs = retorno.arquivos.split(",") var n = arqs.length; if(retorno == "erro") {var ins = "

Ocorreu um erro. O tema não foi encontrado. Pode ser que o código do tema não existe na definição do mapfile. Informe o administrador do sistema.
";} else { var ins = "Clique nos links para pegar os arquivos.

" ins += "Arquivo de configuração Mapfile
"; ins += "Arquivo de legenda SLD

"; for (var arq=0;arq"+arqs[arq]+"
" } ins += "
Fonte"; if(retorno.nreg) {ins += "

Número de registros ="+retorno.nreg;} } } else { var ins = "

Ocorreu um erro
" } YAHOO.datadownloadLista.panel.setBody(ins); YAHOO.datadownloadLista.panel.show(); } /* Function: dataDownloadLinks Mostra uma lista de links baseado em um arquivo rss. Utilizado para acrescentar outros links no sistema de download Por default, o rss é menutemas/linksdownload.xml Parametros: rss - endereço do arquivo rss. */ function dataDownloadLinks(rss) { var monta = function(retorno) { var reg = /Erro/gi; if (retorno.data.search(reg) != -1) { alert("OOps! Ocorreu um erro\n"+retorno.data); return; } var linhas = retorno.data.split("|") var ins = "" var n = linhas.length; if(n == 1){return;} for (var i=0;i 0) { ins += ""+caso[0]+" ("+caso[1]+")" ins += "
" } else {ins += "

"+caso[0]+" "+caso[1]+" 

"} } document.getElementById("RSSl").innerHTML = ins } if (document.getElementById("RSSl")) { if (rss.length > 0) { var p = g_locaplic+"/classesphp/wscliente.php?funcao=listaRSSws2&rss="+rss.join("|")+"&tipo=DOWNLOAD"; var cp = new cpaint(); //cp.set_debug(2) cp.set_response_type("JSON"); cp.call(p,"listaRSSws2",monta); } } }