Commit 8cee961ecdab8c42e718865a2766a32bf7dccee3

Authored by Edmar Moretti
1 parent d0550acb

--no commit message

classesphp/classe_analise.php
... ... @@ -108,6 +108,46 @@ $ext - Extensão geográfica do mapa
108 108 }
109 109 }
110 110 /*
  111 +Method: criaDefDb
  112 +
  113 +Cria um array contendo as definições das colunas que serão criadas em uma tabela DBF conforme as exigências de arquivos dbf
  114 +
  115 +parameters:
  116 +
  117 +$itens - array com os nomes originais das colunas
  118 +
  119 +return:
  120 +{array}
  121 +*/
  122 + function criaDefDb($itens){
  123 + $c = 0;
  124 + $def = array();
  125 + foreach ($items as $ni){
  126 + $ni = strtoupper($ni);
  127 + $def[] = array(substr($ni, 0, 8).$c,"C","254");
  128 + $c = $c + 1;
  129 + }
  130 + return $def;
  131 + }
  132 +/*
  133 +Method: truncaS
  134 +
  135 +Trunca o comprimento de uma string em 255 caracteres
  136 +
  137 +parameters:
  138 +
  139 +$s - string
  140 +
  141 +return
  142 +{string}
  143 +*/
  144 + function truncaS($s){
  145 + if(strlen($s) > 255){
  146 + $s = substr($s,0,255);
  147 + }
  148 + return $s;
  149 + }
  150 +/*
111 151 Method: salva
112 152  
113 153 Salva o mapfile atual
... ... @@ -979,9 +1019,7 @@ $locaplic - Localização do I3geo.
979 1019 $layerPt->close();
980 1020 //gera o novo arquivo shape file
981 1021 // cria o dbf
982   - $def = array();
983   - foreach ($itemspt as $ni)
984   - {$def[] = array(substr($ni, 0, 10),"C","254");}
  1022 + $def = $this->criaDefDb($itemspt);
985 1023 //pega os itens dos temas poligonais
986 1024 $layersPol = array();
987 1025 $temas = explode(",",$temasPo);
... ... @@ -1024,7 +1062,7 @@ $locaplic - Localização do I3geo.
1024 1062 foreach($spts as $spt)
1025 1063 {
1026 1064 foreach ($itemspt as $ni)
1027   - {$reg[] = $spt->values[$ni];}
  1065 + {$reg[] = $this->truncaS($spt->values[$ni]);}
1028 1066 $novoshpf->addShape($spt);
1029 1067 $lineo = $spt->line(0);
1030 1068 $pt = $lineo->point(0);
... ... @@ -1047,7 +1085,7 @@ $locaplic - Localização do I3geo.
1047 1085  
1048 1086 $shape = $layer->getfeature($shp_index,-1);
1049 1087 foreach ($itens as $item)
1050   - {$reg[] = $shape->values[$item];}
  1088 + {$reg[] = $this->truncaS($shape->values[$item]);}
1051 1089 }
1052 1090 else
1053 1091 {
... ... @@ -1302,10 +1340,8 @@ nome do layer criado com o buffer.
1302 1340 // cria o shapefile
1303 1341 $novoshpf = ms_newShapefileObj($nomeshp, MS_SHP_POLYGON);
1304 1342 // cria o dbf
1305   - $def = array();
  1343 + $def = $this->criaDefDb($items);
1306 1344 $def[] = array("i3geo","C","254");
1307   - foreach ($items as $ni)
1308   - {$def[] = array(substr($ni, 0, 10),"C","254");}
1309 1345 if(!function_exists(dbase_create))
1310 1346 {$db = xbase_create($nomeshp.".dbf", $def);xbase_close($db);}
1311 1347 else
... ... @@ -1315,9 +1351,9 @@ nome do layer criado com o buffer.
1315 1351 $db=xbase_open($dbname,2);
1316 1352 for($i = 0;$i < count($buffers);++$i)
1317 1353 {
1318   - $reg[] = $i;
1319 1354 foreach ($items as $ni)
1320   - {$reg[] = $shapes[$i]->values[$ni];}
  1355 + {$reg[] = $this->truncaS($shapes[$i]->values[$ni]);}
  1356 + $reg[] = $i;
1321 1357 $novoshpf->addShape($buffers[$i]);
1322 1358 xbase_add_record($db,$reg);
1323 1359 $reg = array();
... ... @@ -1473,9 +1509,7 @@ $locaplic - Localização do I3geo.
1473 1509 $novoshpf = ms_newShapefileObj($nomeshp, MS_SHP_POINT);
1474 1510 $items = pegaItens($this->layer);
1475 1511 // cria o dbf
1476   - $def = array();
1477   - foreach ($items as $ni)
1478   - {$def[] = array(substr($ni, 0, 10),"C","254");}
  1512 + $def = $this->criaDefDb($items);
1479 1513 if(!function_exists(dbase_create))
1480 1514 {$db = xbase_create($nomeshp.".dbf", $def);xbase_close($db);}
1481 1515 else
... ... @@ -1486,7 +1520,7 @@ $locaplic - Localização do I3geo.
1486 1520 for($i = 0;$i < count($centroides);++$i)
1487 1521 {
1488 1522 foreach ($items as $ni)
1489   - {$reg[] = $shapes[$i]->values[$ni];}
  1523 + {$reg[] = $this->truncaS($shapes[$i]->values[$ni]);}
1490 1524 $novoshpf->addShape($centroides[$i]);
1491 1525 xbase_add_record($db,$reg);
1492 1526 $reg = array();
... ...
classesphp/funcoes_gerais.php
... ... @@ -1854,14 +1854,16 @@ function criaSHP($tema,$map_file,$locaplic,$dir_tmp,$nomeRand=TRUE)
1854 1854 $items = pegaItens($layer);
1855 1855 // cria o dbf
1856 1856 $def = array();
  1857 + $cni = 0;
1857 1858 foreach ($items as $ni)
1858 1859 {
1859 1860 $temp = strtoupper($ni);
1860   - $temp = substr($temp,0,9);
  1861 + $temp = substr($temp,0,8).$cni;
1861 1862 //
1862 1863 //nao tem como descobrir o tamanho e tipo do campo
1863 1864 //
1864 1865 $def[] = array($temp,"C","254");
  1866 + $cni = $cni + 1;
1865 1867 }
1866 1868 if(!function_exists("dbase_create"))
1867 1869 {$db = xbase_create($nomeshp.".dbf", $def);}
... ...