'; echo '
'; echo ''; } if ($tipo == "") { echo ''; echo ''; echo ''; echo ''; echo '";
}
if(!file_exists($tema)){
echo "Arquivo ".$map." não encontrado.";
exit;
}
if ($tema != ""){
if($base == "" or !isset($base)){
$base = "";
if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')){
$base = $locaplic."/aplicmap/geral1windowsv".$versao.".map";
}
else{
if($base == "" && file_exists('/var/www/i3geo/aplicmap/geral1debianv'.$versao.'.map')){
$base = "/var/www/i3geo/aplicmap/geral1debianv".$versao.".map";
}
if($base == "" && file_exists('/var/www/html/i3geo/aplicmap/geral1fedorav'.$versao.'.map')){
$base = "/var/www/html/i3geo/aplicmap/geral1fedorav".$versao.".map";
}
if($base == "" && file_exists('/opt/www/html/i3geo/aplicmap/geral1fedorav'.$versao.'.map')){
$base = "/opt/www/html/i3geo/aplicmap/geral1v".$versao.".map";
}
if($base == ""){
$base = $locaplic."/aplicmap/geral1v".$versao.".map";
}
}
}
else{
if(!file_exists($base)){
$base = $locaplic."/aplicmap/".$base;
}
}
//echo $base;exit;
$mapa = ms_newMapObj($base);
error_reporting(0);
$numlayers = $mapa->numlayers;
for ($i=0;$i < $numlayers;$i++){
$layern = $mapa->getlayer($i);
if (!empty($postgis_mapa)){
if ($layern->connectiontype == MS_POSTGIS){
$lcon = $layern->connection;
if (($lcon == " ") || ($lcon == "") || (in_array($lcon,array_keys($postgis_mapa)))){
if(($lcon == " ") || ($lcon == "")) //para efeitos de compatibilidade
{$layern->set("connection",$postgis_mapa);}
else{
$layern->set("connection",$postgis_mapa[$lcon]);
}
}
}
}
}
if(!stristr($tema, '.php') === FALSE){
/*
echo "
Arquivo $tema é um programa PHP. O teste pode não funcionar.
";
include_once($locaplic."/".$tema);
$pegarext = str_replace(".php","",$tema);
$pegarext = str_replace("temas/","",$pegarext);
eval($pegarext."(\$mapa);");
*/
}
if(!stristr($tema, '.map') === FALSE){
if(file_exists($mapUrl)){
if(@ms_newMapObj($mapUrl)){
$nmapa = ms_newMapObj($mapUrl);
}
else{
echo "Erro no arquivo $mapUrl
";
$error = ms_GetErrorObj();
while($error && $error->code != MS_NOERR){
printf("
Error in %s: %s
\n", $error->routine, $error->message);
$error = $error->next();
}
return;
}
}
else{
if(@ms_newMapObj($locaplic."/".$tema)){
if(!function_exists("validaAcessoTemas")){
include($locaplic."/classesphp/funcoes_gerais.php");
}
if(validaAcessoTemas($locaplic."/".$tema,false) == false){
$nmapa = ms_newMapObj($locaplic."/".$tema);
}
else{
echo "tema restrito
";
exit;
}
}
else{
echo "erro no arquivo $map
";
echo "Obs.: em alguns testes o mapfile pode falhar se o endereço dos arquivos de símbolos estiverem
definidos de forma relativa ao invés de absoluta. Nesses casos, ao abrir o i3Geo,
o mapfile poderá funcionar.
";
$error = ms_GetErrorObj();
while($error && $error->code != MS_NOERR){
printf("
Error in %s: %s
\n", $error->routine, $error->message);
$error = $error->next();
}
return;
}
}
$numlayers = $nmapa->numlayers;
$dados = "";
$simbolos = array();
for ($i=0;$i < $numlayers;$i++){
$layern = $nmapa->getlayer($i);
$layern->set("status",MS_DEFAULT);
if (!empty($postgis_mapa)){
if ($layern->connectiontype == MS_POSTGIS){
$lcon = $layern->connection;
error_reporting(0);
if (($lcon == " ") || ($lcon == "") || (in_array($lcon,array_keys($postgis_mapa)))){
if(($lcon == " ") || ($lcon == "")) //para efeitos de compatibilidade
{$layern->set("connection",$postgis_mapa);}
else
{$layern->set("connection",$postgis_mapa[$lcon]);}
}
}
}
autoClasses($layern,$nmapa);
error_reporting(0);
if($layern->classitem != "" && $layern->connectiontype == 7 && $layern->numclasses > 0 && $layern->getmetadata("wms_sld_body") == ""){
$tipotemp = $layern->type;
$tiporep = $layern->getmetadata("tipooriginal");
$layern->set("type",MS_LAYER_POLYGON);
if ($tiporep == "linear"){
$layern->set("type",MS_LAYER_LINE);
}
if ($tiporep == "pontual"){
$layern->set("type",MS_LAYER_POINT);
}
$sld = $layern->generateSLD();
if($sld != ""){
$layern->setmetadata("wms_sld_body",str_replace('"',"'",$sld));
}
$layern->set("type",$tipotemp);
}
//pega simbolos locais e aplica no novo mapa
cloneInlineSymbol($layern,$nmapa,$mapa);
$layerAdicionado = ms_newLayerObj($mapa, $layern);
corrigeLayerGrid($layern,$layerAdicionado);
/*
if ($layern->data == ""){
$dados = $layern->connection;
}
else{
$dados = $layern->data;
}
*/
$pegarext = $layern->name;
}
zoomTema($pegarext,$mapa);
}
if(!stristr($tema, '.gvp') === FALSE){
if(file_exists($mapUrl)){
$gvsiggvp = $mapUrl;
}
else{
$gvsiggvp = $locaplic."/".$tema;
}
include_once($locaplic."/pacotes/gvsig/gvsig2mapfile/class.gvsig2mapfile.php");
$gm = new gvsig2mapfile($gvsiggvp);
$gvsigview = $gm->getViewsNames();
foreach($gvsigview as $v){
$dataView = $gm->getViewData($v);
$mapa = $gm->addLayers($mapa,$v,$dataView["layerNames"]);
}
$next = $dataView["extent"];
$ext = $mapa->extent;
$ext->setextent($next[0],$next[1],$next[2],$next[3]);
}
if ($tipo == "mini"){
$mapa->setsize(50,50);
$sca = $mapa->scalebar;
$sca->set("status",MS_OFF);
}
if ($tipo == "grande"){
$mapa->setsize(300,300);
$sca = $mapa->scalebar;
$sca->set("status",MS_OFF);
}
if($tipo == "todos"){
$mapa->setsize(150,150);
$sca = $mapa->scalebar;
$sca->set("status",MS_OFF);
}
$destino = $dir_tmp."/".nomeRandomico().".map";
$mapa->save($destino);
validaAcessoTemas($destino,true);
//testa a tabela de atributos
if(isset($_GET["tabela"])){
include("classesphp/classe_atributos.php");
$t = new Atributos($destino,$map);
restauraCon($destino,$postgis_mapa);
$r = $t->itensTexto();
$colunas = explode(";",$r["itens"]);
$ncolunas = count($colunas);
$registros = $r["valores"];
$nregistros = count($registros);
$error = "";
$error = ms_GetErrorObj();
echo "";
while($error && $error->code != MS_NOERR){
echo "
Error in %s: %s
", $error->routine, $error->message;
$error = $error->next();
}
echo "Registros em UTF8 são convertidos para ISO-8859-1
";
echo "Registros: ".$nregistros;"
";
echo "
Tempo leitura (s): ";
echo microtime(true) - $tempo;
echo "";
echo "";
echo "";
foreach($colunas as $co){
echo "".$co." ";
}
echo " ";
foreach($registros as $reg){
echo "";
$cc = explode(";",$reg);
foreach($cc as $c){
if (mb_detect_encoding($c,"UTF-8",true)){
$c = mb_convert_encoding($c,"ISO-8859-1","UTF-8");
}
echo "".$c." ";
}
echo " ";
}
echo "
";
echo "
Tempo total (montagem da tabela) (s): ";
echo microtime(true) - $tempo;
echo "";
}
else{
$mapa = ms_newMapObj($destino);
restauraConObj($mapa,$postgis_mapa);
$objImagem = @$mapa->draw();
//corrige o titulo da legenda
$numlayers = $mapa->numlayers;
for ($j=0;$j < $numlayers;$j++){
$l = $mapa->getlayer($j);
if($l->type != 3 && $l->type != 4){
$nclass = $l->numclasses;
for($i=0;$i<$nclass;$i++){
$classe = $l->getclass($i);
if($classe->title === ""){
$classe->title = $classe->name;
}
}
}
}
$objImagemLegenda = @$mapa->drawLegend();
if (!$objImagem){
echo "Problemas ao gerar o mapa
";
$error = "";
$error = ms_GetErrorObj();
while($error && $error->code != MS_NOERR){
echo "
Error in %s: %s
", $error->routine, $error->message;
$error = $error->next();
}
return;
}
if($objImagem->imagepath == "")
{echo "Erro IMAGEPATH vazio";}
$nomec = ($objImagem->imagepath).nomeRandomico()."teste.png";
$objImagem->saveImage($nomec);
$nomer = ($objImagem->imageurl).basename($nomec);
$nomel = ($objImagemLegenda->imagepath).nomeRandomico()."testel.png";
$objImagemLegenda->saveImage($nomel);
$nomerl = ($objImagemLegenda->imageurl).basename($nomel);
if(($tipo == "") || ($tipo == "todos")){
if($solegenda == "nao")
{echo "
";}
echo "
";
if($tipo == "todos"){
//echo "
".$dados."
";
}
if($map != "todos"){
echo "
Tempo (s): ";
echo microtime(true) - $tempo;
echo "";
echo "
Erros ocorridos:
";
$error = "";
$error = ms_GetErrorObj();
while($error && $error->code != MS_NOERR){
echo "
Error in %s: %s
", $error->routine, $error->message;
$error = $error->next();
}
}
}
else{
Header("Content-type: image/png");
ImagePng(ImageCreateFromPNG($nomec));
}
}
}
}
function zoomTema($nomelayer,&$mapa){
$layer = $mapa->getlayerbyname($nomelayer);
if($layer->data == "" && $layer->connection == "")
{return;}
$prjMapa = $mapa->getProjection();
$prjTema = $layer->getProjection();
$extatual = $mapa->extent;
$ret = $layer->getmetadata("extensao");
if($layer->type > 2 && $ret == "")
{return;}
$ct = $layer->connectiontype;
if(($ret == "") && ($ct != 1))
{return;}
if ($ret == ""){
$ret = $layer->getextent();
//reprojeta o retangulo
if (($prjTema != "") && ($prjMapa != $prjTema)){
$projInObj = ms_newprojectionobj($prjTema);
$projOutObj = ms_newprojectionobj($prjMapa);
$ret->project($projInObj, $projOutObj);
}
$extatual->setextent($ret->minx,$ret->miny,$ret->maxx,$ret->maxy);
}
else{
$ret = explode(" ",$ret);
$extatual->setextent($ret[0],$ret[1],$ret[2],$ret[3]);
}
}
?>