Ejemplo n.º 1
0
 }
 //
 //lista de ferramentas
 //lista os nomes de metadados que contem os parametros das
 //ferramentas customizaveis e que seraco incluidas na propriedade do layer
 //
 $listaFerramentas = array("tme", "storymap", "animagif");
 $dadosTemas = pegaDadosAdminKey("SELECT codigo_tema,link_tema FROM __esq__i3geoadmin_temas WHERE codigo_tema IN('" . implode($temas, ',') . "')", "__esq__");
 foreach ($temas as $tema) {
     //
     //utilzado para obter os parametros de ferramentas especificas indicadas nos metadados do LAYER
     //
     $ferramentas = array();
     if (file_exists($locaplic . "/temas/" . $tema . ".gvp")) {
         include_once $locaplic . "/pacotes/gvsig/gvsig2mapfile/class.gvsig2mapfile.php";
         $gm = new gvsig2mapfile($locaplic . "/temas/" . $tema . ".gvp");
         $gvsigview = $gm->getViewsNames();
         $objOpenLayers[] = 'new OpenLayers.Layer.WMS( "' . $gvsigview[0] . '", "' . $servidor . '?' . $nocache . 'tema=' . $tema . '&DESLIGACACHE=' . $DESLIGACACHE . '&",{layers:"' . $tema . '",transparent: "true", format: "image/png"},{singleTile:false,visibility:true,isBaseLayer:false, ferramentas :' . $ferramentas . ')';
     } else {
         $nomeMap = "";
         if (file_exists($locaplic . "/temas/" . $tema . ".map")) {
             $nomeMap = $locaplic . "/temas/" . $tema . ".map";
         } else {
             if (file_exists($tema)) {
                 $nomeMap = $tema;
             } else {
                 // acontece caso o mapfile tenha sido gerado na pasta
                 // temporaria por algum sistema
                 if (file_exists($dir_tmp . "/" . $tema . ".map")) {
                     $nomeMap = $dir_tmp . "/" . $tema . ".map";
                 }
Ejemplo n.º 2
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;
 }
Ejemplo n.º 3
0
function downloadTema2($map_file, $tema, $locaplic, $dir_tmp, $postgis_mapa)
{
    ini_set("max_execution_time", "1800");
    ini_set('memory_limit', '5000M');
    $temas = array();
    if (file_exists($locaplic . "/ms_configura.php")) {
        include $locaplic . "/ms_configura.php";
    } else {
        include dirname(__FILE__) . "/../ms_configura.php";
    }
    //para zipar o shapefile
    include dirname(__FILE__) . "/../pacotes/kmlmapserver/classes/zip.class.php";
    $versao = versao();
    $versao = $versao["principal"];
    $dataArquivos = array();
    //
    //cria o arquivo mapfile, caso ele n&atilde;o exista, que servir&aacute; de base para obten&ccedil;&atilde;o dos dados
    //
    $nomeRand = true;
    $projecao = pegaProjecaoDefault();
    if ($map_file == "" || !@ms_newMapObj($map_file)) {
        //a funcao foi chamada do aplicativo datadownload
        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;
            }
        }
        $map_tmp = ms_newMapObj($base);
        $map_file = $dir_tmp . "/downloadTema2" . nomerandomico(20) . ".map";
        $map_tmp->setProjection($projecao["proj4"]);
        $map_tmp->save($map_file);
        $nomeRand = false;
    }
    //
    //verifica se o tema existe no mapfile
    //se n&atilde;o existir, tenta inserir com base no mapfile existente no diret&oacute;rio temas
    //o tema pode existir se a fun&ccedil;&atilde;o estiver sendo chamada da &aacute;rvore de temas de um mapa j&aacute; aberto
    //
    $temasdir = $locaplic . "/temas";
    $map = ms_newMapObj($map_file);
    $rectextent = $map->extent;
    $extensao = ".map";
    if (file_exists($locaplic . "/temas/" . $tema . ".gvp")) {
        $extensao = ".gvp";
    }
    if ($extensao == ".map") {
        //
        //problema aqui
        //$tema pode ser diferente do nome do mapfile
        //
        $teste = @$map->getlayerbyname($tema);
        //caso o usuario tenha usado caixa alta no nome do layer
        if ($teste == "") {
            $teste = @$map->getlayerbyname(strtoupper($tema));
        }
        //se o layer n&atilde;o existir no mapfile, pega da pasta i3geo/temas e adiciona em $map
        if ($teste == "") {
            //tema pode ser o nome de um arquivo mapfile
            if (file_exists($tema . ".map")) {
                $maptemp = ms_newMapObj($tema . ".map");
                $tema = basename($tema);
            } else {
                $maptemp = ms_newMapObj($temasdir . "/" . $tema . ".map");
            }
            $numlayers = $maptemp->numlayers;
            for ($i = 0; $i < $numlayers; ++$i) {
                $ll = $maptemp->getlayer($i);
                $permite = $ll->getmetadata("permitedownload");
                if ($permite != "nao") {
                    ms_newLayerObj($map, $ll);
                }
            }
            $teste = @$map->getlayerbyname($tema);
            if ($teste == "") {
                $ll = $maptemp->getlayer(0);
                $permite = $ll->getmetadata("permitedownload");
                if ($permite != "nao") {
                    ms_newLayerObj($map, $ll);
                    $tema = $ll->name;
                }
            }
        } else {
            //remove o metadata com um nome de arquivo opcional, pois a fun&ccedil;&atilde;o de download pode estar sendo executada da &aacute;rvore de camadas
            $teste = $map->getlayerbyname($tema);
            $teste->setmetadata("arquivodownload", "");
        }
    } else {
        include_once $locaplic . "/pacotes/gvsig/gvsig2mapfile/class.gvsig2mapfile.php";
        $gm = new gvsig2mapfile($locaplic . "/temas/" . $tema . ".gvp");
        $gvsigview = $gm->getViewsNames();
        foreach ($gvsigview as $gv) {
            $dataView = $gm->getViewData($gvsigview);
            $map = $gm->addLayers($map, $gvsigview, $dataView["layerNames"]);
            $temas = array_merge($temas, $gm->nomesLayersAdicionados);
        }
    }
    //
    //salva o mapfile com um outro nome para evitar que o mapa atual, se estiver aberto, seja modificado
    //
    //verifica se tem query e copia o arquivo
    $qyfile = str_replace(".map", "_qy.map", $map_file);
    $nr = nomerandomico(5);
    $map_file = str_replace(".map", $nr . "tmp.map", $map_file);
    if (file_exists($qyfile)) {
        $nqyfile = str_replace(".map", "_qy.map", $map_file);
        $nqyfile = str_replace("_qy.map", "", $nqyfile) . "_qy.map";
        copy($qyfile, $nqyfile);
    }
    $map->save($map_file);
    //$map_file agora contem os LAYERS necess&aacute;rios
    $map = ms_newMapObj($map_file);
    substituiConObj($map, $postgis_mapa);
    $nameMapfile = $map->name;
    //
    //verifica se existe mais de um tema (grupo) montando o array com os temas
    //os grupos podem ter o nome do layer em GROUP ao inv&eacute;s de NAME
    //
    if ($extensao == ".map") {
        $multilayer = 0;
        $grupos = $map->getAllGroupNames();
        foreach ($grupos as $grupo) {
            if ($grupo == $tema) {
                $multilayer = 1;
            }
        }
        if ($multilayer == 1) {
            $temasnx = $map->getAllLayerNames();
            foreach ($temasnx as $l) {
                $gl = $map->getlayerbyname($l);
                $g = $gl->group;
                if ($g == $tema || $l == $tema) {
                    $temas[] = $l;
                }
            }
        }
        if ($multilayer == 0) {
            $temas[] = $tema;
        }
    }
    //$temas agora &eacute; um array com os NAMEs dos LAYERS que ser&atilde;o baixados
    $radtmp = dirname($dir_tmp);
    $ziper = new zipfile();
    foreach ($temas as $tema) {
        $l = $map->getlayerbyname($tema);
        $novonomelayer = $tema;
        //usa o NAME do mapfile para nao gerar arquivos com o mesmo nome em instalacoes multiplas do i3geo
        $nomeshp = $dir_tmp . "/" . $nameMapfile . "_" . $novonomelayer;
        if (file_exists($nomeshp . ".dbf")) {
            //
            //verifica se o arquivo est&aacute; vazio ou n&atilde;o
            //se estiver, apaga o arquivo
            //
            $verificaDBF = verificaDBF($nomeshp . ".dbf");
            if ($verificaDBF == false) {
                unlink($nomeshp . ".dbf");
                unlink($nomeshp . ".shp");
                unlink($nomeshp . ".shx");
                unlink($nomeshp . ".prj");
                unlink($nomeshp . ".zip");
            }
        }
        //
        //se existir um arquivo j&aacute; pronto, definido no metadata arquivodownload, ir&aacute; ser utilizado
        //
        $meta = $l->getmetadata("arquivodownload");
        if ($meta != "") {
            //
            //se o arquivo n&atilde;o tiver sido copiado
            //
            //evita que se tente copiar qualquer arquivo
            $meta = str_replace(".zip", "", $meta) . ".zip";
            $nomecopia = $dir_tmp . "/" . $nameMapfile . "_" . basename($meta);
            //para evitar que tente copiar um arquivo mapfile
            $nomecopia = str_replace(".map", "", $nomecopia);
            $nomecopia = str_replace(".zip", "zip", $nomecopia) . ".zip";
            if (file_exists($meta)) {
                if (!file_exists($nomecopia)) {
                    copy($meta, $nomecopia);
                }
            }
            $resultado[] = basename($dir_tmp) . "/" . basename($nomecopia);
        } else {
            //se n&atilde;o existir arquivo definido
            $dados = $l->data;
            //
            //se for imagem, copia o arquivo
            //
            if ($l->type == MS_LAYER_RASTER) {
                if (file_exists($dados)) {
                    $dir = dirname($dados);
                    $arq = explode(".", basename($dados));
                    $nomecopia = $dir_tmp . "/" . $nameMapfile . "_" . $arq[0];
                    $exts = array("jpg", "jpw", "tif", "tifw", "tfw", "png", "pngw", "jpgw", "wld", "img");
                    foreach ($exts as $ext) {
                        $copia = $nomecopia . "." . $ext;
                        if (!file_exists($copia) && file_exists($dir . "/" . $arq[0] . "." . $ext)) {
                            copy($dir . "/" . $arq[0] . "." . $ext, $copia);
                        }
                        if (file_exists($copia)) {
                            $resultado[] = basename($dir_tmp) . "/" . basename($copia);
                        }
                    }
                } else {
                    return "erro";
                }
            } else {
                //se for vetorial, extrai o arquivo
                //
                //verifica se existe selecao, caso contrario, faz a selecao baseada na extensao
                //do mapfile
                //
                include dirname(__FILE__) . "/../classesphp/classe_selecao.php";
                $sel = new Selecao($map_file, $tema);
                //carrega a query para ver se o layer possui selecao ou nao
                $numSel = 0;
                $nomeRand = true;
                if (file_exists($sel->qyfile)) {
                    $map->loadquery($sel->qyfile);
                    $numSel = $l->getNumresults();
                    $nomeshp = criaSHP($tema, $map_file, $locaplic, $dir_tmp, $nomeRand, $projecao["prj"]);
                }
                //
                //se nao existir selecao seleciona por box
                //o box vem do mapfile original
                //
                if (!file_exists($sel->qyfile)) {
                    $box = $rectextent->minx . " " . $rectextent->miny . " " . $rectextent->maxx . " " . $rectextent->maxy;
                    $shapesSel = $sel->selecaoBOX("novo", $box, true);
                    //reaproveita arquivo anterior
                    $nomeRand = false;
                    $nomeshp = criaSHP($tema, $map_file, $locaplic, $dir_tmp, $nomeRand, $projecao["prj"], true, $shapesSel);
                }
                //remove o arquivo de selecao se ele foi criado apenas para pegar todos os elementos
                if ($nomeRand == false) {
                    $sel->selecaoLimpa();
                }
                if ($nomeshp == false) {
                    return array("arquivos" => "<span style=color:red >Ocorreu um erro, tente novamente", "nreg" => 0);
                }
                $pre = str_replace($radtmp . "/", "", $nomeshp);
                $resultado[] = $pre . ".shp";
                $dataArquivos[] = date("F d Y H:i:s.", filemtime($nomeshp . ".shp"));
                $resultado[] = $pre . ".shx";
                $dataArquivos[] = date("F d Y H:i:s.", filemtime($nomeshp . ".shx"));
                $resultado[] = $pre . ".dbf";
                $dataArquivos[] = date("F d Y H:i:s.", filemtime($nomeshp . ".dbf"));
                $resultado[] = $pre . ".prj";
                $dataArquivos[] = date("F d Y H:i:s.", filemtime($nomeshp . ".prj"));
                //zipa o arquivo
                $zip = basename($pre);
                if (!file_exists($pre . ".zip")) {
                    $ziper->addFile(file_get_contents($nomeshp . ".shp"), $zip . ".shp");
                    $ziper->addFile(file_get_contents($nomeshp . ".shx"), $zip . ".shx");
                    $ziper->addFile(file_get_contents($nomeshp . ".dbf"), $zip . ".dbf");
                    $ziper->addFile(file_get_contents($nomeshp . ".prj"), $zip . ".prj");
                    $fp = fopen($nomeshp . ".zip", "wb");
                    fwrite($fp, $ziper->file());
                    fclose($fp);
                }
                $resultado[] = $pre . ".zip";
                $dataArquivos[] = date("F d Y H:i:s.", filemtime($nomeshp . ".zip"));
            }
        }
    }
    $nreg = "";
    if (count($resultado) == 3) {
        $arq = $radtmp . "/" . $resultado[2];
        if (function_exists("dbase_open")) {
            $db = dbase_open($arq, 0);
            if ($db) {
                $nreg = dbase_numrecords($db);
            }
        } else {
            $db = xbase_open($arq, 0);
            if ($db) {
                $nreg = xbase_numrecords($db);
            }
        }
    }
    //
    //gera um mapfile para download
    //
    $nomemapfileurl = "";
    return array("tema" => $tema, "mapfile" => "", "mapfileurl" => "", "arquivos" => implode(",", $resultado), "nreg" => $nreg, "datas" => $dataArquivos, "shape-zip" => $nomeshp . ".zip");
}
Ejemplo n.º 4
0
function incluiMapaGvsig($gvsiggvp, $gvsigview = "")
{
    global $mapn, $locaplic;
    include_once $locaplic . "/pacotes/gvsig/gvsig2mapfile/class.gvsig2mapfile.php";
    $gm = new gvsig2mapfile($gvsiggvp);
    if (empty($gvsigview)) {
        $gvsigview = $gm->getViewsNames();
        //$gvsigview = $gvsigview[0];
    } else {
        $gvsigview = str_replace(" ", ",", $gvsigview);
        $gvsigview = explode(",", $gvsigview);
    }
    $numlayers = $mapn->numlayers;
    for ($i = 0; $i < $numlayers; $i++) {
        $layer = $mapn->getlayer($i);
        $layer->set("status", MS_DELETE);
    }
    foreach ($gvsigview as $v) {
        if ($v != "") {
            $dataView = $gm->getViewData($v);
            $mapn = $gm->addLayers($mapn, $gvsigview, $dataView["layerNames"]);
        }
    }
    $next = $dataView["extent"];
    $ext = $mapn->extent;
    $ext->setextent($next[0], $next[1], $next[2], $next[3]);
}
Ejemplo n.º 5
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);
        }
    }
}
Ejemplo n.º 6
0
<?php

