Esempio n. 1
0
function salvaMapfile()
{
    global $locaplic, $dbhw, $codigo, $gravarTexto, $esquemaadmin;
    if (empty($gravarTexto)) {
        return;
    }
    $mapfile = $locaplic . "/temas/" . $codigo . ".map";
    $original = file_get_contents($mapfile);
    $fp = fopen($mapfile, "w");
    if ($fp == false) {
        echo "<span style=color:red <b>N&atilde;o foi poss&iacute;vel salvar o arquivo. Verifique as permiss&otilde;es ou se h&aacute; algum erro no mapfile</b></span><br><br>";
        exit;
    } else {
        // remove itens vazios
        $novoTexto = array();
        $testar = array("TEMPORIZADOR", "PALLETESTEP", "LTEMPOITEMIMAGEM", "METAESTAT_ID_MEDIDA_VARIAVEL", "GMOPACITY", "GMSTATUS", "ICONETEMA", "LTEMPOITEMTITULO", "DESCRIPTION_TEMPLATE", "LTEMPOITEMLINK", "TILES", "METAESTAT_CODIGO_TIPO_REGIAO", "ARQUIVOTEMAORIGINAL", "PALLETEFILE", "NOMEORIGINAL", "OLSTATUS", "PERMITEDOWNLOAD", "LTEMPOFORMATODATA", "FILTROORIGINAL", "PERMITECOMENTARIO", "LTEMPOITEMICONE", "DATAORIGINAL", "PLUGINI3GEO", "METAESTAT", "ITEMBUSCARAPIDA", "ARQUIVODOWNLOAD", "ARQUIVOKMZ", "PERMITEKML", "PERMITEOGC", "CONVCARACTER", "CORTEPIXELS", "EDITORSQL", "LTEMPOCONVENCODE", "LTEMPOITEMFIM", "OLOPACITY", "LEGENDAWMS", "LEGENDAIMG", "KEYIMAGE", "TILEINDEX", "TILEITEM", "SYMBOL", "LABELITEM", "FILTERITEM", "GROUP", "ENCODING", "TIP", "CLASSE", "ITENSDESC", "CLASSESNOME", "ITENSLINK", "ESCALA", "CLASSESSIMBOLO", "MENSAGEM", "EXTENSAO", "CLASSESITEM", "ESCONDIDO", "CLASSESCOR", "DOWNLOAD", "CLASSESTAMANHO", "ITENS", "TEMA", "APLICAEXTENSAO", "IDENTIFICA", "TRANSITIONEFFECT");
        foreach (preg_split('~[\\r\\n]+~', $gravarTexto) as $line) {
            $teste = strtoupper($line);
            $teste = trim($teste);
            $teste = str_replace(array(" ", "'", '"'), "", $teste);
            $teste = preg_replace('/[\\n\\r\\t ]*/', '', $teste);
            $passou = true;
            foreach ($testar as $t) {
                if ($teste == $t) {
                    $passou = false;
                }
            }
            if ($passou == true) {
                if (mb_detect_encoding($line, 'UTF-8') == "UTF-8") {
                    $line = mb_convert_encoding($line, "ISO-8859-1", "UTF-8");
                }
                $novoTexto[] = $line;
            }
        }
        fwrite($fp, implode("\r\n", $novoTexto));
    }
    fclose($fp);
    // testa o mapfile
    ms_ResetErrorList();
    if (!@ms_newMapObj($mapfile)) {
        echo "Erro no arquivo sera mantido o original<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();
        }
        $fp = fopen($mapfile, "w");
        fwrite($fp, $original);
        fclose($fp);
        exit;
    }
    // verifica os metadata que sao armazenados tambem no banco de dados de administracao
    // isso e necessario para manter a consistencia caso o usuario altere manualmente os valores
    // cria o objeto map
    $mapa = ms_newMapObj($mapfile);
    $layer = $mapa->getlayerbyname($codigo);
    if ($layer == "") {
        return "<br><span style='color:red;'>Atenção: não existe nenhum LAYER com NAME igual a " . $codigo . "</span><br>";
    } else {
        // pega o metadata
        $meta = $layer->getmetadata("permitedownload");
        $meta = strtoupper($meta);
        $dataCol = array();
        if ($meta != "" && ($meta == "SIM" || $meta == "NAO")) {
            $dataCol["download_tema"] = $meta;
        }
        $meta = $layer->getmetadata("permiteogc");
        $meta = strtoupper($meta);
        if ($meta != "" && ($meta == "SIM" || $meta == "NAO")) {
            $dataCol["ogc_tema"] = $meta;
        }
        $meta = $layer->getmetadata("permitekml");
        $meta = strtoupper($meta);
        if ($meta != "" && ($meta == "SIM" || $meta == "NAO")) {
            $dataCol["kml_tema"] = $meta;
        }
        $meta = $layer->getmetadata("permitekmz");
        $meta = strtoupper($meta);
        if ($meta != "" && ($meta == "SIM" || $meta == "NAO")) {
            $dataCol["kmz_tema"] = $meta;
        }
        $resultado = i3GeoAdminUpdate($dbhw, "i3geoadmin_temas", $dataCol, "WHERE codigo_tema = '{$codigo}'");
    }
}
Esempio n. 2
0
    $error = ms_GetErrorObj();
    while ($error && $error->code != MS_NOERR) {
        echo "<h5>Error in %s: %s</h5>", $error->routine, $error->message;
        $error = $error->next();
    }
    echo "</div>";
}
if ($imgo->imagepath == "") {
    echo "<div class='alert alert-danger' role='alert'>Erro IMAGEPATH vazio</div>";
}
$imgo->saveImage($nome);
$nome = $imgo->imageurl . basename($nome);
echo "<img src={$nome} />";
echo " \n";
$error = "";
ms_ResetErrorList();
echo "<h4>Carregando o map_file geral1... e acrescentando os limites estaduais (aplicmap/estadosl...) </h4>";
if (isset($estadosl)) {
    $maptemp = ms_newMapObj($locaplic . "/aplicmap/" . $estadosl . ".map");
} else {
    if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) {
        $maptemp = ms_newMapObj($locaplic . "/aplicmap/estadoslwindows.map");
    } else {
        $maptemp = ms_newMapObj($locaplic . "/aplicmap/estadosl.map");
    }
}
while ($error && $error->code != MS_NOERR) {
    printf("<div class='alert alert-danger' role='alert'>Error in %s: %s<br></div>", $error->routine, $error->message);
    $error = $error->next();
}
echo <<<HTML
Esempio n. 3
0
 function redesenhaCorpo($tipoimagem, $utilizacgi, $locmapserv)
 {
     ms_ResetErrorList();
     if (file_exists($this->locaplic . "/classe_imagem.php")) {
         include_once $this->locaplic . "/classe_imagem.php";
     } else {
         include_once "classe_imagem.php";
     }
     $nomer = "";
     $qy = file_exists($this->qyfile);
     if ($qy) {
         foreach ($this->layers as $l) {
             $l->set("template", "none.htm");
             carregaquery2($this->arquivo, $l, $this->mapa);
         }
     }
     $legenda = $this->mapa->legend;
     //
     //prepara a legenda para incluir no mapa, preenchendo os nomes das classes que podem estar em branco
     //isso ocorre quando o layer tem s� uma classe
     //
     if ($legenda->status == MS_EMBED) {
         foreach ($this->layers as $layer) {
             if ($layer->data != "" && strtoupper($layer->getmetadata("escondido")) != "SIM" && strtoupper($layer->getmetadata("tema")) != "NAO") {
                 if ($layer->numclasses > 0) {
                     $classe = $layer->getclass(0);
                     if ($classe->name == "" || $classe->name == " ") {
                         $classe->set("name", $layer->getmetadata("tema"));
                     }
                 }
             }
         }
     }
     $nome = nomeRandomico();
     //
     //gera a imagem do mapa
     //se estiver sendo utilizado o cgi para desenhar a imagem
     //&eacute; necess&aacute;rio criar uma imagem vazia para capturar o nome que ser&aacute; retornado
     //
     if (isset($utilizacgi) && strtolower($utilizacgi) == "sim" && $tipoimagem == "nenhum" && !$qy) {
         foreach ($this->layers as $l) {
             $l->set("status", MS_OFF);
         }
         $imgo = @$this->mapa->draw();
     } else {
         //if($tipoimagem != "nenhum")
         //{
         $of = $this->mapa->outputformat;
         $of->set("imagemode", MS_IMAGEMODE_RGB);
         //}
         if (!$qy) {
             $imgo = @$this->mapa->draw();
         } else {
             $imgo = @$this->mapa->drawQuery();
         }
         $mensagemErro = "";
         $error = ms_GetErrorObj();
         while ($error && $error->code != MS_NOERR) {
             //printf("<br>Error in %s: %s<br>\n", $error->routine, $error->message);
             $mensagemErro .= $error->routine . " " . $error->message;
             $error = $error->next();
         }
         ms_ResetErrorList();
         $mensagemErro = str_replace("'", " ", $mensagemErro);
         $mensagemErro = str_replace(":", " ", $mensagemErro);
         $mensagemErro = str_replace("\n", " ", $mensagemErro);
         $nomer = $imgo->imagepath . "mapa" . $nome . ".png";
         $imgo->saveImage($nomer);
         //
         //aplica o filtro de imagem se estiver definido em $tipoimagem
         //
         if ($tipoimagem !== "nenhum") {
             $tiposImagem = explode(" ", $tipoimagem);
             foreach ($tiposImagem as $tipoimagem) {
                 $m = new Imagem($nomer);
                 if ($tipoimagem == "cinza") {
                     imagepng($m->cinzaNormal(), str_replace("\\", "/", $nomer));
                 }
                 if ($tipoimagem == "sepiaclara") {
                     imagepng($m->sepiaClara(), str_replace("\\", "/", $nomer));
                 }
                 if ($tipoimagem == "sepianormal") {
                     imagepng($m->sepiaNormal(), str_replace("\\", "/", $nomer));
                 }
                 if ($tipoimagem == "negativo") {
                     imagepng($m->negativo(), str_replace("\\", "/", $nomer));
                 }
                 if ($tipoimagem == "detectaBordas") {
                     imagepng($m->detectaBordas(), str_replace("\\", "/", $nomer));
                 }
                 if ($tipoimagem == "embassa") {
                     imagepng($m->embassa(), str_replace("\\", "/", $nomer));
                 }
                 if ($tipoimagem == "gaussian_blur") {
                     imagepng($m->gaussian_blur(), str_replace("\\", "/", $nomer));
                 }
                 if ($tipoimagem == "selective_blur") {
                     imagepng($m->selective_blur(), str_replace("\\", "/", $nomer));
                 }
                 if ($tipoimagem == "mean_removal") {
                     imagepng($m->mean_removal(), str_replace("\\", "/", $nomer));
                 }
                 if ($tipoimagem == "pixelate") {
                     imagepng($m->pixelate(), str_replace("\\", "/", $nomer));
                 }
             }
         }
         $nomer = $imgo->imageurl . basename($nomer);
     }
     if ($imgo == "") {
         return "erro";
     }
     $e = $this->mapa->extent;
     $ext = $e->minx . " " . $e->miny . " " . $e->maxx . " " . $e->maxy;
     if (isset($utilizacgi) && strtolower($utilizacgi) == "sim" && !$qy) {
         $nomer = $locmapserv . "?map=" . $this->arquivo . "&mode=map&" . nomeRandomico();
     }
     $res["mapscale"] = $this->mapa->scaledenom;
     $res["mapres"] = $this->mapa->resolution;
     $res["pixelsize"] = $this->mapa->cellsize;
     $res["mapexten"] = $ext;
     $res["mapimagem"] = $nomer;
     $res["w"] = $imgo->width;
     $res["h"] = $imgo->height;
     $res["mappath"] = $imgo->imagepath;
     $res["mapurl"] = $imgo->imageurl;
     $res["erro"] = $mensagemErro;
     return $res;
 }
