web;
$url = dirname($webo->imageurl)."/";
$cp->set_data($url.$gfile_name.".png,".$url.(basename($nome)).",".$nome);
}
/**
* Gera gráfico de barras.
*/
function graficoBarras()
{
global $map_file,$itemvalores,$itemclasses,$tema,$exclui,$tipo,$R_path,$R_libpath;
global $setasdv,$percentual,$nome,$margem,$margemexterna,$margeminterna,$grid,$border,$cexaxis,$las,$space,$lwd,$fontlab,$collab,$cexlab,$xlab,$ylab,$fontsub,$fontmain,$locaplic,$dir_tmp,$gw,$gh,$res,$bg,$fg,$colmain,$font,$main,$cexmain,$sub,$cexsub;
//pega os valores
$dir = dirname(dirname($map_file));
if($nome == "")
{
$temp = iniciaDadosGrafico($map_file,$tema,$exclui,$itemclasses,$itemvalores,$tipo,$percentual,"",false);
$nnval = $temp["dados"];
$nome = $dir."/".nomeRandomico(20);
gravaDados($nnval,$nome);
}
$gfile_name = nomeRandomico(20);
$rcode = iniciaParGrafico($gw,$gh,$res,$dir_tmp,$gfile_name,$margem,$margemexterna,$margeminterna,$locaplic,$R_libpath);
$rcode[] = 'valores=read.table("'.$nome.'",header=TRUE,sep=";")';
$rcode[] = 'attach(valores)';
$rcode[] = 'names(x)= n';
$parametros = 'border='.$border.',cex.names='.$cexaxis.',las='.$las.',space='.$space.',font.lab='.$fontlab.',col.lab='.$collab.',cex.lab='.$cexlab.',font.sub='.$fontsub.',font.main='.$fontmain.',pty="m",font='.$font.',col.main='.$colmain.',col=terrain.colors(NROW(x)),cex.main='.$cexmain.',cex.sub='.$cexsub;
if ($ylab != "")
{$parametros .= ',ylab="'.$ylab.'"';}
if ($xlab != "")
{$parametros .= ',xlab="'.$xlab.'"';}
if ($main != "")
{$parametros .= ',main="'.$main.'"';}
if ($sub != "")
{$parametros .= ',sub="'.$sub.'"';}
//$rcode[] = 'par(bg='.$bg.')';
$rcode[] = 'bar <- barplot(x,'.$parametros.',axes=FALSE)';
if ($setasdv == "TRUE")
{
$rcode[] = "stdev <- x/5; arrows(bar, x, bar, x + stdev, length=0.15, angle = 90)";
$rcode[] = "arrows(bar, x, bar, x + -(stdev), length=0.15, angle = 90)";
}
if ($grid == "TRUE")
$rcode[] = "grid()";
$rcode[] = 'abline(h = 0, lty = 1, col = "black", lwd = 1)';
$rcode[] = 'abline(h = (max(x)/2), lty = 2, col = "gray", lwd = 1)';
$rcode[] = "axis(2, at=seq(0,max(x),max(x)/10),cex.axis=".$cexaxis.")";
$rcode[]='close.screen(all = TRUE)';
$rcode[] = 'dev.off()';
$r = executaR($rcode,$dir_tmp,$R_path);
$map = ms_newMapObj($map_file);
$webo = $map->web;
$url = dirname($webo->imageurl)."/";
return($url.$gfile_name.".png,".$url.(basename($nome)).",".$nome);
}
/**
* Gera gráfico de histograma.
*/
function graficoHist()
{
global $map_file,$itemvalores,$itemclasses,$tema,$exclui,$tipo,$R_path,$R_libpath;
global $densidade,$percentual,$nome,$margem,$margemexterna,$margeminterna,$corbarras,$grid,$breaks,$border,$cexaxis,$las,$lwd,$fontlab,$collab,$cexlab,$xlab,$ylab,$fontsub,$fontmain,$locaplic,$dir_tmp,$gw,$gh,$res,$bg,$fg,$colmain,$font,$main,$cexmain,$sub,$cexsub;
$dir = dirname(dirname($map_file));
if($nome == "")
{
$itemvalores = $itemclasses;
$temp = iniciaDadosGrafico($map_file,$tema,$exclui,$itemclasses,$itemvalores,$tipo,$percentual,"",false);
$nnval = $temp["dados"];
$nome = $dir."/".nomeRandomico(20);
gravaDados($nnval,$nome);
}
$gfile_name = nomeRandomico(20);
$rcode = iniciaParGrafico($gw,$gh,$res,$dir_tmp,$gfile_name,$margem,$margemexterna,$margeminterna,$locaplic,$R_libpath);
$rcode[] = 'valores=read.table("'.$nome.'",header=TRUE,sep=";")';
$rcode[] = 'attach(valores)';
$parametros = 'cex.axis='.$cexaxis.',breaks='.$breaks.',border='.$border.',las='.$las.',lwd='.$lwd.',font.lab='.$fontlab.',col.lab='.$collab.',cex.lab='.$cexlab.',font.sub='.$fontsub.',font.main='.$fontmain.',pty="m",font='.$font.',col.main='.$colmain.',cex.main='.$cexmain.',cex.sub='.$cexsub;
if ($ylab != "")
{$parametros .= ',ylab="'.$ylab.'"';}
if ($xlab != "")
{$parametros .= ',xlab="'.$xlab.'"';}
if ($main != "")
{$parametros .= ',main="'.$main.'"';}
if ($sub != "")
{$parametros .= ',sub="'.$sub.'"';}
if ($densidade == "TRUE")
{$rcode[] = 'hist(x,'.$parametros.',freq=F,col="'.$corbarras.'")';}
else
{$rcode[] = 'hist(x,'.$parametros.',freq=T,col="'.$corbarras.'")';}
$rcode[] = 'abline(h = 0, lty = 1, col = "black", lwd = 1)';
$rcode[] = "axis(2,cex.axis=".$cexaxis.")";
if ($grid == "TRUE")
$rcode[] = "grid()";
$rcode[] = "rug(x,col='gray')";
if ($densidade == "TRUE")
{$rcode[] = "curve(dnorm(x, mean = mean(x), sd = sd(x)),add=TRUE,col='red')";}
$rcode[]='close.screen(all = TRUE)';
$rcode[] = 'dev.off()';
//echo implode("\n",$rcode);
$r = executaR($rcode,$dir_tmp,$R_path);
$map = ms_newMapObj($map_file);
$webo = $map->web;
$url = dirname($webo->imageurl)."/";
return($url.$gfile_name.".png,".$url.(basename($nome)).",".$nome);
}
/**
* Gera gráfico de linhas.
*/
function graficoLinhas()
{
global $map_file,$itemvalores,$itemclasses,$tema,$exclui,$tipo,$R_path,$R_libpath;
global $percentual,$nome,$margem,$margemexterna,$margeminterna,$xlab,$ylab,$grid,$ppontos,$spline,$locaplic,$dir_tmp,$gw,$gh,$res,$bg,$collab,$colaxis,$cexlab,$cexaxis,$fontlab,$las,$tck,$cexmain,$border,$lty,$lwd,$lty,$lwd,$pch,$tpt,$main,$colmain,$fontmain,$nome;
//pega os valores
$dir = dirname(dirname($map_file));
if($nome == "")
{
$temp = iniciaDadosGrafico($map_file,$tema,$exclui,$itemclasses,$itemvalores,$tipo,$percentual,"",false);
$nnval = $temp["dados"];
$nome = $dir."/".nomeRandomico(20);
gravaDados($nnval,$nome);
}
$gfile_name = nomeRandomico(20);
$rcode = iniciaParGrafico($gw,$gh,$res,$dir_tmp,$gfile_name,$margem,$margemexterna,$margeminterna,$locaplic,$R_libpath);
$rcode[] = 'valores=read.table("'.$nome.'",header=TRUE,sep=";")';
$rcode[] = 'attach(valores)';
$rcode[] = 'names(x)= n';
$parametros = 'col.lab='.$collab.',col.axis='.$colaxis.',cex.lab='.$cexlab.',cex.axis='.$cexaxis.',font.lab='.$fontlab.',las='.$las.',tck='.$tck.',cex.main='.$cexmain;
$rcode[] = 'par(pty="s")';
$rcode[] = 'plot(x,'.$parametros.', type = "n", axes = FALSE, ann = FALSE)';
if ($grid == "TRUE")
$rcode[] = "grid()";
if ($spline=="FALSE")
{$rcode[] = 'lines(x,col='.$border.',lty='.$lty.',lwd='.$lwd.')';}
else
{$rcode[] = 'lines(spline(x),col='.$border.',lty='.$lty.',lwd='.$lwd.')';}
if ($ppontos=="TRUE")
{$rcode[] = 'points(x, pch ="'.$pch.'", bg = "light grey", cex ='.$tpt.')';}
$rcode[] = "axis(2,lines=NA)";
$rcode[] = 'axis(1, lines=NA)';
$rcode[] = 'box()';
$rcode[] = 'title(xlab = "'.$xlab.'")';
$rcode[] = 'title(ylab = "'.$ylab.'")';
$rcode[] = 'title(main = "'.$main.'",col.main='.$colmain.',font.main='.$fontmain.')';
$rcode[]='close.screen(all = TRUE)';
$rcode[] = 'dev.off()';
$r = executaR($rcode,$dir_tmp,$R_path);
$map = ms_newMapObj($map_file);
$webo = $map->web;
$url = dirname($webo->imageurl)."/";
return($url.$gfile_name.".png,".$url.(basename($nome)).",".$nome);
}
/**
* Gera gráfico de distribuição de pontos (scatter).
*/
function graficoScatter()
{
global $map_file,$itemvalores,$itemclasses,$tema,$exclui,$tipo,$R_path,$R_libpath;
global $percentual,$nome,$margem,$margemexterna,$margeminterna,$corlinha,$grid,$ppontos,$locaplic,$dir_tmp,$gw,$gh,$res,$bg,$collab,$colaxis,$cexlab,$cexaxis,$fontlab,$las,$tck,$cexmain,$border,$lty,$lwd,$lty,$lwd,$pch,$tpt,$main,$colmain,$fontmain,$ylab,$xlab;
//pega os valores
$dir = dirname(dirname($map_file));
if($nome == "")
{
$temp = iniciaDadosGrafico($map_file,$tema,$exclui,$itemclasses,$itemvalores,"xy",$percentual,"",false);
$nnval = $temp["dados"];
$nome = $dir."/".nomeRandomico(20);
gravaDados($nnval,$nome);
}
$gfile_name = nomeRandomico(20);
$rcode = iniciaParGrafico($gw,$gh,$res,$dir_tmp,$gfile_name,$margem,$margemexterna,$margeminterna,$locaplic,$R_libpath);
$rcode[] = 'valores=read.table("'.$nome.'",header=TRUE,sep=";")';
$rcode[] = 'attach(valores)';
$parametros = 'pty="m",main = "'.$main.'",col.main='.$colmain.',font.main='.$fontmain.',ylab = "'.$ylab.'",xlab = "'.$xlab.'",cex ='.$tpt.',pch ="'.$pch.'",lty='.$lty.',lwd='.$lwd.',col.lab='.$collab.',col.axis='.$colaxis.',cex.lab='.$cexlab.',cex.axis='.$cexaxis.',font.lab='.$fontlab.',las='.$las.',tck='.$tck.',cex.main='.$cexmain;
$rcode[] = 'par(pty="s",'.$parametros.')';
$rcode[] = 'plot(x,y,'.$parametros.')';
$rcode[] = 'abline(lm(y ~ x),col='.$corlinha.',lwd='.$lwd.')';
$rcode[]='close.screen(all = TRUE)';
$rcode[] = 'dev.off()';
$r = executaR($rcode,$dir_tmp,$R_path);
$map = ms_newMapObj($map_file);
$webo = $map->web;
$url = dirname($webo->imageurl)."/";
return ($url.$gfile_name.".png,".$url.(basename($nome)).",".$nome);
}
/**
* Gera gráfico de distribuição de pontos (scatter) com agrupamento em pixels.
*/
function graficoScatterBins()
{
global $map_file,$itemvalores,$itemclasses,$tema,$exclui,$tipo,$R_path,$R_libpath;
global $plota3d,$nbins,$percentual,$nome,$margem,$margemexterna,$margeminterna,$corlinha,$grid,$ppontos,$locaplic,$dir_tmp,$gw,$gh,$res,$bg,$collab,$colaxis,$cexlab,$cexaxis,$fontlab,$las,$tck,$cexmain,$border,$lty,$lwd,$lty,$lwd,$pch,$tpt,$main,$colmain,$fontmain,$ylab,$xlab;
//pega os valores
$dir = dirname(dirname($map_file));
if($nome == "")
{
$temp = iniciaDadosGrafico($map_file,$tema,$exclui,$itemclasses,$itemvalores,"xy",$percentual,"",false);
$nnval = $temp["dados"];
$nome = $dir."/".nomeRandomico(20);
gravaDados($nnval,$nome);
}
$gfile_name = nomeRandomico(20);
$rcode = iniciaParGrafico($gw,$gh,$res,$dir_tmp,$gfile_name,$margem,$margemexterna,$margeminterna,$locaplic,$R_libpath);
$rcode[] = 'valores=read.table("'.$nome.'",header=TRUE,sep=";")';
$rcode[] = 'attach(valores)';
$rcode[] = 'library(gplots)';
$parametros = 'pty="m",main = "'.$main.'",col.main='.$colmain.',font.main='.$fontmain.',ylab = "'.$ylab.'",xlab = "'.$xlab.'",cex ='.$tpt.',pch ="'.$pch.'",lty='.$lty.',lwd='.$lwd.',col.lab='.$collab.',col.axis='.$colaxis.',cex.lab='.$cexlab.',cex.axis='.$cexaxis.',font.lab='.$fontlab.',las='.$las.',tck='.$tck.',cex.main='.$cexmain;
if($plota3d == "FALSE")
{
$rcode[] = "hist2d(x,y, nbins=".$nbins.", col = c('white',heat.colors(16)),".$parametros.")";
$rcode[] = "rug(x,side=1)";
$rcode[] = "rug(y,side=2)";
$rcode[] = "grid()";
$rcode[] = "box()";
}
else
{
$rcode[] = "h2d <- hist2d(x,y,show=FALSE, same.scale=TRUE, nbins=".$nbins.")";
$rcode[] = 'persp( h2d$x, h2d$y, h2d$counts,ticktype="detailed", theta=30, phi=30,expand=0.5, shade=0.5, col="cyan", ltheta=-30,'.$parametros.')';
}
$rcode[]='close.screen(all = TRUE)';
$rcode[] = 'dev.off()';
$r = executaR($rcode,$dir_tmp,$R_path);
$map = ms_newMapObj($map_file);
$webo = $map->web;
$url = dirname($webo->imageurl)."/";
return($url.$gfile_name.".png,".$url.(basename($nome)).",".$nome);
}
/**
* Gera gráfico de estrelas.
*/
function graficoEstrela()
{
global $map_file,$itemvalores,$itemclasses,$tema,$exclui,$tipo,$R_path,$R_libpath;
global $font,$cex,$grid,$ppontos,$locaplic,$dir_tmp,$w,$h,$res,$bg,$collab,$colaxis,$cexlab,$cexaxis,$fontlab,$las,$tck,$cexmain,$border,$lty,$lwd,$lty,$lwd,$pch,$tpt,$main,$colmain,$fontmain,$ylab,$xlab;
//pega os valores
$map = ms_newMapObj($map_file);
$layer = $map->getLayerByName($tema);
if ($exclui == ""){$exclui = "nulo";}
$dados[] = "x";
foreach (explode(",",$itemclasses) as $i)
{$dados = array_merge($dados,pegaValoresM($map,$layer,array($i),$exclui));}
$nval = count($dados);
if ($nval == 0){$cp->set_data("erro");return;}
$dir = dirname(dirname($map_file));
$nomeV = $dir."/".nomeRandomico(20);
gravaDados($dados,$nomeV);
$numcol = count(explode(",",$itemclasses));
$numrow = $nval / $numcol;
$graf = "png";
if (strtoupper(substr(PHP_OS, 0, 3) != 'WIN'))
{
$graf = "bitmap";
$h = $h / $res;
$w = $w / $res;
}
$gfile_name = nomeRandomico(20);
$rcode[] = $graf.'(file="'.$dir_tmp."/".$gfile_name.'.png",height = '.$h.', width = '.$w.', res = '.$res.', type = "png16m"))';
$rcode[] = 'valores=read.table("'.$nomeV.'",sep=",",header=TRUE)';
$rcode[] = 'attach(valores)';
$rcode[] = 'mx = matrix(x, ncol = '.$numrow.', nrow = '.$numcol.', byrow = TRUE, dimnames = NULL)';
//$parametros = 'pty="m",scale=FALSE,full=FALSE,key.loc = c ('.$w.',0),key.labels='.$itemvalores.',lty='.$lty.',font='.$font.',col.main='.$colmain.',cex='.$cex.',main="'.$main.'",cex.main='.$cexmain;
$parametros = 'pty="m",scale=FALSE,full=FALSE,key.loc = c ('.$w.',0),lty='.$lty.',font='.$font.',col.main='.$colmain.',cex='.$cex.',main="'.$main.'",cex.main='.$cexmain;
$rcode[] = 'par(bg='.$bg.')';
$rcode[] = 'palette(rainbow(12, s = 0.6, v = 0.75))';
//$rcode[] = 'stars(radius=FALSE,len=0.8,mx,draw.segments = TRUE,labels = '.$itemvalores.','.$parametros.')'; // full = TRUE, scale = TRUE, radius = TRUE,labels = NULL)';
$rcode[] = 'stars(radius=FALSE,len=0.8,mx,draw.segments = TRUE,'.$parametros.')'; // full = TRUE, scale = TRUE, radius = TRUE,labels = NULL)';
$rcode[] = 'dev.off()';
$r = executaR($rcode,$dir_tmp,$R_path);
$map = ms_newMapObj($map_file);
$webo = $map->web;
$url = dirname($webo->imageurl)."/";
return($url.$gfile_name.".png,".$url.(basename($nomeV)));
}
function iniciaParGrafico($gw,$gh,$res,$dir_tmp,$gfile_name,$margem,$margemexterna,$margeminterna,$locaplic,$R_libpath)
{
$lib = '.libPaths("'.$R_libpath.'")';
/*
if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN'))
{$lib = '.libPaths("'.$locaplic.'/pacotes/rlib/win")';}
else
{
if(file_exists($locaplic."/pacotes/rlib/linux"))
$lib = '.libPaths("'.$locaplic.'/pacotes/rlib/linux")';
}
*/
$rcode[] = $lib;
$graf = "png";
if (strtoupper(substr(PHP_OS, 0, 3) != 'WIN'))
{
$graf = "bitmap";
$gh = ($gh / $res);
$gw = ($gw / $res);
}
if (strtoupper(substr(PHP_OS, 0, 3) != 'WIN'))
{$rcode[] = $graf.'(file="'.$dir_tmp."/".$gfile_name.'.png",height = '.$gh.', width = '.$gw.', res = '.$res.', type = "png16m")';}
else
{$rcode[] = $graf.'(file="'.$dir_tmp."/".$gfile_name.'.png",height = '.$gh.', width = '.$gw.', res = '.$res.')';}
$rcode[] = 'split.screen(c(1,1))';
if ($margem == "TRUE")
{
if (strtoupper(substr(PHP_OS, 0, 3) != 'WIN'))
{$rcode[] = 'par(fin=c('.($gw-(0.1)).','.($gh-(0.1)).'),xpd=TRUE)';}
else
{$rcode[] = 'par(xpd=TRUE)';}
$rcode[] = 'rect(-1, -1, 2, 2, col='.$margemexterna.')';
$rcode[] = 'box("figure")';
$rcode[] = 'par(xpd=FALSE)';
$rcode[] = 'rect(-1, -1, 2, 2, col='.$margeminterna.')';
$rcode[] = 'box("plot", lty="dashed")';
}
$rcode[] = 'screen(1, new=FALSE)';
return $rcode;
}
function iniciaDadosGrafico($map_file,$tema,$exclui,$itemclasses,$itemvalores,$tipo,$percentual,$ext="",$incluicores=true,$ordenax="nao")
{
global $interface;
//prepara o mapfile
//
$map = ms_newMapObj($map_file);
if($interface == "googlemaps"){
$projMapa = $map->getProjection();
$map->setProjection("init=epsg:4618,a=6378137,b=6378137");
}
if($ext && $ext != ""){
$e = explode(" ",$ext);
$extatual = $map->extent;
$extatual->setextent((min($e[0],$e[2])),(min($e[1],$e[3])),(max($e[0],$e[2])),(max($e[1],$e[3])));
}
$layer = $map->getLayerByName($tema);
//verifica se tem selecao
$selecionados = carregaquery2($map_file,$layer,$map);
if ($exclui == ""){$exclui = "nulo";}
//pega os valores
//$itemvalores pode ser um array de intens
$nnval = array();
if(!is_array($itemvalores)){
$valores = pegaValoresM($map,$layer,array($itemclasses,$itemvalores),$exclui,$selecionados);
//agrupa se for o caso
$dados = agrupaValores($valores,0,1,$tipo);
foreach($valores as $valor){
if(!empty($valor[0])){
$cores[$valor[0]] = $valor["cores"];
}
}
//calcula os parametros para o grafico
$nval = count($dados);
$max = max($dados);
$soma = array_sum($dados);
$tempm = array_keys($dados);
$tempval = array();
$nnval[] = "n;x";
if ($tipo != "xy"){
for ($i=0;$i < $nval; ++$i){
if ($tempm[$i] != "" && $dados[$tempm[$i]] > 0){
$pp = ($dados[$tempm[$i]] * 100) / $soma;
if ($percentual == "TRUE"){
$temp = "'".$tempm[$i]." (".round($pp,0)."%)';".$dados[$tempm[$i]];
if($incluicores == true){
$temp = $temp.";".$cores[$tempm[$i]];
}
}
else{
$temp = "'".$tempm[$i]."';".$dados[$tempm[$i]];
if($incluicores == true){
$temp = $temp.";".$cores[$tempm[$i]];
}
}
$tempval[] = $temp;
}
}
$nval = count($tempval);
}
else{
foreach ($valores as $v){
$temp = $v[0].";".$v[1];
if($incluicores == true){
$temp = $temp.";".$cores[$v[0]];
}
$tempval[] = $temp;
}
}
if($ordenax == "sim"){
sort($tempval);
}
$nnval = array_merge($nnval,$tempval);
}
else{
$colunas = array_merge(array($itemclasses),$itemvalores);
$valores = pegaValoresM($map,$layer,$colunas,$exclui,$selecionados);
$nval = count($dados);
$nnval[] = implode(";",$colunas);
foreach($valores as $valor){
$nnval[] = implode(";",$valor);
}
$max = "";
}
return array("dados"=>$nnval,"ndados"=>$nval,"max"=>$max);
}
function dadosLinhaDoTempo($map_file,$tema,$ext="")
{
$map = ms_newMapObj($map_file);
if($ext && $ext != ""){
$e = explode(" ",$ext);
$extatual = $map->extent;
$extatual->setextent((min($e[0],$e[2])),(min($e[1],$e[3])),(max($e[0],$e[2])),(max($e[1],$e[3])));
}
$layer = $map->getLayerByName($tema);
$selecionados = carregaquery2($map_file,$layer,$map);
if ($exclui == ""){$exclui = "nulo";}
//define os itens para pegar os dados
$itens = array();
if($layer->getmetadata("ltempoformatodata") == "")
{return "Nao esta definido o metadata com o formato do campo";}
if($layer->getmetadata("ltempoiteminicio") != ""){
$iteminicio = $layer->getmetadata("ltempoiteminicio");
$itens[] = $iteminicio;
}
else
{return "Nao esta definido o metadata com o item inicial";}
$itemi = "";
if($layer->getmetadata("ltempoitemimagem") != ""){
$itemi = $layer->getmetadata("ltempoitemimagem");
$itens[] = $itemi;
}
$itemicone = "";
if($layer->getmetadata("ltempoitemicone") != ""){
$itemicone = $layer->getmetadata("ltempoitemicone");
$itens[] = $itemicone;
}
$itemfim = "";
if($layer->getmetadata("ltempoitemfim") != ""){
$itemfim = $layer->getmetadata("ltempoitemfim");
$itens[] = $itemfim;
}
$itemtitulo = $iteminicio;
if($layer->getmetadata("ltempoitemtitulo") != ""){
$itemtitulo = $layer->getmetadata("ltempoitemtitulo");
$itens[] = $itemtitulo;
}
$itemdescricao = $itemtitulo;
if($layer->getmetadata("ltempoitemdescricao") != ""){
$itemdescricao = $layer->getmetadata("ltempoitemdescricao");
$itens[] = $itemdescricao;
}
$itemtip = $itemdescricao;
if($layer->getmetadata("ltempoitemtip") != ""){
$itemtip = $layer->getmetadata("ltempoitemtip");
$itens[] = $itemtip;
}
$itemlink = "";
if($layer->getmetadata("ltempoitemlink") != ""){
$itemlink = $layer->getmetadata("ltempoitemlink");
$itens[] = $itemlink;
}
$converteE = "sim";
if($layer->getmetadata("ltempoconvencode") != ""){
$converteE = $layer->getmetadata("ltempoconvencode");
}
$dados = pegaValoresM($map,$layer,$itens,$exclui,$selecionados,true,true);
$eventos = array();
$anos = array();
foreach($dados as $dado){
if($itemi == "")
{$image = '';}
else {$image = $dado[$itemi];}
if($itemicone == "")
{$icone = 'dark-red-circle.png';}
else {$icone = $dado[$itemicone];}
if($itemfim == "")
{$fim = '';}
else {$fim = $dado[$itemfim];}
if($itemlink == "")
{$link = '';}
else {$link = $dado[$link];}
$titulo = $dado[$itemtitulo];
$desc = $dado[$itemdescricao];
if(function_exists("mb_convert_encoding") && strtolower($converteE) == "sim"){
$titulo = mb_convert_encoding($titulo,"UTF-8","ISO-8859-1");
$desc = mb_convert_encoding($desc,"UTF-8","ISO-8859-1");
}
if($dado[$iteminicio] != 0 && $dado[$iteminicio] != '-'){
$eventos[] = array(
'start'=>$dado[$iteminicio],
'end'=>$fim,
'title'=>"".$titulo."",
'description'=>$dado[$iteminicio]." ".$fim."
".$desc,
'icon'=>$icone,
'image'=>$image,
'link'=>$link
);
$anos[] = $fim;
$anos[] = $dado[$iteminicio];
}
}
//echo "
"; return array( "dateTimeFormat"=>$layer->getmetadata("ltempoformatodata"), "wikiURL"=>"", "wikiSection"=>"", "events"=>$eventos, "menorano"=>min($anos), "maiorano"=>max($anos) ); } // //opcao pode ser "google" ou o código de um tema. Nesse último caso, deve-se definir $item // function dadosPerfilRelevo($pontos,$opcao,$amostragem,$item="",$map_file=""){ $urlGoogle = "http://maps.google.com/maps/api/elevation/json?sensor=false&path="; $pontos = str_replace(",","|",$pontos); $pontos = str_replace(" ",",",$pontos); $urlGoogle .= $pontos."&samples=".$amostragem; $curl = curl_init(); if(!isset($i3geo_proxy_server)){ include(dirname(__FILE__)."/../ms_configura.php"); } curl_setopt ($curl, CURLOPT_URL, $urlGoogle); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); if(isset($i3geo_proxy_server) && $i3geo_proxy_server != ""){ curl_setopt($curl, CURLOPT_PROXY, $i3geo_proxy_server); } $result = curl_exec($curl); curl_close ($curl); $result = json_decode( $result, true ); if($opcao != "google"){ include_once("classe_atributos.php"); $m = New Atributos($map_file,$opcao); $rs = array(); foreach($result["results"] as $r){ $l = $r["location"]; $rs[] = $m->identificaQBP2("",$l["lng"],$l["lat"],"",5,$item,"googlerelevo",$etip=false,$ext=""); } $result = array("results"=>$rs,"status"=>"OK"); } return $result; } /* Function: executaR Executa comandos do R. Parametros: $rcode {array} - Código que será executado. $dir_tmp {string} - Diretório temporário onde ficarão os arquivos para processamento. $R_path {string} - Executável do R. $gfile_name {string} - nome da imagem que será criada Retorno: {string} - nome do arquivo com o código R que foi executado */ function executaR($rcode,$dir_tmp,$R_path,$gfile_name="") { $R_options = "--slave --no-save"; $r_name = nomeRandomico(20); $r_input = $dir_tmp."/".$r_name.".R"; $r_output = $dir_tmp."/".$r_name.".Rout"; gravaDados($rcode,$r_input); $command = $R_path." $R_options < $r_input > $r_output"; $result = ""; $error = ""; $exec_result = exec($command,$result,$error); //corta a imagem final //include_once("classe_imagem.php"); //$m = new Imagem($dir_tmp."/".$gfile_name.".png"); //$i = $m->cortaBorda(); //imagepng($i,$dir_tmp."/".$gfile_name.".png"); return($r_input); } /* Function: pegaValoresM Pega os valores de múltiplos itens de um tema. Se for passado apenas um item, o array de retorno será unidimensional. Parametros: $layer {objeto} - Layer que será processado. $itens {array} - Itens que serão processados. $exclui {string} - O registro não será considerado se um dos valores for igual a esse valor. $selecionados {string} - sim|nao Utiliza apenas os selecionados ou todos $chaves {boolean} - inclui ou não os nomes dos itens como chave no array resultante $centroide {boolean} - captura ou não o WKT com o centroide do elemento Retorno: {array} */ function pegaValoresM($mapa,$layer,$itens,$exclui="nulo",$selecionados="nao",$chaves=false,$centroide=false) { $versao = versao(); $versao = $versao["principal"]; $prjMapa = $mapa->getProjection(); $prjTema = $layer->getProjection(); $layer->set("template","none.htm"); //$layer->setfilter(""); $indicesel = array(); //pega os valores dos indices dos elementos selecionados para comparacao posterior if ($selecionados == "sim"){ $sopen = $layer->open(); if($sopen == MS_FAILURE){return "erro";} $res_count = $layer->getNumresults(); for ($i = 0; $i < $res_count; ++$i) { $result = $layer->getResult($i); $indicesel[] = $result->shapeindex; } $layer->close(); } $valores = array(); $nclasses = $layer->numclasses; if (@$layer->queryByrect($mapa->extent) == MS_SUCCESS){ //$layer->draw(); $sopen = $layer->open(); if($sopen == MS_FAILURE){return "erro";} $res_count = $layer->getNumresults(); //echo $res_count;echo "\n"; for ($i=0;$i<$res_count;++$i){ if($versao >= 6){ $shape = $layer->getShape($layer->getResult($i)); $shp_index = $shape->index; } else{ $result = $layer->getResult($i); $shp_index = $result->shapeindex; $shape = $layer->getfeature($shp_index,-1); } if (($selecionados == "sim") && (array_search($shp_index,$indicesel) === FALSE)) {continue;} $considera = "sim"; //verifica se no registro deve ser considerado if ($exclui != "nulo"){ foreach ($itens as $item) {if($shape->values[$item] == $exclui){$considera = "nao";}} } //pega os valores $v = array(); if ($considera == "sim"){ //pega os valores dos itens do registro foreach ($itens as $item){ $vitem = $shape->values[$item]; if (!mb_detect_encoding($vitem,"UTF-8",true)){ $vitem = mb_convert_encoding($vitem,"UTF-8","ISO-8859-1"); } if($chaves == false) {$v[] = $vitem;} else {$v[$item] = $vitem;} } //pega o centroide //echo $i;echo "\n"; if($centroide == true){ $c = $shape->getCentroid(); if (($prjTema != "") && ($prjMapa != $prjTema)){ $projOutObj = ms_newprojectionobj($prjTema); $projInObj = ms_newprojectionobj($prjMapa); $c->project($projInObj, $projOutObj); } $v["centroide"] = "POINT(".$c->x." ".$c->y.")"; } //echo $i;echo "---\n"; //pega a cor da classe onde cai o registro if($nclasses > 0 && $versao >= 6){ $cx = $layer->getClassIndex($shape); if($cx > -1){ $classe = $layer->getclass($cx); $cor = $classe->getstyle(0)->color; $v["cores"] = $cor->red." ".$cor->green." ".$cor->blue; } } if (count($v) == 1){ $valores[] = $v[0]; } else{ $valores[] = $v; } } } $layer->close(); } return ($valores); } /* Function: agrupaValores Agrupa os valores de um array por um método de cálculo. No caso de soma e média, será considerado apenas um item e uma chave. Parametros: $lista {array} - Lista com os arrays contendo os dados que serão processados. $indiceChave {string} - Índice do array da lista que será considerado como a chave do array. $indiceValor {string} - Índice do array da lista que será considerado como o valor. $tipo {string} - Tipo de processamento soma|media|contagem|nenhum. Retorno: {array} */ function agrupaValores($lista,$indiceChave,$indiceValor,$tipo) { $valores = null; foreach ($lista as $linha){ $c = $linha[$indiceChave]; $v = $linha[$indiceValor]; if ($tipo == "conta"){ if(@$valores[$c]) $valores[$c] = $valores[$c] + 1; else $valores[$c] = 1; } if (($tipo == "soma")) { if (($v != "") && (is_numeric($v))){ if(@$valores[$c]) $valores[$c] = $valores[$c] + $v; else $valores[$c] = $v; } } if ($tipo == "media"){ if (($v != "") && (is_numeric($v))){ if(@$soma[$c]) $soma[$c] = $soma[$c] + $v; else $soma[$c] = $v; if(@$conta[$c]) $conta[$c] = $conta[$c] + 1; else $conta[$c] = 1; } } if ($tipo == "nenhum"){ //if (($v != "") && (is_numeric($v))) //{ $valoresn[] = $v; //} $valores = $valoresn; } } if ($tipo == "media"){ $chaves = array_keys($conta); foreach ($chaves as $c){ $valores[$c] = $soma[$c] / $conta[$c]; } } return ($valores); } ?>