root / i3geo50 / classesjs / datadownload.js @ 4963
History | View | Annotate | Download (12.6 KB)
1 |
/*
|
---|---|
2 |
Sistema de download de dados geográficos.
|
3 |
|
4 |
Lista os temas configurados no menu de temas e que permitem download.
|
5 |
|
6 |
Para utilizar esse sistema acesse http://localhost/i3geo/datadownload.htm
|
7 |
|
8 |
Pode-se usar um par�metro para abrir o aplicativo e imediatamente mostrar os arquivos para download, por exemplo
|
9 |
|
10 |
datadownload.htm?bioma
|
11 |
|
12 |
Arquivo:
|
13 |
|
14 |
i3geo/classesjs/datadownload.js
|
15 |
|
16 |
Licença:
|
17 |
|
18 |
GPL2
|
19 |
|
20 |
i3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet
|
21 |
|
22 |
Direitos Autorais Reservados (c) 2006 Ministério do Meio Ambiente Brasil
|
23 |
Desenvolvedor: Edmar Moretti edmar.moretti@gmail.com
|
24 |
|
25 |
Este programa é software livre; você pode redistribuí-lo
|
26 |
e/ou modificá-lo sob os termos da Licença Pública Geral
|
27 |
GNU conforme publicada pela Free Software Foundation;
|
28 |
|
29 |
Este programa é distribuído na expectativa de que seja útil,
|
30 |
porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita
|
31 |
de COMERCIABILIDADE OU ADEQUACÃO A UMA FINALIDADE ESPECÍFICA.
|
32 |
Consulte a Licença Pública Geral do GNU para mais detalhes.
|
33 |
Você deve ter recebido uma cópia da Licença Pública Geral do
|
34 |
GNU junto com este programa; se não, escreva para a
|
35 |
Free Software Foundation, Inc., no endereço
|
36 |
59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
|
37 |
|
38 |
Veja:
|
39 |
|
40 |
<datadownload.htm>
|
41 |
*/
|
42 |
/*
|
43 |
Indica a localização do i3geo. Por default, procura no diretório onde foi executada a plicação datadownload.
|
44 |
No caso do datadownload.htm ser disparado de outro local, é necessário definir essa variável antes de chamar a função DDinicia
|
45 |
*/
|
46 |
loc = window.location.href; |
47 |
g_locaplic = loc.split("/datadownload.htm");
|
48 |
g_locaplic = g_locaplic[0];
|
49 |
|
50 |
temp = loc.split("?");
|
51 |
if(temp[1]) |
52 |
{temaDownload = temp[1];}
|
53 |
else
|
54 |
{temaDownload = "";}
|
55 |
|
56 |
//
|
57 |
//para efeitos de compatibilidade
|
58 |
//
|
59 |
try{i3GEO.configura.locaplic = g_locaplic;}
|
60 |
catch(e){}
|
61 |
//
|
62 |
//diretorio onde esta o i3geo
|
63 |
//
|
64 |
g_i3geo = "";
|
65 |
//
|
66 |
//função que será utilizada quando o usuário clicar na árvore
|
67 |
//
|
68 |
g_arvoreClicks = "";
|
69 |
/*
|
70 |
Tipo de acesso aos dados.
|
71 |
|
72 |
g_tipo é uma variável que pode ser definida antes de iniciar a funcao DDinicia
|
73 |
g_tipo = "menutemas", indica que a lista de temas para download será buscada no xml com a lista de temas do I3Geo
|
74 |
se g_tipo for "dir", a aplicação entenderá que se trata de uma busca em diretórios
|
75 |
nesse caso, g_dirbase deve conter a raiz da busca no servidor, por exemplo:
|
76 |
g_dirbase = "/opt/www/html/geodados"
|
77 |
g_dirarquivos indica o diretório inicial para listagem dos arquivos
|
78 |
por default, g_tipo = "menutemas"
|
79 |
|
80 |
Exemplo que pode ser utilizado em um HTML armazenado no diretório vegetacao2002:
|
81 |
|
82 |
g_tipo = "dir"
|
83 |
g_dirbase = "/opt/www/html/geodados/brasil/vegetacao/vegetacao2002"
|
84 |
g_dirbaseDown = "http://"+window.location.host+"/geodados/brasil/vegetacao/vegetacao2002"
|
85 |
g_dirarquivos = "/opt/www/html/geodados/brasil/vegetacao/vegetacao2002"
|
86 |
g_i3geo = "/i3geo"
|
87 |
g_locaplic = "http://"+window.location.host+g_i3geo
|
88 |
|
89 |
Tipo:
|
90 |
{string}
|
91 |
|
92 |
Valores:
|
93 |
|
94 |
dir - indica que os dados serão buscados em diretórios no servidor.
|
95 |
|
96 |
menutemas - indica que os dados serão buscados no arquivo menutemas/menutemas.xml ou
|
97 |
no sistema de administração do i3geo
|
98 |
*/
|
99 |
g_tipo = "menutemas";
|
100 |
/*
|
101 |
Url para o endereço definido em g_dirbase.
|
102 |
É utilizada para montar o link de acesso aos arquivos quando g_tipo = 'dir'
|
103 |
|
104 |
Tipo:
|
105 |
{string}
|
106 |
|
107 |
*/
|
108 |
g_dirbaseDown = "";
|
109 |
|
110 |
/*
|
111 |
Endereço no servidor onde estão os arquivos ou diretórios que poderão ser acessados
|
112 |
|
113 |
Tipo:
|
114 |
{string}
|
115 |
|
116 |
*/
|
117 |
g_dirbase = "";
|
118 |
/*
|
119 |
Endereço do diretório que será acessado na inicialização da aplicação
|
120 |
|
121 |
Tipo:
|
122 |
{string}
|
123 |
|
124 |
*/
|
125 |
g_dirarquivos = "";
|
126 |
/*
|
127 |
Inicia o aplicativo montando a árvore de opções e preenchendo a DIV arvore.
|
128 |
|
129 |
Deve existir no HTML um DIV com id='arvore'.
|
130 |
*/
|
131 |
function DDinicia() |
132 |
{ |
133 |
if(!document.getElementById("arvoreTemas")) |
134 |
{ |
135 |
alert("Nao foi encontrado o DIV arvoreTemas");
|
136 |
return;
|
137 |
} |
138 |
if (g_tipo == "menutemas") |
139 |
{ |
140 |
i3GEO.arvoreDeTemas.INCLUISISTEMAS = false;
|
141 |
i3GEO.arvoreDeTemas.FILTRADOWNLOAD = true;
|
142 |
i3GEO.arvoreDeTemas.INCLUIWMS = false;
|
143 |
i3GEO.arvoreDeTemas.OPCOESADICIONAIS.incluiArvore = false;
|
144 |
i3GEO.arvoreDeTemas.OPCOESADICIONAIS.incluibusca = false;
|
145 |
//i3GEO.arvoreDeTemas.TIPOBOTAO = "radio";
|
146 |
i3GEO.arvoreDeTemas.cria("",g_locaplic,"arvoreTemas","datadownload_download\(this\)"); |
147 |
} |
148 |
if (g_tipo == "dir") |
149 |
{ |
150 |
var p = g_locaplic+"/classesphp/mapa_controle.php?funcao=listaDiretorios&map_file=&diretorio="+g_dirbase; |
151 |
var cp = new cpaint(); |
152 |
//cp.set_debug(2)
|
153 |
cp.set_response_type("JSON");
|
154 |
cp.call(p,"listaDiretorios",processaDiretorios);
|
155 |
} |
156 |
dataDownloadLinks(g_RSSl); |
157 |
if(temaDownload != ""){ |
158 |
datadownload_download({"title":temaDownload});
|
159 |
} |
160 |
} |
161 |
/*
|
162 |
Cahamado pela função DDinicia. Recebe os dados da função Ajax com a lista de diretorios.
|
163 |
|
164 |
Monta a árvore para navegação pelos diretórios.
|
165 |
|
166 |
Parametros:
|
167 |
|
168 |
retorno - string formatada com os dados para montagem da árvore.
|
169 |
*/
|
170 |
function processaDiretorios(retorno) |
171 |
{ |
172 |
if(!document.getElementById("arvoreTemas")) |
173 |
{ |
174 |
alert("Nao foi encontrado o DIV arvoreTemas");
|
175 |
return;
|
176 |
} |
177 |
if ((retorno.data != "erro") && (retorno.data != undefined)) |
178 |
{ |
179 |
treeDir = new Object();
|
180 |
treeDir = treeviewNew("treeDir", "default", "arvoreTemas", null); |
181 |
treeDir.createItem("raiz", "<b>Diretórios</b>", g_locaplic+"/imagens/temas.png", true, true, true, null); |
182 |
treeDir.itemExpand = expandeDiretorio; |
183 |
for (var ig=0;ig<retorno.data.length; ig++) |
184 |
{ |
185 |
var nomeDir = retorno.data[ig];
|
186 |
treeDir.createItem(g_dirbase+"/"+nomeDir, nomeDir, g_locaplic+"/imagens/folder-s.gif", true, true, true, "raiz"); |
187 |
} |
188 |
} |
189 |
} |
190 |
/*
|
191 |
Expande um diretório quando o usuário clica no nó da árvore de diretórios.
|
192 |
|
193 |
Definido na função processaDiretorios. Após serem mostrados os sub-diretórios é disparada a função listaArquivos para mostrar a lista de arquivos existentes no diretório selecionado.
|
194 |
|
195 |
Parametros:
|
196 |
|
197 |
id - id do nó clicado na árvore treeview
|
198 |
*/
|
199 |
function expandeDiretorio(id) |
200 |
{ |
201 |
var volta = function (retorno) |
202 |
{ |
203 |
if ((retorno.data != "erro") && (retorno.data != undefined)) |
204 |
{ |
205 |
for (var ig=0;ig<retorno.data.length; ig++) |
206 |
{ |
207 |
var nomeDir = retorno.data[ig];
|
208 |
if (!document.getElementById(id+"/"+nomeDir)) |
209 |
treeDir.createItem(id+"/"+nomeDir, nomeDir, g_locaplic+"/imagens/folder-s.gif", true, true, true, id); |
210 |
} |
211 |
listaArquivos(id); |
212 |
} |
213 |
}; |
214 |
var p = g_locaplic+"/classesphp/mapa_controle.php?funcao=listaDiretorios&map_file=&diretorio="+id; |
215 |
var cp = new cpaint(); |
216 |
//cp.set_debug(2)
|
217 |
cp.set_response_type("JSON");
|
218 |
cp.call(p,"listaDiretorios",volta);
|
219 |
} |
220 |
/*
|
221 |
Lista os arquivos de um diretório.
|
222 |
|
223 |
No HTML deve existir um DIV com id='corpo'. Nesse div será incluída a lista.
|
224 |
|
225 |
Parametros:
|
226 |
|
227 |
dir - diretório no servidor
|
228 |
*/
|
229 |
function listaArquivos(dir) |
230 |
{ |
231 |
if(!document.getElementById("corpo")) |
232 |
{ |
233 |
alert("Nao foi encontrado o DIV corpo");
|
234 |
return;
|
235 |
} |
236 |
document.getElementById("corpo").innerHTML = ""; |
237 |
var re = new RegExp(g_dirbase, "g"); |
238 |
var d = dir.replace(re,''); |
239 |
var ins = "<div style=text-align:left; >Diretório: "+d+"<br><br>"; |
240 |
var volta = function (retorno) |
241 |
{ |
242 |
if ((retorno.data != "erro") && (retorno.data != undefined)) |
243 |
{ |
244 |
ins += "<b>Diretórios:</b><br><br>";
|
245 |
for (var ig=0;ig<retorno.data.diretorios.length; ig++) |
246 |
{ |
247 |
ins += "<span style=cursor:pointer onclick=listaArquivos('"+g_dirbase+d+"/"+retorno.data.diretorios[ig]+"') ><img src="+g_locaplic+"/imagens/folder-s.gif />"+retorno.data.diretorios[ig]+"</span><br><br>"; |
248 |
} |
249 |
ins += "<b>Arquivos:</b><br><br>";
|
250 |
for (var ig=0;ig<retorno.data.arquivos.length; ig++) |
251 |
{ |
252 |
ins += "<a href='"+g_dirbaseDown+d+"/"+retorno.data.arquivos[ig]+"' target=new >"+retorno.data.arquivos[ig]+"</a><br><br>"; |
253 |
} |
254 |
document.getElementById("corpo").innerHTML = ins;
|
255 |
} |
256 |
}; |
257 |
var p = g_locaplic+"/classesphp/mapa_controle.php?funcao=listaArquivos&map_file=&diretorio="+dir; |
258 |
var cp = new cpaint(); |
259 |
//cp.set_debug(2)
|
260 |
cp.set_response_type("JSON");
|
261 |
cp.call(p,"listaDiretorios",volta);
|
262 |
} |
263 |
/*
|
264 |
Gera os arquivos para download do shape file de um tema.
|
265 |
|
266 |
*/
|
267 |
function datadownload_download(obj) |
268 |
{ |
269 |
if(!$i("panellistaarquivos")){ |
270 |
YAHOO.namespace("datadownloadLista");
|
271 |
YAHOO.datadownloadLista.panel = new YAHOO.widget.Panel("panellistaarquivos", {zIndex:2000, iframe:false, width:"450px",align:"left", visible:false, draggable:true, close:true, modal:true } ); |
272 |
YAHOO.datadownloadLista.panel.setHeader("Arquivos");
|
273 |
YAHOO.datadownloadLista.panel.setBody("");
|
274 |
YAHOO.datadownloadLista.panel.setFooter("");
|
275 |
YAHOO.datadownloadLista.panel.render(document.body); |
276 |
YAHOO.datadownloadLista.panel.center(); |
277 |
}; |
278 |
YAHOO.datadownloadLista.panel.setBody($trad("d28")); |
279 |
YAHOO.datadownloadLista.panel.show(); |
280 |
//document.getElementById("corpo").innerHTML = "Aguarde. Gerando arquivos..."
|
281 |
var p = g_locaplic+"/classesphp/mapa_controle.php?map_file=&funcao=download3&tema="+obj.title; |
282 |
//caso a camada venha do sistema de metadados estatisticos e seja uma variavel
|
283 |
if(obj.name && obj.name === "metaestat"){ |
284 |
p = g_locaplic+"/classesphp/mapa_controle.php?map_file=&funcao=download3&id_medida_variavel="+obj.title;
|
285 |
} |
286 |
if(obj.name && obj.name === "regioesmetaestat"){ |
287 |
p = g_locaplic+"/classesphp/mapa_controle.php?map_file=&funcao=download3&codigo_tipo_regiao="+obj.title.replace("metaregiao_",""); |
288 |
} |
289 |
|
290 |
temaEscolhidoDownload = obj.title; |
291 |
var cp = new cpaint(); |
292 |
//cp.set_debug(2)
|
293 |
cp.set_response_type("JSON");
|
294 |
cp.call(p,"downloadTema2",mostraDownload);
|
295 |
} |
296 |
/*
|
297 |
Mostra na tela os arquivos convertidos para shape file com link para download.
|
298 |
*/
|
299 |
function mostraDownload(retorno) |
300 |
{ |
301 |
var ins = ""; |
302 |
if (retorno.data != undefined) |
303 |
{ |
304 |
retorno = retorno.data; |
305 |
var arqs = retorno.arquivos.split(","); |
306 |
var n = arqs.length;
|
307 |
if(retorno == "erro") |
308 |
{ins = "<p style=color:red >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.<br>";}
|
309 |
else
|
310 |
{ |
311 |
ins = "<b>Links de acesso:</b><br><br>";
|
312 |
ins += "<a href='"+window.location.href.split("?")[0]+"?tema="+retorno.tema+"&temaDownload="+retorno.tema+"'>Link permanente de acesso<br><br>"; |
313 |
ins += "<a href='"+window.location.protocol+"//"+window.location.host+"/"+retorno.mapfileurl+"' target=blank >Arquivo de configuração Mapfile</a><br>"; |
314 |
ins += "<a href='"+g_locaplic+"/classesphp/mapa_controle.php?funcao=TEMA2SLD&tema="+retorno.tema+"&map_file="+retorno.mapfile+"' target=blank >Arquivo de legenda SLD</a><br><br>"; |
315 |
ins += "Serviço OGC: "+g_locaplic+"/ogc.php?tema="+retorno.tema+"<br><br>"; |
316 |
ins += "<a href='"+g_locaplic+"/ogc.php?tema="+retorno.tema+"&SERVICE=WMS&VERSION=1.1.0&REQUEST=GetCapabilities' target=blank >OGC GetCapabilities</a><br><br>"; |
317 |
|
318 |
for (var arq=0;arq<n;arq++) |
319 |
{ |
320 |
ins += "<a href='"+window.location.protocol+"//"+window.location.host+"/"+arqs[arq]+"'>"+arqs[arq]+"</a><br>"; |
321 |
} |
322 |
ins += "<br><a href='"+g_locaplic+"/fontetema.php?tema="+temaEscolhidoDownload+"' target=blank >Fonte</a>"; |
323 |
if(retorno.nreg)
|
324 |
{ins += "<br><br>Número de registros ="+retorno.nreg;}
|
325 |
} |
326 |
} |
327 |
else
|
328 |
{ |
329 |
ins = "<p style=color:red >Ocorreu um erro<br>";
|
330 |
} |
331 |
YAHOO.datadownloadLista.panel.setBody(ins); |
332 |
YAHOO.datadownloadLista.panel.show(); |
333 |
} |
334 |
/*
|
335 |
Mostra uma lista de links baseado em um arquivo rss.
|
336 |
|
337 |
Utilizado para acrescentar outros links no sistema de download
|
338 |
|
339 |
Por default, o rss é menutemas/linksdownload.xml
|
340 |
|
341 |
Parametros:
|
342 |
|
343 |
rss - endereço do arquivo rss.
|
344 |
*/
|
345 |
function dataDownloadLinks(rss) |
346 |
{ |
347 |
var monta = function(retorno) |
348 |
{ |
349 |
var reg = /Erro/gi; |
350 |
if (retorno.data.search(reg) != -1) |
351 |
{ |
352 |
alert("OOps! Ocorreu um erro\n"+retorno.data);
|
353 |
return;
|
354 |
} |
355 |
var linhas = retorno.data.split("|"); |
356 |
var ins = ""; |
357 |
var n = linhas.length;
|
358 |
if(n == 1){return;} |
359 |
for (var i=0;i<n; i++) |
360 |
{ |
361 |
var caso = linhas[i].split("#"); |
362 |
if (i > 0) |
363 |
{ |
364 |
ins += "<a style=text-align:left href='"+caso[2]+"' target=blank >"+caso[0]+" ("+caso[1]+")</a>"; |
365 |
ins += "<br>";
|
366 |
} |
367 |
else
|
368 |
{ins += "<p class=clique ><b>"+caso[0]+"</b> "+caso[1]+" </p>";} |
369 |
} |
370 |
document.getElementById("RSSl").innerHTML = ins;
|
371 |
}; |
372 |
if (document.getElementById("RSSl")) |
373 |
{ |
374 |
if (rss.length > 0) |
375 |
{ |
376 |
var p = g_locaplic+"/classesphp/wscliente.php?funcao=listaRSSws2&rss="+rss.join("|")+"&tipo=DOWNLOAD"; |
377 |
var cp = new cpaint(); |
378 |
//cp.set_debug(2)
|
379 |
cp.set_response_type("JSON");
|
380 |
cp.call(p,"listaRSSws2",monta);
|
381 |
} |
382 |
} |
383 |
} |