Esempio n. 4
0
function erroCriacao()
{
    $error = ms_GetErrorObj();
    while ($error && $error->code != MS_NOERR) {
        printf("<br>Error in %s: %s<br>\n", $error->routine, $error->message);
        $error = $error->next();
    }
    ms_ResetErrorList();
}
Esempio n. 5
0
function testaMapa($map_file, $postgis_mapa)
{
    substituiCon($map_file, $postgis_mapa);
    $objMapa = ms_newMapObj($map_file);
    substituiConObj($objMapa, $postgis_mapa);
    ms_ResetErrorList();
    $img = $objMapa->draw();
    $erros = "";
    $error = ms_GetErrorObj();
    while ($error && $error->code != MS_NOERR) {
        $erros .= $error->routine;
        $error = $error->next();
    }
    $error = ms_GetErrorObj();
    if ($error->code != MS_NOERR) {
        $nmf = str_replace(".map", "seguranca.map", $map_file);
        $objMapa = ms_newMapObj($nmf);
        $objMapa->save($map_file);
        $erros = str_replace("\n", "", $erros);
        $erros = str_replace("\"", "", $erros);
        $erros = str_replace("'", "", $erros);
        $erros = str_replace(":", " ", $erros);
        $erros = str_replace("...", " ", $erros);
        $erros = str_replace("(", " ", $erros);
        $erros = str_replace(")", " ", $erros);
        $erros = str_replace("*", " ", $erros);
        $erros = str_replace("/", " ", $erros);
        $erros = htmlentities($erros);
        return $erros;
    } else {
        return "ok";
    }
}
Esempio n. 6
0
function verificaMiniatura($map, $tipo, $admin = false)
{
    global $locaplic, $versao, $base, $postgis_mapa;
    if ($versao == "") {
        $versao = versao();
        $versao = $versao["principal"];
    }
    ms_ResetErrorList();
    $tema = "";
    $map = str_replace("\\", "/", $map);
    $map = basename($map);
    $extensao = ".map";
    if (file_exists($locaplic . '/temas/' . $map)) {
        $tema = $locaplic . '/temas/' . $map;
    } else {
        if (file_exists($locaplic . '/temas/' . $map . '.gvp')) {
            $extensao = ".gvp";
        }
        $tema = $locaplic . '/temas/' . $map . $extensao;
    }
    if ($tema != "") {
        if (isset($base) && $base != "") {
            if (file_exists($base)) {
                $f = $base;
            } else {
                $f = $locaplic . "/aplicmap/" . $base . ".map";
            }
            if (!file_exists($base)) {
                echo "<div class='alert alert-danger'>ARQUIVO {$base} N&Acirc;O FOI ENCONTRADO. CORRIJA ISSO EM ms_configura.php";
                exit;
            }
        } else {
            $f = "";
            if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) {
                $f = $locaplic . "/aplicmap/geral1windowsv" . $versao . ".map";
            } else {
                if ($f == "" && file_exists('/var/www/i3geo/aplicmap/geral1debianv' . $versao . '.map')) {
                    $f = "/var/www/i3geo/aplicmap/geral1debianv" . $versao . ".map";
                }
                if ($f == "" && file_exists('/var/www/html/i3geo/aplicmap/geral1fedorav' . $versao . '.map')) {
                    $f = "/var/www/html/i3geo/aplicmap/geral1fedorav" . $versao . ".map";
                }
                if ($f == "" && file_exists('/opt/www/html/i3geo/aplicmap/geral1fedorav' . $versao . '.map')) {
                    $f = "/opt/www/html/i3geo/aplicmap/geral1v" . $versao . ".map";
                }
                if ($f == "") {
                    $f = $locaplic . "/aplicmap/geral1v" . $versao . ".map";
                }
            }
        }
        $mapa = ms_newMapObj($f);
        if ($extensao == ".map") {
            if (@ms_newMapObj($tema)) {
                $nmapa = ms_newMapObj($tema);
            } else {
                echo "<div class='alert alert-danger'>erro no arquivo {$tema} </div>";
                return;
            }
            $dados = "";
            $numlayers = $nmapa->numlayers;
            for ($i = 0; $i < $numlayers; $i++) {
                $layern = $nmapa->getlayer($i);
                $layern->set("status", MS_DEFAULT);
                cloneInlineSymbol($layern, $nmapa, $mapa);
                ms_newLayerObj($mapa, $layern);
                autoClasses($layern, $mapa, $locaplic);
                if ($layern->data == "") {
                    $dados = $layern->connection;
                } else {
                    $dados = $layern->data;
                }
                $pegarext = $teman->name;
            }
            if (isset($postgis_mapa)) {
                if ($postgis_mapa != "") {
                    $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]);
                                    }
                                }
                            }
                        }
                    }
                }
            }
            zoomTemaMiniatura($pegarext, $mapa);
        }
        if ($extensao == ".gvp") {
            include_once $locaplic . "/pacotes/gvsig/gvsig2mapfile/class.gvsig2mapfile.php";
            $gm = new gvsig2mapfile($tema);
            $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" || $tipo == "todos") {
            $mapa->setsize(50, 50);
            $sca = $mapa->scalebar;
            $sca->set("status", MS_OFF);
            $objImagemM = @$mapa->draw();
            //if ($objImagemM == "" || $objImagemM == MS_FAILURE)
            //{echo "Problemas ao gerar o mapa<br>";return;}
            $weboM = $mapa->web;
            $urlM = $weboM->imageurl . "/" . $map;
        }
        if ($tipo == "grande" || $tipo == "todos") {
            $mapa->setsize(300, 300);
            $sca = $mapa->scalebar;
            $sca->set("status", MS_OFF);
            $objImagemG = @$mapa->draw();
            //if ($objImagemG == "" || $objImagemG == MS_FAILURE)
            //{echo "Problemas ao gerar o mapa<br>";return;}
            $weboG = $mapa->web;
            $urlG = $weboG->imageurl . "/" . $map;
        }
        if ($tipo == "mini" || $tipo == "todos") {
            if (!$objImagemM) {
                echo "Problemas ao gerar o mapa<br>";
                $error = "";
                $error = ms_GetErrorObj();
                while ($error && $error->code != MS_NOERR) {
                    echo "<div class='alert alert-danger'>Error in %s: %s</div>", $error->routine, $error->message;
                    $error = $error->next();
                }
                return;
            }
            if ($objImagemM->imagepath == "") {
                echo "<div class='alert alert-danger'>Erro IMAGEPATH vazio</div>";
                return;
            }
            $nomecM = $objImagemM->imagepath . $map . ".mini.png";
            $objImagemM->saveImage($nomecM);
        }
        if ($tipo == "grande" || $tipo == "todos") {
            if (!$objImagemG) {
                echo "<div class='alert alert-danger'>Problemas ao gerar o mapa</div>";
                $error = "";
                $error = ms_GetErrorObj();
                while ($error && $error->code != MS_NOERR) {
                    echo "<div class='alert alert-danger'>Error in %s: %s</div>", $error->routine, $error->message;
                    $error = $error->next();
                }
                return;
            }
            if ($objImagemG->imagepath == "") {
                echo "<div class='alert alert-danger'>Erro IMAGEPATH vazio</div>";
                return;
            }
            $nomecG = $objImagemG->imagepath . $map . ".grande.png";
            $objImagemG->saveImage($nomecG);
        }
        if ($admin === false) {
            if ($tipo == "mini" || $tipo == "todos") {
                echo "<img class='img-thumbnail' src='" . $urlM . ".mini.png' />";
            }
            if ($tipo == "grande" || $tipo == "todos") {
                echo "<img class='img-thumbnail' src='" . $urlG . ".grande.png' />";
            }
        }
        //
        //copia a imagem
        //
        if ($admin === true) {
            $dir = $locaplic . "/temas/miniaturas";
            $mini = $dir . "/" . $map . ".map.mini.png";
            $grande = $dir . "/" . $map . ".map.grande.png";
            if (file_exists($mini)) {
                unlink($mini);
            }
            if (file_exists($grande)) {
                unlink($grande);
            }
            copy($objImagemG->imagepath . $map . ".grande.png", $grande);
            copy($objImagemM->imagepath . $map . ".mini.png", $mini);
        }
    }
}
Esempio n. 7
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));
            }
        }
    }
}
Esempio n. 8
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);
}