Exemple #1
0
 function adicionaTema($temas, $locaplic, $random = "sim")
 {
     //limpa selecao
     $temas = explode(",", $temas);
     $zoomlayer = "";
     foreach ($temas as $nome) {
         $this->adicionaAcesso($nome, $locaplic);
         $nomemap = "";
         //
         //verifica se o tema é um arquivo php
         //
         $extensao = ".map";
         if (file_exists($locaplic . "/temas/" . $nome . ".php") || file_exists($nome . ".php")) {
             //$extensao = ".php";
         }
         if (file_exists($locaplic . "/temas/" . $nome . ".gvp") || file_exists($nome . ".gvp")) {
             $extensao = ".gvp";
         }
         if ($extensao == ".php") {
             //include_once($locaplic."/temas/".$nome.".php");
             if (function_exists($nome)) {
                 //eval($nome."(\$this->mapa);");
             }
         }
         if ($extensao == ".gvp") {
             if (file_exists($locaplic . "/temas/" . $nome . ".gvp")) {
                 $nomemap = $locaplic . "/temas/" . $nome . ".gvp";
             }
             if (file_exists($nome)) {
                 $nomemap = $nome;
             }
             if (file_exists($nome . ".gvp")) {
                 $nomemap = $nome . ".gvp";
             }
             if ($nomemap != "") {
                 include_once $locaplic . "/pacotes/gvsig/gvsig2mapfile/class.gvsig2mapfile.php";
                 $gm = new gvsig2mapfile($nomemap);
                 $gvsigview = $gm->getViewsNames();
                 foreach ($gvsigview as $gv) {
                     $dataView = $gm->getViewData($gv);
                     $adicionar = array();
                     foreach ($dataView["layerNames"] as $t) {
                         if (!in_array($t, $this->nomes)) {
                             $adicionar[] = $t;
                         }
                     }
                     $this->mapa = $gm->addLayers($this->mapa, $gv, $adicionar);
                 }
                 foreach ($adicionar as $nome) {
                     $l = $this->mapa->getlayerbyname($nome);
                     //reposiciona o layer se for o caso
                     if ($l->group == "") {
                         $ltipo = $l->type;
                         if ($ltipo == 2 || $ltipo == 3) {
                             //poligono = 2
                             $indicel = $l->index;
                             $numlayers = $this->mapa->numlayers;
                             $nummove = 0;
                             for ($i = $numlayers - 1; $i > 0; $i--) {
                                 $layerAbaixo = $this->mapa->getlayer($i);
                                 $tipo = $layerAbaixo->type;
                                 if ($tipo != 2 && $tipo != 3) {
                                     $nummove++;
                                 }
                             }
                             for ($i = 0; $i < $nummove; ++$i) {
                                 $indicel = $l->index;
                                 $this->mapa->movelayerup($indicel);
                             }
                         }
                     }
                 }
             }
         }
         if ($extensao == ".map") {
             if (file_exists($locaplic . "/temas/" . $nome . ".map")) {
                 $nomemap = $locaplic . "/temas/" . $nome . ".map";
             }
             if (file_exists($nome)) {
                 $nomemap = $nome;
             }
             if (file_exists($nome . ".map")) {
                 $nomemap = $nome . ".map";
             }
             if ($nomemap != "") {
                 $nmap = ms_newMapObj($nomemap);
                 $novosnomes = $nmap->getAllLayerNames();
                 //define nomes unicos para os temas
                 foreach ($novosnomes as $n) {
                     if (!@$this->mapa->getlayerbyname($n)) {
                         $random = "nao";
                     }
                     $random == "sim" ? $nomeunico[$n] = nomeRandomico() : ($nomeunico[$n] = $n);
                 }
                 //altera os temas para incluir o nome unico
                 //include_once($locaplic."/classesphp/funcoes_gerais.php");
                 foreach ($novosnomes as $n) {
                     $nlayer = $nmap->getlayerbyname($n);
                     //evita problemas no modo tile
                     if ($this->v > 5) {
                         $p = $nlayer->getProcessing();
                         if (!in_array("LABEL_NO_CLIP=True", $p)) {
                             $nlayer->setprocessing("LABEL_NO_CLIP=True");
                         }
                         if (!in_array("POLYLINE_NO_CLIP=True", $p)) {
                             $nlayer->setprocessing("POLYLINE_NO_CLIP=True");
                         }
                     }
                     //para impedir erros na legenda
                     if ($nlayer->getmetadata("classe") == "") {
                         $nlayer->setmetadata("classe", "");
                     }
                     autoClasses($nlayer, $this->mapa);
                     $nlayer->set("status", MS_DEFAULT);
                     $nNome = str_replace(".map", "", basename($nomemap));
                     $nlayer->setmetadata("arquivotemaoriginal", $nNome);
                     $nlayer->setmetadata("nomeoriginal", $nlayer->name);
                     $nlayer->set("name", $nomeunico[$n]);
                     //altera o nome do grupo se existir
                     if ($nlayer->group != " " && $nlayer->group != "") {
                         $lr = $nlayer->group;
                         if ($nomeunico[$lr]) {
                             $nlayer->set("group", $nomeunico[$lr]);
                         }
                     }
                     //
                     //verifica se &eacute; um WMS e se existem classes definidas
                     //se existirem as classes, &eacute; criado um SLD para ser aplicado ao layer
                     //O SLD so funciona se CLASSITEM estiver definido
                     //
                     if ($nlayer->classitem != "" && $nlayer->connectiontype == 7 && $nlayer->numclasses > 0 && $nlayer->getmetadata("wms_sld_body") == "") {
                         $tipotemp = $nlayer->type;
                         $tiporep = $nlayer->getmetadata("tipooriginal");
                         $nlayer->set("type", MS_LAYER_POLYGON);
                         if ($tiporep == "linear") {
                             $nlayer->set("type", MS_LAYER_LINE);
                         }
                         if ($tiporep == "pontual") {
                             $nlayer->set("type", MS_LAYER_POINT);
                         }
                         $sld = $nlayer->generateSLD();
                         if ($sld != "") {
                             $nlayer->setmetadata("wms_sld_body", str_replace('"', "'", $sld));
                         }
                         $nlayer->set("type", $tipotemp);
                     }
                     cloneInlineSymbol($nlayer, $nmap, $this->mapa);
                     ms_newLayerObj($this->mapa, $nlayer);
                     $l = $this->mapa->getlayerbyname($nlayer->name);
                     if ($this->mapa->getmetadata("interface") == "googlemaps") {
                         if (($l->opacity == 100 || $l->opacity == "") && ($l->type == 2 || $l->type == 3)) {
                             $l->set("opacity", 50);
                         }
                     }
                     //reposiciona o layer se for o caso
                     if ($l->group == "") {
                         $ltipo = $l->type;
                         if ($ltipo == 2 || $ltipo == 3) {
                             //poligono = 2
                             $indicel = $l->index;
                             $numlayers = $this->mapa->numlayers;
                             $nummove = 0;
                             for ($i = $numlayers - 1; $i > 0; $i--) {
                                 $layerAbaixo = $this->mapa->getlayer($i);
                                 $tipo = $layerAbaixo->type;
                                 if ($layerAbaixo->numclasses > 0 && $l->numclasses > 0) {
                                     $c = $layerAbaixo->getclass(0);
                                     $c1 = $l->getclass(0);
                                     if ($c->numstyles > 0 && $c1->numstyles > 0) {
                                         if ($tipo == 2 && $c->getstyle(0)->color->red == -1 && $c1->getstyle(0)->color->red != -1) {
                                             $tipo = 0;
                                             //vai subir
                                         }
                                     }
                                 }
                                 if ($tipo != 2 && $tipo != 3) {
                                     $nummove++;
                                 }
                             }
                             for ($i = 0; $i < $nummove; ++$i) {
                                 $indicel = $l->index;
                                 $this->mapa->movelayerup($indicel);
                             }
                         }
                     }
                     corrigeLayerGrid($nlayer, $l);
                 }
             }
         }
     }
     return true;
 }
