Exemple #1
0
function redesenhaMapa()
{
    global $map_file, $tipoimagem, $cp, $postgis_mapa, $utilizacgi, $locmapserv, $interface, $mapexten;
    substituiCon($map_file, $postgis_mapa);
    if ($tipoimagem != "nenhum" && $tipoimagem != "") {
        $utilizacgi = "nao";
    }
    if (connection_aborted()) {
        exit;
    }
    if ($interface == "googleearth" && $mapexten != "") {
        include_once dirname(__FILE__) . "/../classesphp/classe_navegacao.php";
        $m = new Navegacao($map_file);
        $m->mudaExtensao($mapexten);
        $m->salva();
    }
    include_once dirname(__FILE__) . "/../classesphp/classe_mapa.php";
    $m = new Mapa($map_file);
    $par = $m->parametrosTemas();
    //
    //na interface googlemaps não é necessário gerar a imagem
    //
    $e = $m->mapa->extent;
    $ext = $e->minx . " " . $e->miny . " " . $e->maxx . " " . $e->maxy;
    $res["mapimagem"] = "";
    $res["mapexten"] = $ext;
    $res["mapres"] = "";
    $res["erro"] = "";
    $res["mapscale"] = "";
    $res["pixelsize"] = "";
    $res["mapimagem"] = "";
    $res["w"] = $m->mapa->width;
    $res["h"] = $m->mapa->height;
    $res["mappath"] = "";
    $res["mapurl"] = "";
    $res["mensagens"] = $m->pegaMensagens();
    $res["tempo"] = microtime(1) - $tempo;
    restauraCon($map_file, $postgis_mapa);
    ob_clean();
    if ($par == "") {
        $retorno = "erro";
    } else {
        $retorno = array("variaveis" => $res, "temas" => $par);
    }
    cpjson($retorno);
}
Exemple #2
0
function iniciaMapa()
{
    global $googleApiKey, $i3geoPermiteLogin, $dir_tmp, $logExec, $postgis_mapa, $statusFerramentas, $saikuUrl, $emailInstituicao, $openid, $interfacePadrao, $mensagemInicia, $kmlurl, $tituloInstituicao, $tempo, $navegadoresLocais, $locaplic, $embedLegenda, $map_file, $mapext, $w, $h, $R_path, $locmapserv, $utilizacgi, $expoeMapfile, $interface;
    //
    //verifica se algum tema e restrito a determinado usuario
    //as funcoes de validacao encontram-se em funcoes_gerais.php
    //
    if (!function_exists("validaAcessoTemas")) {
        include_once "funcoes_gerais.php";
    }
    validaAcessoTemas($map_file);
    if ($dir_tmp != "" && isset($logExec) && $logExec["init"] == true) {
        i3GeoLog("prog: iniciaMapa interface: {$interface}", $dir_tmp);
    }
    if (!isset($kmlurl)) {
        $kmlurl = "";
    }
    error_reporting(0);
    if (!isset($interface)) {
        $interface = "";
    }
    if ($interface == "openlayers") {
        $m = ms_newMapObj($map_file);
        $e = $m->extent;
        $ext = $e->minx . " " . $e->miny . " " . $e->maxx . " " . $e->maxy;
        $c = $m->numlayers;
        for ($i = 0; $i < $c; ++$i) {
            $layer = $m->getlayer($i);
            if ($layer->status == 2) {
                $layer->setmetadata("olstatus", "DEFAULT");
            } else {
                $layer->setmetadata("olstatus", "OFF");
            }
            $layer->setmetadata("olopacity", $layer->opacity);
        }
        $m->save($map_file);
    }
    if ($interface == "googlemaps" || $interface == "googleearth") {
        $m = ms_newMapObj($map_file);
        $e = $m->extent;
        $ext = $e->minx . " " . $e->miny . " " . $e->maxx . " " . $e->maxy;
        if ($interface == "googlemaps") {
            $m->setProjection("+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m");
        }
        $c = $m->numlayers;
        for ($i = 0; $i < $c; ++$i) {
            $layer = $m->getlayer($i);
            if ($layer->status == 2) {
                $layer->setmetadata("gmstatus", "DEFAULT");
            } else {
                $layer->setmetadata("gmstatus", "OFF");
            }
            $layer->setmetadata("gmopacity", $layer->opacity);
            if ($layer->name == "mundo" || $layer->name == "estados") {
                $layer->set("status", MS_OFF);
            }
            if ($layer->type == MS_LAYER_POLYGON || $layer->type == MS_LAYER_RASTER) {
                if ($layer->opacity == "" || $layer->opacity == 100) {
                    $layer->set("opacity", 50);
                }
            }
            if ($layer->name == "rosadosventos" || $layer->name == "copyright") {
                $layer->set("status", MS_DELETE);
            }
        }
        $temp = $m->scalebar;
        $temp->set("status", MS_OFF);
        $c = $m->imagecolor;
        $c->setrgb(255, 255, 255);
        if ($interface == "googleearth") {
            $m->selectOutputFormat("jpeg");
            $of = $m->outputformat;
            $of->set("driver", "AGG/PNG");
        } else {
            $of = $m->outputformat;
        }
        $of->set("imagemode", MS_IMAGEMODE_RGBA);
        $of->set("transparent", MS_ON);
        $m->save($map_file);
    }
    $protocolo = explode("/", $_SERVER['SERVER_PROTOCOL']);
    $protocolo = $protocolo[0];
    $protocolo = strtolower($protocolo) . '://' . $_SERVER['SERVER_NAME'] . ":" . $_SERVER['SERVER_PORT'];
    $urli3geo = str_replace("/classesphp/mapa_controle.php", "", $protocolo . $_SERVER["PHP_SELF"]);
    //altera o tamanho do query map para ficar igual ao do mapa
    include_once "classe_mapa.php";
    error_reporting(0);
    if (!function_exists("sobeAnno")) {
        include_once "funcoes_gerais.php";
    }
    sobeAnno($map_file);
    $m = new Mapa($map_file);
    if (isset($w)) {
        $m->mudaQS($w, $h);
        $m = new Mapa($map_file);
        $m->mapa->setsize($w, $h);
    }
    error_reporting(0);
    //
    //verifica se a legenda deve ser embebida no mapa
    //
    $legenda = $m->mapa->legend;
    $embedLegenda == "sim" ? $legenda->set("status", MS_EMBED) : $legenda->set("status", MS_OFF);
    //
    //salva as altera&ccedil;&otilde;es feitas
    //
    $m->mapa->setmetadata("ows_enable_request", "*");
    $m->salva();
    //prepara a legenda para incluir no mapa, preenchendo os nomes das classes em branco
    if (strtolower($embedLegenda) == "sim") {
        foreach ($m->layers as $l) {
            if ($l->data != "" && strtoupper($l->getmetadata("escondido")) != "SIM" && strtolower($l->getmetadata("tema")) != "nao") {
                if ($l->numclasses > 0) {
                    $classe = $l->getclass(0);
                    if ($classe->name == "" || $classe->name == " ") {
                        $classe->set("name", $l->getmetadata("tema"));
                    }
                }
            }
        }
    }
    //
    //cuidado ao mexer aqui
    //o mapa precisa ser salvo para registrar a extens&atilde;o geogr&aacute;fica
    //
    //$imgo = $m->mapa->draw();
    $imgo = $m->mapa->prepareImage();
    $m->salva($map_file);
    //$e = $m->mapa->extent;
    //$ext = ($e->minx)." ".($e->miny)." ".($e->maxx)." ".($e->maxy);
    $escalaMapa = $m->mapa->scaledenom;
    $celula = $m->mapa->cellsize;
    //
    //pega os parametros de cada tema
    //
    $qyfile = str_replace(".map", ".qy", $map_file);
    $arqsel = file_exists($qyfile) ? true : false;
    $m = new Mapa($map_file, $locaplic);
    $temas = $m->parametrosTemas();
    //$m->ligaDesligaTemas("",implode(",",$m->nomes),"nao");
    //
    //&eacute; necess&aacute;rio um mapa para compor o fundo apenas com o imagecolor e sem nenhuma outra camada
    //utilizado em algumas interfaces
    //
    /*
    $nomefundo = str_replace(".map","fundo.map",$map_file);
    $m->mapa->save($nomefundo);
    $mf = ms_newMapObj($nomefundo);
    $numlayers = $mf->numlayers;
    for($i = 0;$i < $numlayers;++$i)
    {
    	$l = $mf->getLayer($i);
    	$l->set("status",MS_DELETE);
    }
    $of = $mf->outputformat;
    $of->set("driver","GD/PNG");
    $versao = versao();
    $temp = $mf->scalebar;
    $temp->set("status",MS_OFF);
    $mf->save($nomefundo);
    */
    $versao = versao();
    $temp = $m->mapa->scalebar;
    $temp->set("status", MS_OFF);
    $of = $m->mapa->outputformat;
    $of->set("imagemode", MS_IMAGEMODE_RGBA);
    $of->setOption("QUANTIZE_FORCE", "OFF");
    $of->set("driver", "AGG/PNG");
    $m->mapa->setmetadata("interface", $interface);
    $m->salva();
    $nomes = nomeRandomico(12);
    if ($imgo->imagepath == "") {
        echo "Erro IMAGEPATH vazio";
        exit;
    }
    $nomer = $imgo->imagepath . "mapa" . $nomes . ".png";
    //$imgo->saveImage($nomer);
    if (isset($utilizacgi) && strtolower($utilizacgi) == "sim") {
        $nomer = $locmapserv . "?map=" . $map_file . "&mode=map";
    } else {
        $nomer = $imgo->imageurl . basename($nomer);
    }
    //pega a cor de fundo do mapa
    $c = $m->mapa->imagecolor;
    $cordefundo = $c->red . "," . $c->green . "," . $c->blue;
    //pega o texto de copyright
    $copyright = "";
    $lc = $m->mapa->getlayerbyname("copyright");
    if ($lc != "" && $lc->status == MS_DEFAULT) {
        if ($versao["principal"] >= 6) {
            $shape = $lc->getShape(new resultObj(0));
            $copyright = $shape->text;
        } else {
            $shape = $lc->getfeature(0, -1);
            $copyright = $shape->text;
        }
    }
    $res["editor"] = "nao";
    //
    //papeis do usuario se estiver logado
    //
    $res["papeis"] = array();
    $logado = "nao";
    $res["i3geoPermiteLogin"] = "******";
    if (isset($i3geoPermiteLogin) && $i3geoPermiteLogin == false) {
        $_COOKIE = array();
        $res["i3geoPermiteLogin"] = "******";
    }
    if (!empty($_COOKIE["i3geocodigologin"])) {
        session_write_close();
        session_name("i3GeoLogin");
        session_id($_COOKIE["i3geocodigologin"]);
        session_start();
        //var_dump($_SESSION);exit;
        $logado = "sim";
        if (!empty($_SESSION["usuario"]) && $_SESSION["usuario"] == $_COOKIE["i3geousuariologin"]) {
            $res["papeis"] = $_SESSION["papeis"];
        } else {
            $logado = "nao";
        }
        //verifica se o usuario logado pode ver as opcoes de edicao do sistema de admin dentro do mapa
        foreach ($res["papeis"] as $p) {
            if ($p < 3) {
                $res["editor"] = "sim";
            }
        }
    }
    //
    $res["mapexten"] = $ext;
    $res["mapscale"] = $escalaMapa;
    $res["mapres"] = $m->mapa->resolution;
    $res["pixelsize"] = $celula;
    //TODO depreciar na documentacao e ms_configura
    /*
    if ((isset($expoeMapfile)) && ($expoeMapfile == "nao"))
    {$res["mapfile"] = "";}
    else
    {$res["mapfile"] = $map_file;}
    */
    $res["mapfile"] = "";
    $res["cgi"] = "";
    //$locmapserv;
    $res["extentTotal"] = $ext;
    $res["mapimagem"] = "";
    //$nomer;
    $geoip = "nao";
    if (file_exists($locaplic . "/pacotes/geoip") && file_exists($locaplic . "/pacotes/geoip/GeoLiteCity.dat")) {
        $geoip = "sim";
    }
    $res["geoip"] = $geoip;
    $res["listavisual"] = file_exists($locaplic . "/imagens/visual") ? implode(",", listaDiretorios($locaplic . "/imagens/visual")) : "";
    //TODO depreciar na documentacao
    $res["utilizacgi"] = "nao";
    //$utilizacgi;
    $res["versaoms"] = $versao["principal"];
    $res["versaomscompleta"] = $versao["completa"];
    $res["mensagens"] = $m->pegaMensagens();
    $res["r"] = isset($R_path) ? "sim" : "nao";
    $res["extentref"] = "";
    $res["kmlurl"] = $kmlurl;
    $res["mensageminicia"] = $mensagemInicia;
    $res["interfacePadrao"] = $interfacePadrao;
    $res["embedLegenda"] = $embedLegenda;
    $res["w"] = $w;
    $res["h"] = $h;
    $res["titulo"] = $tituloInstituicao;
    $res["tempo"] = microtime(1) - $tempo;
    $res["embedLegenda"] = $embedLegenda;
    $res["erro"] = '';
    $res["mappath"] = "";
    //$imgo->imagepath;
    $res["mapurl"] = "";
    //$imgo->imageurl;
    $res["navegacaoDir"] = $navegadoresLocais;
    if ($openid == true) {
        $res["autenticadoopenid"] = "sim";
    } else {
        $res["autenticadoopenid"] = "nao";
    }
    $res["emailInstituicao"] = $emailInstituicao;
    $res["cordefundo"] = $cordefundo;
    $res["copyright"] = $copyright;
    $res["logado"] = $logado;
    $res["saikuUrl"] = $saikuUrl;
    $res["statusFerramentas"] = $statusFerramentas;
    $res["googleApiKey"] = $googleApiKey;
    //parametros de inicializacao armazenados com o mapa quando o usuario utiliza a opcao de salvar mapa no nbanco de dados
    $customizacoesinit = $m->mapa->getmetadata("CUSTOMIZACOESINIT");
    $res["editavel"] = $m->mapa->getmetadata("EDITAVEL");
    $m->mapa->setmetadata("CUSTOMIZACOESINIT", "");
    $m->salva();
    restauraCon($map_file, $postgis_mapa);
    copy($map_file, str_replace(".map", "reinc.map", $map_file));
    copy($map_file, str_replace(".map", "seguranca.map", $map_file));
    ob_clean();
    cpjson(array("variaveis" => $res, "temas" => $temas, "customizacoesinit" => $customizacoesinit));
}