exit;
include_once "class.gvsig2mapfile.php";
error_reporting(0);
$gm = new gvsig2mapfile("C:\\ms4w\\Apache\\htdocs\\i3geo\\pacotes\\gvsig\\gvsig2mapfile\\projetoteste.gvp");
echo "<pre>Teste<br>";
$nomes = $gm->getViewsNames();
$view = $gm->getViewByName($nomes[0]);
$dataView = $gm->getViewData($nomes[0]);
echo "Extens&atilde;o do mapa: " . implode(",", $dataView["extent"]) . "\n";
echo "Proje&ccedil;&atilde;o do mapa: " . $dataView["proj"] . "\n";
echo "Camadas: " . implode(",", $dataView["layerNames"]) . "\n";
foreach ($dataView["layerNames"] as $lname) {
    var_dump($gm->getLayerData($nomes[0], $lname));
}
//localhost/i3geo/ms_criamapa.php?gvsiggvp=C:\ms4w\Apache\htdocs\i3geo\pacotes\gvsig\gvsig2mapfile\projetoteste.gvp&gvsigview=teste 1&temasa=
Ejemplo 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));
            }
        }
    }
}
Ejemplo n.º 8
0
									END
									END
									FEATURE POINTS 100 100 END
									TEXT "OGC denied" END
									FEATURE POINTS 100 120 END
									TEXT "' . $l->name . '" END
									END
									');
                            ms_newLayerObj($oMap, $l);
                        }
                    }
                }
            }
            if ($extensao == ".gvp") {
                include_once $locaplic . "/pacotes/gvsig/gvsig2mapfile/class.gvsig2mapfile.php";
                $gm = new gvsig2mapfile($locaplic . "/temas/" . $tx . ".gvp");
                $gvsigview = $gm->getViewsNames();
                foreach ($gvsigview as $gv) {
                    $dataView = $gm->getViewData($gv);
                    $oMap = $gm->addLayers($oMap, $gv, $dataView["layerNames"]);
                }
                $numlayers = $oMap->numlayers;
                $lys = array();
                //$layers[] = "default";
                for ($i = 0; $i < $numlayers; $i++) {
                    $l = $oMap->getlayer($i);
                    $l->setmetadata("gml_include_items", "all");
                    $l->set("dump", MS_TRUE);
                    $l->setmetadata("WMS_INCLUDE_ITEMS", "all");
                    $l->setmetadata("WFS_INCLUDE_ITEMS", "all");
                    $l->setmetadata("ows_srs", $listaepsg);
Ejemplo n.º 9
0
 $upl = $_FILES['i3GEOuploadfile'];
 verificaNome($upl['name']);
 //sobe arquivo
 $Arquivo = $upl['tmp_name'];
 $Arquivon = $dir_tmp . "/" . $upl['name'];
 $status = move_uploaded_file($Arquivo, $Arquivon);
 if ($status != 1) {
     ob_clean();
     echo "Ocorreu um erro no envio do arquivo";
     exit;
 }
 if ($status == 1) {
     //echo $Arquivon;
     $nomefim = str_replace(".gvp", ".map", $Arquivon);
     echo "#arquivo final: {$nomefim} <br>";
     $gm = new gvsig2mapfile($Arquivon);
     $numlayers = $mapn->numlayers;
     for ($i = 0; $i < $numlayers; $i++) {
         $layer = $mapn->getlayer($i);
         $layer->set("status", MS_DELETE);
     }
     $views = $gm->getViewsNames();
     foreach ($views as $v) {
         echo "#vista: " . $v;
         $dataView = $gm->getViewData($v);
         $layernames = $dataView["layerNames"];
         echo "<br>#layers: " . implode(", ", $layernames) . "<br>";
         $mapn = $gm->addLayers($mapn, $v, $layernames);
         $mapn->save($nomefim);
     }
     $next = $dataView["extent"];