Exemple #2
0
function incluiTemasIniciais()
{
    global $temasa, $mapn, $locaplic;
    if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
        $temasdir = $locaplic . "\\temas";
    } else {
        $temasdir = $locaplic . "/temas";
    }
    if (!isset($temasa)) {
        $temasa = "";
    }
    $temasa = str_replace(',', " ", $temasa);
    $alayers = explode(" ", $temasa);
    $existeraster = false;
    foreach ($alayers as $arqt) {
        $arqtemp = "";
        $arqt = trim($arqt);
        if ($arqt == "") {
            continue;
        }
        $extensao = ".map";
        $arqt = str_replace(".gvp", "", $arqt);
        if (file_exists($arqt . ".gvp")) {
            $extensao = ".gvp";
            $arqt = $arqt . ".gvp";
        }
        if (file_exists($arqt)) {
            $arqtemp = $arqt;
        }
        if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN') && file_exists($temasdir . "\\" . $arqt . "php")) {
            //$extensao = ".php";
        } elseif (file_exists($temasdir . "/" . $arqt . ".php")) {
            //$extensao = ".php";
        }
        if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN') && file_exists($temasdir . "\\" . $arqt . "gvp")) {
            $extensao = ".gvp";
        } elseif (file_exists($temasdir . "/" . $arqt . ".gvp")) {
            $extensao = ".gvp";
        }
        if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN') && file_exists($locaplic . "\\aplicmap\\" . $arqt . $extensao)) {
            $arqtemp = $locaplic . "\\aplicmap\\" . $arqt . $extensao;
        } elseif (file_exists($locaplic . "/aplicmap/" . $arqt . $extensao)) {
            $arqtemp = $locaplic . "/aplicmap/" . $arqt . $extensao;
        }
        if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN') && file_exists($temasdir . "\\" . $arqt . $extensao)) {
            $arqtemp = $temasdir . "\\" . $arqt . $extensao;
        } elseif (file_exists($temasdir . "/" . $arqt . $extensao)) {
            $arqtemp = $temasdir . "/" . $arqt . $extensao;
        }
        if ($arqtemp == "") {
            echo "<br>Imposs&iacute;vel acessar tema {$arqtemp}";
        } else {
            if ($extensao == ".map" && !@ms_newMapObj($arqtemp)) {
                echo "<br>Problemas com a camada {$arqtemp}<br>";
            } else {
                if ($extensao == ".map") {
                    $maptemp = @ms_newMapObj($arqtemp);
                    for ($i = 0; $i < $maptemp->numlayers; ++$i) {
                        //error_reporting(0);
                        $layern = $maptemp->getLayer($i);
                        if ($layern->type == MS_LAYER_RASTER) {
                            $existeraster = true;
                        }
                        if ($layern->name == "estadosl") {
                            $layern->set("data", $locaplic . "/aplicmap/dados/estados.shp");
                        }
                        $layern->setmetadata("nomeoriginal", $layern->name);
                        $nNome = str_replace(".map", "", basename($arqtemp));
                        $layern->setmetadata("arquivotemaoriginal", $nNome);
                        autoClasses($layern, $mapn);
                        //
                        //necess&aacute;rio para n&atilde;o alterar a extens&atilde;o do mapa por esse par&acirc;metro
                        //
                        $layern->setmetadata("aplicaextensao", "");
                        //cria e aplica sld se for wms e existirem classes
                        if ($layern->classitem != "" && $layern->connectiontype == 7 && $layern->numclasses > 0 && $layern->getmetadata("wms_sld_body") == "") {
                            $tipotemp = $layern->type;
                            $statustemp = $layern->status;
                            $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);
                            }
                            $layern->set("status", MS_DEFAULT);
                            $sld = $layern->generateSLD();
                            if ($sld != "") {
                                $layern->setmetadata("wms_sld_body", str_replace('"', "'", $sld));
                            }
                            $layern->set("type", $tipotemp);
                            $layern->set("status", $statustemp);
                        }
                        cloneInlineSymbol($layern, $maptemp, $mapn);
                        $layerAdicionado = ms_newLayerObj($mapn, $layern);
                        corrigeLayerGrid($layern, $layerAdicionado);
                    }
                }
                if ($extensao == ".php") {
                    //include_once($arqtemp);
                    //eval($arqt."(\$mapn);");
                }
                if ($extensao == ".gvp") {
                    include_once $locaplic . "/pacotes/gvsig/gvsig2mapfile/class.gvsig2mapfile.php";
                    $gm = new gvsig2mapfile($arqtemp);
                    $gvsigview = $gm->getViewsNames();
                    foreach ($gvsigview as $v) {
                        $dataView = $gm->getViewData($v);
                        $mapn = $gm->addLayers($mapn, $v, $dataView["layerNames"]);
                    }
                    $next = $dataView["extent"];
                    $ext = $mapn->extent;
                    $ext->setextent($next[0], $next[1], $next[2], $next[3]);
                }
            }
        }
    }
    //
    //muda para RGB para melhorar o desenho da imagem raster
    //
    if ($existeraster) {
        //$of = $mapn->outputformat;
        //$of->set("imagemode",MS_IMAGEMODE_RGB);
    }
    erroCriacao();
}
Exemple #3
0
function testaMapaImg($tema)
{
    global $locaplic, $postgis_mapa, $versao, $base, $dir_tmp, $tempo;
    $base = mapaBase($locaplic, $versao, $base);
    $mapa = ms_newMapObj($base);
    error_reporting(0);
    ms_ResetErrorList();
    try {
        ms_newMapObj($tema);
    } catch (Exception $e) {
        return array("imgMapa" => "", "imgLegenda" => "", "tempo" => microtime(true) - $tempo, "erro" => "Objeto map nao pode ser criado. Erro fatal.");
    }
    if (@ms_newMapObj($tema)) {
        $nmapa = ms_newMapObj($tema);
    } else {
        $erro = "";
        $error = ms_GetErrorObj();
        while ($error && $error->code != MS_NOERR) {
            $erro .= "<br>Error in %s: %s<br>\n";
            $erro .= "<br>" . $error->routine;
            $erro .= "<br>" . $error->message;
            $error = $error->next();
        }
        return array("imgMapa" => "", "imgLegenda" => "", "tempo" => microtime(true) - $tempo, "erro" => $erro);
    }
    substituiConObj($mapa, $postgis_mapa);
    substituiConObj($nmapa, $postgis_mapa);
    $numlayers = $nmapa->numlayers;
    $dados = "";
    $simbolos = array();
    for ($i = 0; $i < $numlayers; $i++) {
        $layern = $nmapa->getlayer($i);
        $layern->set("status", MS_DEFAULT);
        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);
        $pegarext = $layern->name;
    }
    zoomTema($pegarext, $mapa);
    $mapa->setsize(500, 500);
    $sca = $mapa->scalebar;
    $sca->set("status", MS_OFF);
    $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) {
        $error = "";
        $erro = "";
        $error = ms_GetErrorObj();
        while ($error && $error->code != MS_NOERR) {
            $erro .= "<br>Error in %s: %s<br>";
            $erro .= "<br>" . $error->routine;
            $erro .= "<br>" . $error->message;
            $error = $error->next();
        }
        return array("imgMapa" => "", "imgLegenda" => "", "tempo" => microtime(true) - $tempo, "erro" => $erro);
    }
    if ($objImagem->imagepath == "") {
        return array("imgMapa" => "", "imgLegenda" => "", "tempo" => microtime(true) - $tempo, "erro" => "Erro IMAGEPATH vazio");
    }
    $nomec = $objImagem->imagepath . nomeRandomico() . "teste.png";
    $objImagem->saveImage($nomec);
    $nomel = $objImagemLegenda->imagepath . nomeRandomico() . "testel.png";
    $objImagemLegenda->saveImage($nomel);
    $erro = "";
    $error = "";
    $error = ms_GetErrorObj();
    while ($error && $error->code != MS_NOERR) {
        $erro .= "<br>Error in %s: %s<br>";
        $erro .= "<br>" . $error->routine;
        $erro .= "<br>" . $error->message;
        $error = $error->next();
    }
    return array("imgMapa" => $objImagem->imageurl . basename($nomec), "imgLegenda" => $objImagemLegenda->imageurl . basename($nomel), "tempo" => microtime(true) - $tempo, "erro" => $erro);
}
Exemple #4
0
function verifica($map, $solegenda, $tabela, $cache = "sim")
{
    global $tipo, $locaplic, $postgis_mapa, $versao, $base, $dir_tmp, $tempo;
    $mapUrl = $map;
    if ($tipo == "mini" && file_exists('temas/miniaturas/' . $map . ".mini.png") && $cache == "sim") {
        Header("Content-type: image/png");
        ImagePng(ImageCreateFromPNG('temas/miniaturas/' . $map . ".mini.png"));
        exit;
    }
    if ($tipo == "grande" && file_exists('temas/miniaturas/' . $map . ".grande.png") && $cache == "sim") {
        Header("Content-type: image/png");
        ImagePng(ImageCreateFromPNG('temas/miniaturas/' . $map . ".grande.png"));
        exit;
    }
    ms_ResetErrorList();
    $tema = "";
    if (file_exists($map)) {
        $tema = $map;
    } else {
        $map = str_replace("\\", "/", $map);
        $map = basename($map);
        if (file_exists('temas/' . $map)) {
            $tema = 'temas/' . $map;
        }
        if (file_exists('temas/' . $map . '.map')) {
            $tema = 'temas/' . $map . ".map";
        }
        if (file_exists('temas/' . $map . '.gvp')) {
            $tema = 'temas/' . $map . ".gvp";
        }
    }
    if (!file_exists($tema)) {
        $tema = $locaplic . "/" . $tema;
    }
    if ($tipo == "" || $tipo == "todos") {
        echo "<hr><br><br><span style='color:red' ><b>Testando: {$tema} </span><pre></b>";
    }
    if (!file_exists($tema)) {
        echo "Arquivo " . $map . " n&atilde;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 == "") {
                            $layern->set("connection", $postgis_mapa);
                        } else {
                            $layern->set("connection", $postgis_mapa[$lcon]);
                        }
                    }
                }
            }
        }
        if (!stristr($tema, '.php') === FALSE) {
            /*
            echo "<br>Arquivo <i>$tema</i> &eacute; um programa PHP. O teste pode n&atilde;o funcionar.<br>";
            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)) {
                ms_ResetErrorList();
                if (@ms_newMapObj($mapUrl)) {
                    $nmapa = ms_newMapObj($mapUrl);
                } else {
                    echo "Erro no arquivo {$mapUrl} <br>";
                    $error = ms_GetErrorObj();
                    while ($error && $error->code != MS_NOERR) {
                        printf("<br>Error in %s: %s<br>\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 <br>";
                        exit;
                    }
                } else {
                    echo "erro no arquivo {$map} <br>";
                    echo "Obs.: em alguns testes o mapfile pode falhar se o endere&ccedil;o dos arquivos de s&iacute;mbolos estiverem <br>definidos de forma relativa ao inv&eacute;s de absoluta. Nesses casos, ao abrir o i3Geo, <br>o mapfile poder&aacute; funcionar. <br>";
                    $error = ms_GetErrorObj();
                    while ($error && $error->code != MS_NOERR) {
                        printf("<br>Error in %s: %s<br>\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 == "") {
                                $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 "</div><div style='text-align:left;margin: auto;width:900px;overflow: auto;'>";
            while ($error && $error->code != MS_NOERR) {
                echo "<br>Error in %s: %s<br>", $error->routine, $error->message;
                $error = $error->next();
            }
            echo "Registros em UTF8 s&atilde;o convertidos para ISO-8859-1<br>";
            echo "Registros: " . $nregistros;
            "<br>";
            echo "<br><b>Tempo leitura (s): ";
            echo microtime(true) - $tempo;
            echo "</b>";
            echo "<table>";
            echo "<tr>";
            foreach ($colunas as $co) {
                echo "<td><b>" . $co . "</b></td>";
            }
            echo "</tr>";
            foreach ($registros as $reg) {
                echo "<tr>";
                $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 "<td>" . $c . "</td>";
                }
                echo "</tr>";
            }
            echo "</table>";
            echo "<br><b>Tempo total (montagem da tabela) (s): ";
            echo microtime(true) - $tempo;
            echo "</b>";
        } 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<br>";
                $error = "";
                $error = ms_GetErrorObj();
                while ($error && $error->code != MS_NOERR) {
                    echo "<br>Error in %s: %s<br>", $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 "<img src=" . $nomer . " /><br>";
                }
                echo "<img src=" . $nomerl . " />";
                if ($tipo == "todos") {
                    //echo "<br>".$dados."<br>";
                }
                if ($map != "todos") {
                    echo "<br><b>Tempo (s): ";
                    echo microtime(true) - $tempo;
                    echo "</b>";
                    echo "<br>Erros ocorridos:<br>";
                    $error = "";
                    $error = ms_GetErrorObj();
                    while ($error && $error->code != MS_NOERR) {
                        echo "<br>Error in %s: %s<br>", $error->routine, $error->message;
                        $error = $error->next();
                    }
                }
            } else {
                Header("Content-type: image/png");
                ImagePng(ImageCreateFromPNG($nomec));
            }
        }
    }
}
Exemple #5
0
                            $nclass = $l->numclasses;
                            for ($i = 0; $i < $nclass; $i++) {
                                $classe = $l->getclass($i);
                                if ($classe->title == "") {
                                    $classe->title = $classe->name;
                                }
                            }
                            if ($nclass == 1) {
                                $classe = $l->getclass(0);
                                if ($classe->name == "") {
                                    $classe->title = $l->getmetadata("tema");
                                    $classe->set("name", $l->getmetadata("tema"));
                                }
                            }
                            $layerAdicionado = ms_newLayerObj($oMap, $l);
                            corrigeLayerGrid($l, $layerAdicionado);
                        } else {
                            //a camada nao pode ser usada como servico WMS, entao e enviada uma mensagem
                            $l->set("data", "");
                            $l->set("type", MS_POINT);
                            $l->setmetadata("cache", "nao");
                            //apaga as classes
                            $nclass = $l->numclasses;
                            for ($i = 0; $i < $nclass; $i++) {
                                $classe = $l->getclass($i);
                                $classe->set("status", MS_DELETE);
                            }
                            $l->updatefromstring('
									LAYER
									SIZEUNITS PIXELS
									TRANSFORM FALSE