/* 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 Licença: 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@gmail.com 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 ADEQUACÃ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: */ /* 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 */ loc = window.location.href; g_locaplic = loc.split("/datadownload.htm"); g_locaplic = g_locaplic[0]; 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 = ""; /* 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"; /* 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 = ""; /* Endereço no servidor onde estão os arquivos ou diretórios que poderão ser acessados Tipo: {string} */ g_dirbase = ""; /* Endereço do diretório que será acessado na inicialização da aplicação Tipo: {string} */ g_dirarquivos = ""; /* 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\)"); } 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({"title":temaDownload}); } } /* 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); } /* Gera os arquivos para download do shape file de um tema. */ function datadownload_download(obj) { 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="+obj.title; //caso a camada venha do sistema de metadados estatisticos e seja uma variavel if(obj.name && obj.name === "metaestat"){ p = g_locaplic+"/classesphp/mapa_controle.php?map_file=&funcao=download3&id_medida_variavel="+obj.title; } if(obj.name && obj.name === "regioesmetaestat"){ p = g_locaplic+"/classesphp/mapa_controle.php?map_file=&funcao=download3&codigo_tipo_regiao="+obj.title.replace("metaregiao_",""); } temaEscolhidoDownload = obj.title; var cp = new cpaint(); //cp.set_debug(2) cp.set_response_type("JSON"); cp.call(p,"downloadTema2",mostraDownload); } /* Mostra na tela os arquivos convertidos para shape file com link para download. */ function mostraDownload(retorno) { var ins = ""; if (retorno.data != undefined) { retorno = retorno.data; var arqs = retorno.arquivos.split(","); var n = arqs.length; if(retorno == "erro") {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 { ins = "Links de acesso:

"; ins += "Link permanente de acesso

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

"; ins += "Serviço OGC: "+g_locaplic+"/ogc.php?tema="+retorno.tema+"

"; ins += "OGC GetCapabilities

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

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

Ocorreu um erro
"; } YAHOO.datadownloadLista.panel.setBody(ins); YAHOO.datadownloadLista.panel.show(); } /* 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); } } }