locaplic = $locaplic; $this->mapa = ms_newMapObj($map_file); $this->arquivo = $map_file; $this->layer = ""; if($tema != "" && @$this->mapa->getlayerbyname($tema)){ $this->layer = $this->mapa->getlayerbyname($tema); } $this->nome = $tema; if($ext && $ext != ""){ $e = explode(" ",$ext); $extatual = $this->mapa->extent; $extatual->setextent((min($e[0],$e[2])),(min($e[1],$e[3])),(max($e[0],$e[2])),(max($e[1],$e[3]))); } } /* function: salva Salva o mapfile atual */ function salva() { if (connection_aborted()){exit();} $this->mapa->save($this->arquivo); } /* Function: aplicacoresrgb Aplica cores nas classes atuais conforme uma lista de cores em RGB Parametro: cores {array} - array com a lista de valores RGB */ function aplicacoresrgb($cores) { if(!$this->layer){return "erro";} $numclasses = $this->layer->numclasses; if ($numclasses > 0) { for ($i=0; $i < $numclasses; ++$i) { $classe = $this->layer->getClass($i); $estilo = $classe->getstyle(0); if($cores[$i]) { $cor = explode(",",$cores[$i]); $ncor = $estilo->color; $ncor->setrgb($cor[0],$cor[1],$cor[2]); } } } $this->layer->setMetaData("cache",""); return("ok"); } /* function: simbolounico Elimina as classes existentes em um objeto layer mantendo apenas a primeira classe. Todos os elementos passarão a ser desenhados conforme essa primeira classe, uma vez que a expressão de definição da classe passa a ser vazia. */ function simbolounico() { if(!$this->layer){return "erro";} $numclasses = $this->layer->numclasses; if ($numclasses > 0) { //elimina a expressão da primeira classe $classe0 = $this->layer->getClass(0); //echo "
";var_dump($classe0);exit;
$classe0->setexpression("");
$classe0->set("name"," ");
//apaga todas as classes menos a primeira
for ($i=1; $i < $numclasses; ++$i)
{
$classe = $this->layer->getClass($i);
$classe->set("status",MS_DELETE);
}
}
$this->layer->setMetaData("cache","");
return("ok");
}
/*
function: alteraclasses
Altera as classes existentes em um objeto layer conforme a lista de índices, nomes e expressões definidas nos parâmetros passados como argumentos.
Parametros:
$ids - lista de ids, separados por vírgula, que identificam as classes no layer
$nomes - lista com os novos nomes
$exps - lista com as novas expressões
$base64 sim|nao indica se as strings estao codificadas em base64
*/
function alteraclasses($ids,$nomes,$exps,$base64="nao")
{
if($base64 == "sim"){
$ids = base64_decode($ids);
$nomes = base64_decode($nomes);
$exps = base64_decode($exps);
}
//prepara os arrays com os valores
$ids = explode(";",$ids);
//$nomes = mb_convert_encoding($nomes,"ISO-8859-1","UTF-8");
$nomes = explode(";",$nomes);
//$exps = mb_convert_encoding($exps,"ISO-8859-1","UTF-8");
$exps = explode(";",$exps);
//pega os layers existentes no array ids e armazena no array t
$c = count($ids);
for ($i=0; $i < $c; ++$i){
$tx = explode("-",$ids[$i]);
$t[] = $tx[0];
}
//elimina nomes de layers duplicados
$t = array_unique($t);
//elimina as classes existentes atualmente em cada layer
foreach ($t as $tema)
{
$layer = $this->mapa->getlayerbyname($tema);
$layer->setMetaData("cache","");
$nc = $layer->numclasses;
for($i=0;$i < $nc;++$i)
{
$class = $layer->getclass($i);
$class->set("status",MS_DELETE);
}
}
//acrescenta as classes definidas
$c = count($ids);
for ($i=0; $i < $c; ++$i)
{
$layerc = explode("-",$ids[$i]); //nome do layer é o indice 0 do array
$layer = $this->mapa->getlayerbyname($layerc[0]);
$layer->setMetaData("cache","");
$ncl = $layer->numclasses;
if ($layerc[1] < $ncl)
{
$classe = $layer->getclass($layerc[1]);
$classe->set("status",MS_DEFAULT);
$classe->set("name",$nomes[$i]);
$e = $exps[$i];
$e = str_replace("\\","'",$e);
$e = str_replace('"',"'",$e);
$e = str_replace("''","'",$e);
$e = str_replace("##","'",$e);
$classe->setexpression($e);
}
}
}
/*
function: intervalosiguais
Cria classes em um objeto layer com intervalos iguais baseando-se em um item numérico na tabela de atributos com um número de classes fixos.
Parametros:
$item - item da tabela de atributos
$nclasses - número de classes
$ignorar - valor que será ignorado na listagem final
*/
function intervalosiguais($item,$nclasses,$ignorar)
{
if(!$this->layer){return "erro";}
$valores = $this->pegaValores($this->mapa,$this->layer,$item,true,$ignorar);
if (count($valores) > 0)
{
//calcula o menor valor e o maior valor
$min = min($valores);
$max = max($valores);
$intervalo = ($max - $min) / $nclasses;
$numclassesatual = $this->layer->numclasses;
//apaga todas as classes existentes
$classetemp = $this->layer->getClass(0);
$estilotemp = $classetemp->getStyle(0);
for ($i=0; $i < $numclassesatual; ++$i)
{
$classe = $this->layer->getClass($i);
$classe->set("status",MS_DELETE);
}
//adiciona as classes novas
$intatual = $min;
for ($i=0; $i < $nclasses; ++$i)
{
if ($i == $nclasses - 1)
{$expressao = "(([".$item."]>=".$intatual.")and([".$item."]<=".($intatual+$intervalo)."))";}
else
{$expressao = "(([".$item."]>=".$intatual.")and([".$item."]<".($intatual+$intervalo)."))";}
$nomeclasse = ">= ".$intatual." e < que ".($intatual+$intervalo);
$intatual = $intatual + $intervalo;
$classe = ms_newClassObj($this->layer);
$novoestilo = ms_newStyleObj($classe);
if ($this->layer->type == 0)
{
$novoestilo->set("symbolname","ponto");
$novoestilo->set("size","6");
}
$ncor = $novoestilo->color;
$ncor->setrgb((mt_rand(0,255)),(mt_rand(0,255)),(mt_rand(0,255)));
$ncor = $novoestilo->outlinecolor;
$ncor->setrgb(255,255,255);
$classe->setexpression($expressao);
$classe->set("name",$nomeclasse);
$classe->set("title",($this->layer->name)."+".$i);
}
$this->layer->setMetaData("cache","");
return ("ok");
}
else
{return ("erro. Nenhum valor numerico no item");}
}
/*
function: quantil
Cria classes em um objeto layer com intervalos baseados no calculo de quantil
Parametros:
$item - item da tabela de atributos
$nclasses - número de classes
$ignorar - valor que será ignorado na listagem final
*/
function quantil($item,$nclasses,$ignorar)
{
if(!$this->layer){return "erro";}
$valores = $this->pegaValores($this->mapa,$this->layer,$item,true,$ignorar);
if (count($valores) > 0){
//rotina obtida do pacote TME
sort($valores);
//$valores = array_unique($valores);
$numValues = count($valores);
$classNum = $numValues / $nclasses; // Number in each class
for ($i = 0; $i < $nclasses; $i++) {
$position = (int)($classNum * $i);
$classBreaks[] = $valores[$position];
}
$classBreaks[] = $valores[$numValues-1]; // Last class break = biggest value
//echo "";var_dump($classBreaks);exit;
$numclassesatual = $this->layer->numclasses;
//apaga todas as classes existentes
$classetemp = $this->layer->getClass(0);
$estilotemp = $classetemp->getStyle(0);
for ($i=0; $i < $numclassesatual; ++$i){
$classe = $this->layer->getClass($i);
$classe->set("status",MS_DELETE);
}
//adiciona as classes novas
for ($i=0; $i < $nclasses; ++$i){
$expressao = "(([".$item."]>".$classBreaks[$i].")and([".$item."]<=".$classBreaks[$i + 1]."))";
$nomeclasse = "> ".$classBreaks[$i]." e <= que ".($classBreaks[$i + 1]);
if($i == 0){
$expressao = "([".$item."]<=".$classBreaks[$i + 1].")";
$nomeclasse = "<= que ".($classBreaks[$i + 1]);
}
if($i == ($nclasses - 1)){
$expressao = "([".$item."] >=".$classBreaks[$i].")";
$nomeclasse = ">= que ".($classBreaks[$i]);
}
$classe = ms_newClassObj($this->layer);
$novoestilo = ms_newStyleObj($classe);
if ($this->layer->type == 0){
$novoestilo->set("symbolname","ponto");
$novoestilo->set("size","6");
}
$ncor = $novoestilo->color;
$ncor->setrgb((mt_rand(0,255)),(mt_rand(0,255)),(mt_rand(0,255)));
$ncor = $novoestilo->outlinecolor;
$ncor->setrgb(255,255,255);
$classe->setexpression($expressao);
$classe->set("name",$nomeclasse);
//$classe->set("title",($this->layer->name)."+".$i);
}
$this->layer->setMetaData("cache","");
return ("ok");
}
else{
return ("erro. Nenhum valor numerico no item");
}
}
/*
function: quebrasnaturais
Cria classes em um objeto layer com intervalos baseados no calculo de quebras naturais
Parametros:
$item - item da tabela de atributos
$nclasses - número de classes
$ignorar - valor que será ignorado na listagem final
*/
function quebrasnaturais($item,$nclasses,$ignorar)
{
if(!$this->layer){return "erro";}
$valores = $this->pegaValores($this->mapa,$this->layer,$item,true,$ignorar);
if (count($valores) > 0){
include(dirname(__FILE__)."/../pacotes/jenks-master/jenks.php");
$classBreaks = getJenksClasses($nclasses, $valores);
//echo "";var_dump($classBreaks);exit;
$numclassesatual = $this->layer->numclasses;
//apaga todas as classes existentes
$classetemp = $this->layer->getClass(0);
$estilotemp = $classetemp->getStyle(0);
for ($i=0; $i < $numclassesatual; ++$i){
$classe = $this->layer->getClass($i);
$classe->set("status",MS_DELETE);
}
//adiciona as classes novas
for ($i=0; $i < $nclasses; ++$i){
$expressao = "(([".$item."]>".$classBreaks[$i].")and([".$item."]<=".$classBreaks[$i + 1]."))";
$nomeclasse = "> ".$classBreaks[$i]." e <= que ".($classBreaks[$i + 1]);
if($i == 0){
$expressao = "([".$item."]<=".$classBreaks[$i + 1].")";
$nomeclasse = "<= que ".($classBreaks[$i + 1]);
}
if($i == ($nclasses - 1)){
$expressao = "([".$item."] >=".$classBreaks[$i].")";
$nomeclasse = ">= que ".($classBreaks[$i]);
}
$classe = ms_newClassObj($this->layer);
$novoestilo = ms_newStyleObj($classe);
if ($this->layer->type == 0){
$novoestilo->set("symbolname","ponto");
$novoestilo->set("size","6");
}
$ncor = $novoestilo->color;
$ncor->setrgb((mt_rand(0,255)),(mt_rand(0,255)),(mt_rand(0,255)));
$ncor = $novoestilo->outlinecolor;
$ncor->setrgb(255,255,255);
$classe->setexpression($expressao);
$classe->set("name",$nomeclasse);
//$classe->set("title",($this->layer->name)."+".$i);
}
$this->layer->setMetaData("cache","");
return ("ok");
}
else{
return ("erro. Nenhum valor numerico no item");
}
}
/*
function: quartis
Cria classes em um objeto layer com intervalos em quartis baseando-se em um item numérico na tabela de atributos com um número de classes fixos.
Parametros:
$item - Item da tabela de atributos utilizado para gerar as classes.
$ignorar - valor que será ignorado na listagem final
$tipoLegenda - tipo de texto que será incluído no nome de cada classe completo|simples|minimo
Include:
*/
function quartis($item,$ignorar="",$tipoLegenda="minimo")
{
if(!$this->layer){return "erro";}
$valores = $this->pegaValores($this->mapa,$this->layer,$item,true,$ignorar);
if (count($valores) > 0)
{
if(file_exists($this->locaplic."/classe_estatistica.php"))
include_once($this->locaplic."/classe_estatistica.php");
else
include_once("classe_estatistica.php");
$estat = new estatistica();
$estat->calcula($valores);
$calc = $estat->resultado;
$numclassesatual = $this->layer->numclasses;
//apaga todas as classes existentes
$classetemp = $this->layer->getClass(0);
for ($i=0; $i < $numclassesatual; ++$i)
{
$classe = $this->layer->getClass($i);
$classe->set("status",MS_DELETE);
}
//adiciona as classes novas
$expressao[] = "([".$item."]<=".($calc["quartil1"]).")";
$expressao[] = "(([".$item."]>".($calc["quartil1"]).")and([".$item."]<=".($calc["quartil2"])."))";
if($calc["quartil3"] != 0){
$expressao[] = "(([".$item."]>".($calc["quartil2"]).")and([".$item."]<=".($calc["quartil3"])."))";
$expressao[] = "([".$item."]>".($calc["quartil3"]).")";
}
$nomes[] = "<= ".($calc["quartil1"]);
$nomes[] = "> ".($calc["quartil1"])." e <= ".($calc["quartil2"]);
if($calc["quartil3"] != 0){
$nomes[] = "> ".($calc["quartil2"])." e <= ".($calc["quartil3"]);
$nomes[] = "> ".($calc["quartil3"]);
}
$vcor = array(250,230,150,0);
for ($i=0;$i < count($nomes);++$i)
{
$classe = ms_newClassObj($this->layer);
$novoestilo = ms_newStyleObj($classe);
if ($this->layer->type == 0)
{
$novoestilo->set("symbolname","ponto");
$novoestilo->set("size","6");
}
$classe->setexpression($expressao[$i]);
if($tipoLegenda == "completo")
{$nomeClasse = "Quartil ".($i+1)." ".$expressao[$i];}
if($tipoLegenda == "simples")
{$nomeClasse = "Quartil ".($i+1)." ".$nomes[$i];}
if($tipoLegenda == "minimo" || $tipoLegenda == "")
{$nomeClasse = $nomes[$i];}
$classe->set("name",$nomeClasse);
$ncor = $novoestilo->color;
$ncor->setrgb(255,$vcor[$i],$vcor[$i]);
$ncor = $novoestilo->outlinecolor;
$ncor->setrgb(255,255,255);
}
$this->layer->setMetaData("cache","");
return ("ok");
}
else
{return ("erro. Nenhum valor numerico no item");}
}
/*
function: valorunico
Cria classes em um objeto layer baseando-se em um item na tabela de atributos.
Para cada ocorrência de um valor é acrescentada uma classe.
Parametros:
$item - Item da tabela de atributos utilizado para gerar as classes.
$ignorar - valor que será ignorado na listagem final
$itemNome - item que será usado para definir os nomes das classes (por default será igual a $item)
*/
function valorunico($item,$ignorar,$itemNome="")
{
if(!$this->layer){return "erro";}
if($itemNome == "" || $ignorar != "")
{$itemNome = $item;}
// pega valores
$vs = $this->pegaValores($this->mapa,$this->layer,$item,false,$ignorar);
if ($item == $itemNome)
{$ns = $vs;}
else
{$ns = $this->pegaValores($this->mapa,$this->layer,$itemNome,false,$ignorar);}
$lista = array();
for ($i = 0; $i < count($vs); ++$i){
$temp[$vs[$i]] = $ns[$i];
}
$valores = array_keys($temp);
$nomes = array();
foreach($temp as $t)
{$nomes[] = $t;}
$nclassexist = $this->layer->numclasses;
if ($nclassexist > count($valores))
{$nclassexist = count($valores);}
if($this->layer->numclasses == 0)
{
$temp = ms_newClassObj($this->layer);
ms_newStyleObj($temp);
}
// cria classes
$classes = array();
$classpadrao = $this->layer->getClass(0);
for ($i = 0; $i < $nclassexist; ++$i)
{$classes[$i] = $this->layer->getClass($i);}
$c = $this->layer->numclasses;
for ($i = 0; $i < $c; ++$i) // apaga classes atuais
{
$cl = $this->layer->getClass($i);
$cl->set("status",MS_DELETE);
}
$c = count($valores);
for ($i = 0; $i < $c; ++$i)
{
$classes[$i] = ms_newClassObj($this->layer);
$newstyle = ms_newStyleObj($classes[$i]);
}
for ($i = 0; $i < $c; ++$i)
{
$e = "('[".$item."]'eq'".$valores[$i]."')";
$ca = $classes[$i];
$ca->setexpression($e);
$ca->set("name",$nomes[$i]);
$estilo = $classes[$i]->getStyle(0);
$ncor = $estilo->color;
$ncor->setrgb((mt_rand(0,255)),(mt_rand(0,255)),(mt_rand(0,255)));
$ncor = $estilo->outlinecolor;
$ncor->setrgb(255,255,255);
if ($this->layer->type == 0) //tipo ponto
{
$estilo->set("symbolname","ponto");
$estilo->set("size",6);
}
//$c->set("title",$tema."+".$i);
}
$this->layer->setMetaData("cache","");
return("ok");
}
/*
function: adicionaclasse
Adiciona uma nova classe em um objeto layer
A nova classe será uma c�pia da classe 0.
*/
function adicionaclasse()
{
if(!$this->layer){return "erro";}
$classe = $this->layer->getclass(0);
$c = ms_newClassObj($this->layer, $classe);
$this->layer->setMetaData("cache","");
return("ok");
}
/*
function: sobeclasse
Sobe uma classe na ordem de desenho
Parametro:
$idclasse {numerico} - id da classe (índice)
*/
function sobeclasse($idclasse)
{
if(!$this->layer){return "erro";}
$this->layer->moveclassup($idclasse);
return("ok");
}
/*
function: desceclasse
Desce uma classe na ordem de desenho
Parametro:
$idclasse {numerico} - id da classe (índice)
*/
function desceclasse($idclasse)
{
if(!$this->layer){return "erro";}
$this->layer->moveclassdown($idclasse);
return("ok");
}
/*
function: adicionaopacidade
Adiciona opacidade variável de 0 a 100 conforme o número de classes
*/
function adicionaopacidade()
{
//error_reporting(0);
if(!$this->layer){return "erro";}
$numclasses = $this->layer->numclasses;
$n = intval(100 / $numclasses);
for($i=0;$i<$numclasses;++$i)
{
$classe = $this->layer->getclass($i);
$numestilos = $classe->numstyles;
$o = $i * $n;
for($j=0;$j<$numestilos;++$j)
{
$estilo = $classe->getstyle($j);
$estilo->set("opacity",$o);
}
}
$this->layer->setMetaData("cache","");
return("ok");
}
/*
function: alteracor
Aplica uma nova cor aos estilos de uma classe
Parametros:
$idclasse {numerico} - id da classe (índice)
$cor {string} - cor rgb
*/
function alteracor($idclasse,$cor)
{
error_reporting(0);
if(!$this->layer){return "erro";}
$numclasses = $this->layer->numclasses;
$cor = str_replace(" ",",",$cor);
$cor = explode(",",$cor);
$classe = $this->layer->getclass($idclasse);
$numestilos = $classe->numstyles;
for($j=0;$j<$numestilos;++$j)
{
$estilo = $classe->getstyle($j);
$ncor = $estilo->color;
$ncor->setrgb($cor[0],$cor[1],$cor[2]);
}
$this->layer->setMetaData("cache","");
return("ok");
}
/*
function: alterageometria
Altera a geometria de representação de todos os estilos de todas as classes de um layer
Parametro:
$tipo {string} - tipo de representação
*/
function alterageometria($tipo)
{
error_reporting(0);
if(!$this->layer){return "erro";}
$numclasses = $this->layer->numclasses;
for($i=0;$i<$numclasses;++$i)
{
$classe = $this->layer->getclass($i);
$numestilos = $classe->numstyles;
for($j=0;$j<$numestilos;++$j)
{
$estilo = $classe->getstyle($j);
$s = "STYLE geomtransform '$tipo' END";
$estilo->updateFromString($s);
}
}
$this->layer->setMetaData("cache","");
return("ok");
}
/*
function: alteraCoresClasses
Altera as cores das classes existentes em um objeto layer gerando uma paleta de cores de acordo com um valor inicial e final.
Parametros:
$cori - cor inicial.
$corf - cor final.
Include:
*/
function alteraCoresClasses($cori,$corf)
{
if(!$this->layer){return "erro";}
if(file_exists($this->locaplic."/class.palette.php"))
include_once($this->locaplic."/class.palette.php");
else
include_once("class.palette.php");
$cori = RGB2hex(explode(",",$cori));
$corf = RGB2hex(explode(",",$corf));
$numclasses = $this->layer->numclasses;
$myPalette=new palette(array($cori,$corf),($numclasses + 1));
$cores = $myPalette->colorRGB;
for($i=0;$i<$numclasses;++$i)
{
$classe = $this->layer->getclass($i);
$estilo = $classe->getstyle(0);
$corpaleta = $cores[$i];
if ($this->layer->type == MS_LAYER_LINE)
{
$cor = $estilo->outlinecolor;
$cor->setrgb($corpaleta[0],$corpaleta[1],$corpaleta[2]);
}
$cor = $estilo->color;
$cor->setrgb($corpaleta[0],$corpaleta[1],$corpaleta[2]);
}
$this->layer->setMetaData("cache","");
return("ok");
}
/*
function: inverteCoresClasses
Inverte as cores da legenda de um tema.
*/
function inverteCoresClasses(){
if(!$this->layer){
return "erro";
}
$numclasses = $this->layer->numclasses;
$cor = array();
for($i=0;$i<$numclasses;++$i){
$classe = $this->layer->getclass($i);
$estilo = $classe->getstyle(0);
$c = $estilo->color;
$cor[] = array(
"r"=>($c->red),
"g"=>($c->green),
"b"=>($c->blue)
);
}
$cor = array_reverse($cor);
for($i=0;$i<$numclasses;++$i){
$classe = $this->layer->getclass($i);
$c = $cor[$i];
$estilo = $classe->getstyle(0);
$ncor = $estilo->color;
$ncor->setrgb($c["r"],$c["g"],$c["b"]);
}
$this->layer->setMetaData("cache","");
return("ok");
}
/*
function: calculaTamanhoClasses
Calcula o tamanho dos estilos das classes, alterando o tamanho do símbolo.
*/
function calculaTamanhoClasses()
{
if(!$this->layer){return "erro";}
$numclasses = $this->layer->numclasses;
for($i=0;$i<$numclasses;++$i)
{
$classe = $this->layer->getclass($i);
$estilo = $classe->getstyle(0);
$estilo->set("size",($i+1));
if ($estilo->symbolname == "")
{
if ($this->layer->type == MS_LAYER_LINE)
{$estilo->set("symbolname","linha");}
if ($this->layer->type == MS_LAYER_POINT)
{$estilo->set("symbolname","ponto");}
if ($this->layer->type == MS_LAYER_POLYGON)
{$estilo->set("symbolname","p4");}
}
}
$this->layer->setMetaData("cache","");
return("ok");
}
/*
function: statusClasse
Inverte o status a uma classe desligando ou desligando, conforme o status atual.
Parametros:
$classe - id da classe
*/
function statusClasse($classe)
{
//
//na versão 6 do Mapserver as classes não obedecem o OFF ou ON em arquivos RASTER. Foi necessário contornar o problema usando um metadata
//
if(!$this->layer){return "erro";}
$cl = $this->layer->getclass($classe);
$status = $cl->status;
echo $status;
if ($status == MS_OFF){
$cl->set("status",MS_ON);
if($this->layer->type == 3){
$e = $cl->getstyle(0);
$e->set("opacity",100);
}
}
else{
$cl->set("status",MS_OFF);
if($this->layer->type == 3){
$e = $cl->getstyle(0);
$e->set("opacity",0);
}
}
$this->layer->setMetaData("cache","");
return("ok");
}
/*
Function: pegaValores
Pega os valores de um item de um tema.
Parametros:
$layer {objeto} - Layer que será processado.
$item {string} - Item que será processado.
$numerico {boleano} - O item e numerico (true ou false).
$ignorar {string} - valor que será ignorado na listagem final
Retorno:
{array}
*/
function pegaValores($mapa,$layer,$item,$numerico=false,$ignorar="")
{
$layer->set("template","none.htm");
$layer->setfilter("");
$versao = versao();
$versao = $versao["principal"];
$ignorararray = explode(",",$ignorar);
if (@$layer->queryByrect($mapa->extent) == MS_SUCCESS)
{
$sopen = $layer->open();
if($sopen == MS_FAILURE){
return "erro";
}
$res_count = $layer->getNumresults();
$valitem = array();
for ($i=0;$i<$res_count;++$i)
{
if($versao == 6)
{
$shape = $layer->getShape($layer->getResult($i));
}
else{
$result = $layer->getResult($i);
$shp_index = $result->shapeindex;
$shape = $layer->getfeature($shp_index,-1);
}
$v = trim($shape->values[$item]);
if ($numerico)
{
if (is_numeric($v))
{
if ($ignorar == "")
{
$valitem[] = $v;
}
else
{
//if ($v != $ignorar)
if(!in_array($v,$ignorararray))
{
$valitem[] = $v;
}
}
}
}
else
{
if ($ignorar == "")
{
$valitem[] = $v;
}
else
{
if(!in_array($v,$ignorararray))
{
$valitem[] = $v;
}
}
}
}
$fechou = $layer->close();
}
$layer->close();
return ($valitem);
}
}
?>