Commit d3035b9bd5418c030b69ae766ce57be498848186

Authored by Edmar Moretti
1 parent ffa25349
Exists in master

Otimização da geração de arquivos shapefile para download

classesphp/classe_selecao.php
@@ -870,8 +870,10 @@ parameters: @@ -870,8 +870,10 @@ parameters:
870 $tipo - Tipo de operação adiciona|retira|inverte|limpa|novo 870 $tipo - Tipo de operação adiciona|retira|inverte|limpa|novo
871 871
872 $ext - coordenadas separadas por espaços no estilo xmin ymin xmax ymax 872 $ext - coordenadas separadas por espaços no estilo xmin ymin xmax ymax
  873 +
  874 +$retornaShapes - retorna os shapes selecionados. Nesse caso, nao e gerado o arquivo em disco contendo a selecao
873 */ 875 */
874 - function selecaoBOX($tipo,$ext) { 876 + function selecaoBOX($tipo,$ext,$retornaShapes=false) {
875 if ($tipo == "novo"){ 877 if ($tipo == "novo"){
876 $this->selecaoLimpa(); 878 $this->selecaoLimpa();
877 $tipo = "adiciona"; 879 $tipo = "adiciona";
@@ -906,12 +908,28 @@ $ext - coordenadas separadas por espaços no estilo xmin ymin xmax ymax @@ -906,12 +908,28 @@ $ext - coordenadas separadas por espaços no estilo xmin ymin xmax ymax
906 $ident = $this->layer->queryByRect($rect); 908 $ident = $this->layer->queryByRect($rect);
907 if ($ident != 1){ 909 if ($ident != 1){
908 $res_count = $this->layer->getNumresults(); 910 $res_count = $this->layer->getNumresults();
  911 + //echo $res_count;exit;325449
909 $shpi = array(); 912 $shpi = array();
910 for ($i = 0; $i < $res_count; ++$i) { 913 for ($i = 0; $i < $res_count; ++$i) {
911 $result = $this->layer->getResult($i); 914 $result = $this->layer->getResult($i);
912 - $shpi[] = $result->shapeindex; 915 + if($result != MS_FALSE){
  916 + if($retornaShapes == false){
  917 + $shpi[] = $result->shapeindex;
  918 + }
  919 + else {
  920 + if($this->v >= 6){
  921 + $shpi[] = $this->layer->getshape($result);
  922 + }
  923 + else{
  924 + $shpi[] = $this->layer->getfeature($result->shapeindex,-1);
  925 + }
  926 + }
  927 + }
913 } 928 }
914 } 929 }
  930 + if($retornaShapes == true){
  931 + return $shpi;
  932 + }
915 if ($tipo == "adiciona"){ 933 if ($tipo == "adiciona"){
916 return($this->selecaoAdiciona($shpi,$shp_atual)); 934 return($this->selecaoAdiciona($shpi,$shp_atual));
917 } 935 }
classesphp/funcoes_gerais.php
@@ -1455,12 +1455,13 @@ $prj {string} - String que sera gravada no arquivo prj @@ -1455,12 +1455,13 @@ $prj {string} - String que sera gravada no arquivo prj
1455 1455
1456 $projetaToMap {boolean} - Projeta os shapes para a projecao do mapa 1456 $projetaToMap {boolean} - Projeta os shapes para a projecao do mapa
1457 1457
  1458 +$shapesSel - (opcional) array com os shapes
  1459 +
1458 Retorno: 1460 Retorno:
1459 1461
1460 {string} - nome do arquivo criado ou false se ocorrer erro 1462 {string} - nome do arquivo criado ou false se ocorrer erro
1461 */ 1463 */
1462 -function criaSHP($tema,$map_file,$locaplic,$dir_tmp,$nomeRand=TRUE,$prj="",$projetaToMap=true)  
1463 -{ 1464 +function criaSHP($tema,$map_file,$locaplic,$dir_tmp,$nomeRand=TRUE,$prj="",$projetaToMap=true,$shapesSel=false){
1464 include(dirname(__FILE__)."/../ms_configura.php"); 1465 include(dirname(__FILE__)."/../ms_configura.php");
1465 $versao = versao(); 1466 $versao = versao();
1466 $versao = $versao["principal"]; 1467 $versao = $versao["principal"];
@@ -1490,7 +1491,6 @@ function criaSHP($tema,$map_file,$locaplic,$dir_tmp,$nomeRand=TRUE,$prj=&quot;&quot;,$proj @@ -1490,7 +1491,6 @@ function criaSHP($tema,$map_file,$locaplic,$dir_tmp,$nomeRand=TRUE,$prj=&quot;&quot;,$proj
1490 $projOutObj = ""; 1491 $projOutObj = "";
1491 $projetaToMap = false; 1492 $projetaToMap = false;
1492 } 1493 }
1493 -  
1494 $layer->set("template","none.htm"); 1494 $layer->set("template","none.htm");
1495 $diretorio = dirname($dir_tmp); 1495 $diretorio = dirname($dir_tmp);
1496 $tipol = MS_SHP_POINT; 1496 $tipol = MS_SHP_POINT;
@@ -1543,10 +1543,11 @@ function criaSHP($tema,$map_file,$locaplic,$dir_tmp,$nomeRand=TRUE,$prj=&quot;&quot;,$proj @@ -1543,10 +1543,11 @@ function criaSHP($tema,$map_file,$locaplic,$dir_tmp,$nomeRand=TRUE,$prj=&quot;&quot;,$proj
1543 $novoshpf = ms_newShapefileObj($nomeshp.".shp", -2); 1543 $novoshpf = ms_newShapefileObj($nomeshp.".shp", -2);
1544 $novoshpf->addShape($shape); 1544 $novoshpf->addShape($shape);
1545 $resultadoFinal = true; 1545 $resultadoFinal = true;
1546 -  
1547 } 1546 }
1548 else{ 1547 else{
1549 - $shapesSel = retornaShapesSelecionados($layer,$map_file,$map,false); 1548 + if($shapesSel == false){
  1549 + $shapesSel = retornaShapesSelecionados($layer,$map_file,$map,false);
  1550 + }
1550 $items = pegaItens($layer); 1551 $items = pegaItens($layer);
1551 // cria o dbf 1552 // cria o dbf
1552 $def = array(); 1553 $def = array();
@@ -1685,6 +1686,7 @@ Include: @@ -1685,6 +1686,7 @@ Include:
1685 function downloadTema2($map_file,$tema,$locaplic,$dir_tmp,$postgis_mapa) 1686 function downloadTema2($map_file,$tema,$locaplic,$dir_tmp,$postgis_mapa)
1686 { 1687 {
1687 ini_set("max_execution_time","1800"); 1688 ini_set("max_execution_time","1800");
  1689 + ini_set('memory_limit', '5000M');
1688 $temas = array(); 1690 $temas = array();
1689 if(file_exists($locaplic."/ms_configura.php")){ 1691 if(file_exists($locaplic."/ms_configura.php")){
1690 include($locaplic."/ms_configura.php"); 1692 include($locaplic."/ms_configura.php");
@@ -1927,6 +1929,7 @@ function downloadTema2($map_file,$tema,$locaplic,$dir_tmp,$postgis_mapa) @@ -1927,6 +1929,7 @@ function downloadTema2($map_file,$tema,$locaplic,$dir_tmp,$postgis_mapa)
1927 if(file_exists($sel->qyfile)){ 1929 if(file_exists($sel->qyfile)){
1928 $map->loadquery($sel->qyfile); 1930 $map->loadquery($sel->qyfile);
1929 $numSel = $l->getNumresults(); 1931 $numSel = $l->getNumresults();
  1932 + $nomeshp = criaSHP($tema,$map_file,$locaplic,$dir_tmp,$nomeRand,$projecao["prj"]);
1930 } 1933 }
1931 // 1934 //
1932 //se nao existir selecao seleciona por box 1935 //se nao existir selecao seleciona por box
@@ -1934,12 +1937,11 @@ function downloadTema2($map_file,$tema,$locaplic,$dir_tmp,$postgis_mapa) @@ -1934,12 +1937,11 @@ function downloadTema2($map_file,$tema,$locaplic,$dir_tmp,$postgis_mapa)
1934 // 1937 //
1935 if(!file_exists($sel->qyfile)){ 1938 if(!file_exists($sel->qyfile)){
1936 $box = $rectextent->minx." ".$rectextent->miny." ".$rectextent->maxx." ".$rectextent->maxy; 1939 $box = $rectextent->minx." ".$rectextent->miny." ".$rectextent->maxx." ".$rectextent->maxy;
1937 - $sel->selecaoBOX("novo",$box); 1940 + $shapesSel = $sel->selecaoBOX("novo",$box, true);
1938 //reaproveita arquivo anterior 1941 //reaproveita arquivo anterior
1939 $nomeRand = false; 1942 $nomeRand = false;
  1943 + $nomeshp = criaSHP($tema,$map_file,$locaplic,$dir_tmp,$nomeRand,$projecao["prj"],true,$shapesSel);
1940 } 1944 }
1941 -  
1942 - $nomeshp = criaSHP($tema,$map_file,$locaplic,$dir_tmp,$nomeRand,$projecao["prj"]);  
1943 //remove o arquivo de selecao se ele foi criado apenas para pegar todos os elementos 1945 //remove o arquivo de selecao se ele foi criado apenas para pegar todos os elementos
1944 if($nomeRand == false){ 1946 if($nomeRand == false){
1945 $sel->selecaoLimpa(); 1947 $sel->selecaoLimpa();