Commit c36a6a2396b7c38b5caddf32d4537ed764d40863

Authored by Edmar Moretti
1 parent fa64b543

Aprimoramento das funções de download (documentação e rotinas de download de imagens)

classesjs/datadownload.js
... ... @@ -308,21 +308,23 @@ function mostraDownload(retorno)
308 308 {
309 309 var retorno = retorno.data
310 310 var arqs = retorno.split(",")
311   - var ins = "<b>Clique nos links para pegar os arquivos. Para obter os metadados, veja o link na árvore ao lado (o link é mostrado ao expandir o nó correspondente ao tema).</b><br><br>"
312   - for (var arq=0;arq<arqs.length;arq++)
  311 + var n = arqs.length;
  312 + if(retorno == "erro")
  313 + {var 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>";}
  314 + else
313 315 {
314   - var temp = arqs[arq].split(".");
315   - arqs[arq] = temp[0];
316   - ins += "<a href='"+window.location.protocol+"//"+window.location.host+arqs[arq]+".shp'>"+arqs[arq]+".shp<br>"
317   - ins += "<a href='"+window.location.protocol+"//"+window.location.host+arqs[arq]+".dbf'>"+arqs[arq]+".dbf<br>"
318   - ins += "<a href='"+window.location.protocol+"//"+window.location.host+arqs[arq]+".shx'>"+arqs[arq]+".shx<br><br>"
  316 + var ins = "<b>Clique nos links para pegar os arquivos. Para obter os metadados, veja o link na árvore ao lado (o link é mostrado ao expandir o nó correspondente ao tema).</b><br><br>"
  317 + for (var arq=0;arq<n;arq++)
  318 + {
  319 + ins += "<a href='"+window.location.protocol+"//"+window.location.host+"/"+arqs[arq]+"'>"+arqs[arq]+"<br>"
  320 + }
319 321 }
320   - document.getElementById("corpo").innerHTML = ins
321 322 }
322 323 else
323 324 {
324   - document.getElementById("corpo").innerHTML = "<p style=color:red >Ocorreu um erro<br>"
  325 + var ins = "<p style=color:red >Ocorreu um erro<br>"
325 326 }
  327 + document.getElementById("corpo").innerHTML = ins
326 328 }
327 329 /*
328 330 Function: dataDownloadLinks
... ...
classesphp/funcoes_gerais.php
... ... @@ -1186,7 +1186,7 @@ function agrupaValores($lista,$indiceChave,$indiceValor,$tipo)
1186 1186 /*
1187 1187 function: pegaItens
1188 1188  
1189   -Pega os itens de um tema e armazena em cache.
  1189 +Pega os itens da tabela de atributos de um tema.
1190 1190  
1191 1191 parameter:
1192 1192 $layer - objeto layer
... ... @@ -1199,14 +1199,6 @@ function pegaItens($layer)
1199 1199 else
1200 1200 $items = array();
1201 1201 return $items;
1202   -/*
1203   - if ($layer->type != 3)
1204   - {$layer->open();}
1205   - $items = $layer->getItems();
1206   - if ($layer->type != 3)
1207   - {$layer->close();}
1208   - return $items;
1209   -*/
1210 1202 }
1211 1203 /*
1212 1204 function: buscaRapida
... ... @@ -1604,6 +1596,9 @@ function criaSHP($tema,$map_file,$locaplic,$dir_tmp,$nomeRand=TRUE)
1604 1596 foreach ($items as $ni)
1605 1597 {
1606 1598 $temp = strtoupper($ni);
  1599 + //
  1600 + //nao tem como descobrir o tamanho e tipo do campo
  1601 + //
1607 1602 $def[] = array($temp,"C","254");
1608 1603 }
1609 1604 $db = xbase_create($nomeshp.".dbf", $def);
... ... @@ -1675,6 +1670,9 @@ function downloadTema($map_file,$tema,$locaplic,$dir_tmp)
1675 1670 include_once($locaplic."/ms_configura.php");
1676 1671 else
1677 1672 include_once("../ms_configura.php");
  1673 + //
  1674 + //cria o arquivo mapfile, caso ele não exista, que servirá de base para obtenção dos dados
  1675 + //
1678 1676 if (($map_file == "") || (!@ms_newMapObj($map_file))) //a funcao foi chamada do aplicativo datadownload
1679 1677 {
1680 1678 if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN'))
... ... @@ -1684,6 +1682,11 @@ function downloadTema($map_file,$tema,$locaplic,$dir_tmp)
1684 1682 $map_file = $dir_tmp."/".nomerandomico(20).".map";
1685 1683 $map_tmp->save($map_file);
1686 1684 }
  1685 + //
  1686 + //verifica se o tema existe no mapfile
  1687 + //se não existir, tenta inserir com base no mapfile existente no diretório temas
  1688 + //o tema pode existir se a função estiver sendo chamada da árvore de temas de um mapa já aberto
  1689 + //
1687 1690 $temasdir = $locaplic."/temas";
1688 1691 $map = ms_newMapObj($map_file);
1689 1692 $teste = @$map->getlayerbyname($tema);
... ... @@ -1697,13 +1700,22 @@ function downloadTema($map_file,$tema,$locaplic,$dir_tmp)
1697 1700 ms_newLayerObj($map, $ll);
1698 1701 }
1699 1702 }
  1703 + //
  1704 + //verifica novamente se o layer existe
  1705 + //
1700 1706 $teste = @$map->getlayerbyname($tema);
1701 1707 if ($teste == "")
1702 1708 {return "erro";}
  1709 + //
  1710 + //salva o mapfile com um outro nome para evitar que o mapa atual, se estiver aberto, seja modificado
  1711 + //
1703 1712 $map->save(str_replace(".map","tmp.map",$map_file));
1704 1713 $map_file = str_replace(".map","tmp.map",$map_file);
1705 1714 $map = ms_newMapObj($map_file);
  1715 + //
1706 1716 //verifica se existe mais de um tema (grupo) montando o array com os temas
  1717 + //os grupos podem ter o nome do layer em GROUP ao invés de NAME
  1718 + //
1707 1719 $multilayer = 0;
1708 1720 $grupos = $map->getAllGroupNames();
1709 1721 foreach ($grupos as $grupo)
... ... @@ -1733,11 +1745,21 @@ function downloadTema($map_file,$tema,$locaplic,$dir_tmp)
1733 1745 {
1734 1746 if (file_exists($dados))
1735 1747 {
1736   - $arq = basename($dados);
1737   - $resultado[] = str_replace("/img","/",$map->web->imageurl).$arq;
1738   - $arq = explode(".",$arq);
1739   - $resultado[] = str_replace("/img","/",$map->web->imageurl).$arq[0].".wld";
  1748 + $dir = dirname($dados);
  1749 + $arq = explode(".",basename($dados));
  1750 + $nomecopia = $dir_tmp."/".$arq[0];
  1751 + $exts = array("jpg","jpw","tif","tifw","tfw","png","pngw","jpgw","wld");
  1752 + foreach($exts as $ext)
  1753 + {
  1754 + $copia = $nomecopia.".".$ext;
  1755 + if(!file_exists($copia) && file_exists($dir."/".$arq[0].".".$ext))
  1756 + {copy($dir."/".$arq[0].".".$ext,$copia);}
  1757 + if(file_exists($copia))
  1758 + $resultado[] = basename($dir_tmp)."/".basename($copia);
  1759 + }
1740 1760 }
  1761 + else
  1762 + {return "erro";}
1741 1763 }
1742 1764 else
1743 1765 {
... ... @@ -1762,13 +1784,15 @@ function downloadTema($map_file,$tema,$locaplic,$dir_tmp)
1762 1784 copy($arq[0].".shx",$nomeshp.".shx");
1763 1785 copy($arq[0].".dbf",$nomeshp.".dbf");
1764 1786 }
1765   - $resultado[] = str_replace($radtmp,"",$nomeshp);
1766 1787 }
1767 1788 else
1768 1789 {
1769 1790 $restemp = criaSHP($tema,$map_file,$locaplic,$dir_tmp,FALSE);
1770   - $resultado[] = str_replace($radtmp,"",$restemp);
  1791 + $novonomelayer = str_replace($radtmp,"",$restemp);
1771 1792 }
  1793 + $resultado[] = basename($dir_tmp)."/".$novonomelayer.".shp";
  1794 + $resultado[] = basename($dir_tmp)."/".$novonomelayer.".dbf";
  1795 + $resultado[] = basename($dir_tmp)."/".$novonomelayer.".shx";
1772 1796 }
1773 1797 }
1774 1798 return(implode(",",$resultado));
... ...
ferramentas/download/index.htm
... ... @@ -13,7 +13,7 @@ body {
13 13 </style>
14 14 </head>
15 15 <body style='background-color:white;margin:0px'>
16   -<div style="top:0px;left:10px;width:90%;" id='resultado' >&nbsp;Aguarde...</div>
  16 +<div style="top:0px;left:10px;width:90%;overflow:auto;height:150px;" id='resultado' >&nbsp;Aguarde...</div>
17 17 <script language="JavaScript" type="text/javascript" src="../funcoes.js"></script>
18 18 <script src="../../pacotes/cpaint/cpaint2.inc.compressed.js" type="text/javascript"></script>
19 19 <script language="JavaScript" type="text/javascript" src="index.js"></script>
... ...
ferramentas/download/index.js
... ... @@ -33,32 +33,28 @@ function download()
33 33 }
34 34 function mostraDownload(retorno)
35 35 {
  36 +
  37 + aguarde("none")
36 38 if (retorno.data != undefined)
37 39 {
38 40 var retorno = retorno.data
39   - aguarde("none")
40 41 var arqs = retorno.split(",")
41   - var ins = "Clique nos links para pegar os arquivos e gravar em seu computador. Caso vc deseje alterar os nomes, mantenha as extensões e use o mesmo nome para cada arquivo.<br><br>"
42   - for (arq=0;arq<arqs.length;arq++)
  42 + var n = arqs.length;
  43 + if(retorno == "erro")
  44 + {var 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>";}
  45 + else
43 46 {
44   - var temp = arqs[arq].split(".");
45   - if ((temp[1] == "png") || (temp[1] == "tif") || (temp[1] == "wld"))
46   - {
47   - ins += "<a href='"+window.location.protocol+"//"+window.location.host+arqs[arq]+"'>"+arqs[arq]+"<br>"
48   - }
49   - else
  47 + var ins = "<b>Clique nos links para pegar os arquivos.</b><br><br>"
  48 + for (var arq=0;arq<n;arq++)
50 49 {
51   - arqs[arq] = temp[0];
52   - ins += "<a href='"+window.location.protocol+"//"+window.location.host+arqs[arq]+".shp'>"+arqs[arq]+".shp<br>"
53   - ins += "<a href='"+window.location.protocol+"//"+window.location.host+arqs[arq]+".dbf'>"+arqs[arq]+".dbf<br>"
54   - ins += "<a href='"+window.location.protocol+"//"+window.location.host+arqs[arq]+".shx'>"+arqs[arq]+".shx<br><br>"
  50 + ins += "<a href='"+window.location.protocol+"//"+window.location.host+"/"+arqs[arq]+"'>"+arqs[arq]+"<br>"
55 51 }
56 52 }
57   - $i("resultado").innerHTML = ins
58 53 }
59 54 else
60 55 {
61   - $i("resultado").innerHTML = "<p style=color:red >Ocorreu um erro<br>"
  56 + var ins = "<p style=color:red >Ocorreu um erro<br>"
62 57 }
63   - aguarde("none")
  58 + document.getElementById("resultado").innerHTML = ins
  59 +
64 60 }
65 61 \ No newline at end of file
... ...
menutemas/admin.db
No preview for this file type
temas/biomashp.map
... ... @@ -2,7 +2,6 @@ MAP
2 2 SYMBOLSET ../symbols/simbolos.sym
3 3 FONTSET "../symbols/fontes.txt"
4 4 LAYER
5   - CONNECTION ""
6 5 DATA "c:\ms4w\apache\htdocs\geodados\brasil\vegetacao\biomas.shp"
7 6 METADATA
8 7 "CLASSE" "SIM"
... ...