_filter= * * Exemplo de filtro * * http://localhost/i3geo/ms_criamapa.php?temasa=_lbiomashp&map_layer__lbiomashp_filter=(('[CD_LEGENDA]'='CAATINGA'))&temasa=_lbiomashp * * no caso de camadas Postgis basta usar map_layer__lbiomashp_filter=cd_legenda='CAATINGA' * * largura - largura em pixel do mapa * * altura - altura em pixels do mapa * * DESLIGACACHE - sim|nao forca o desligamento do cache em todos os layers */ if (isset($_GET["ajuda"])) { echo "
";
    echo "
Parâmetros:

base - arquivo mapfile que servirá de base para a criação do mapa. Por default, são utilizados os arquivos existentes em i3geo/aplicmap (geral1windows, geral1,...)
	Essa variável pode ser definida em ms_configura também. Se não estiver definida em nenhum lugar, o i3Geo tentará descobrir o arquivo adequado a ser utilizado. Você pode utilizar essa opção para abrir um mapa com as camadas que você quiser, mas para evitar redundâncias, prefira o uso de &temasa

temasa - lista, separada por espaços, com os nomes dos arquivos map ou gvsig que serão adicionados ao mapa. Se o arquivo não estiver no diretório i3geo/temas, o nome deve incluir o caminho completo no servidor. O arquivo pode conter mais de um layer pois todos os existentes serão adicionados ao mapa. Por default, todos os layers encontrados nos mapfiles são adicionados ao mapa com o status de desenho em OFF.

layers - lista, separada por espaços, com os nomes dos layers que serão ligados. A lista deve conter os nomes dos layers e não os nomes dos mapfiles acrescentados ao mapa. Por exemplo, ao adicionar com 'temasa' um mapfile chamado 'transporte' que contenha os layers 'estradas' e 'ferrovias' os dois layers serão adicionados ao mapa. Para que esses dois layers fiquem visíveis no mapa deve-se utilizar &layers=estradas ferrovias.

desligar - lista com os nomes dos temas que serão forçados a inicializar desligados, ou seja, com STATUS OFF

mapext - extensao geografica que será utilizada. Por padrão, a extensão geográfica é definida para abranger o Brasil todo. Para alterar o padrão deve-se utilizar o parâmetro mapext para especificar a nova abrangência. Essa abrangência deve ser definida em coordenadas no formato décimos de grau e na projeção geográfica. Exemplo: &mapext=-54 -30 -50 -12. Observe que a ordem dos valores são xmin ymin xmax ymax

interface - nome da interface que será utilizada para abrir o mapa. As interfaces são arquivos HTML que podem estar no diretório aplicmap. Por default, utiliza-se o geral.htm. Vc pode copiar esse html e alterá-lo para customizar o mapa. Para chamar o html customizado, utilize ms_criamapa.php?interface=meumapa.htm

perfil - perfil utilizado para restringir os menus de temas. ms_criamapa.php?perfil=usuário1

caminho - caminho relativo que indica o local onde a interface do mapa esta localizada.

pontos - lista de coordenadas x e y que serão adicionadas como pontos no mapa.

nometemapontos - nome do tema de pontos

linhas - lista de coordenadas x e y que serão adicionadas como linhas no mapa. As coordenadas de linhas diferentes devem ser separadas por ',', por exemplo: -54 -12 -50 -12,-50 -1 -50 -2 -50 -3

nometemalinhas - nome do tema de linhas

poligonos - lista de coordenadas x e y que serão adicionadas como polígonos no mapa. As coordenadas dos vértices de polígonos diferentes devem ser separadas por ','.

nometemapoligonos - nome do tema de polígonos

simbolo - nome do símbolo que será utilizado para desenhar os elementos inseridos (veja arquivo de símbolos em i3geo/symbols)

corsimbolo - cor do símbolo definido em RGB separados por espaço ou vírgula

tamanhosimbolo - tamanho do símbolo em pixels

wkt - insere elementos no mapa com coordenadas definidas em wkt

nometemawkt - nome do tema em wkt

idioma - idioma da interface (veja os idiomas disponíveis em classe_idioma.js)

kmlurl - url de um arquivo KML que será incluido no mapa. Válido apenas na interface google maps

url_wms - endereço de um WMS (será incluido como uma camada no mapa)

layer_wms - nome do layer

style_wms - estilo do layer

nome_wms - nome da camada (titulo)

srs_wms - código da projeção

image_wms - tipo de imagem disponível

versao_wms - Versão do WMS (necessário quando da inclusão de uma camada WMS diretamente pela URL)

restauramapa - id do mapa armazenado no sistema de administracao e que será restaurado para ser aberto novamente

filtros - filtros podem ser adicionados incluindo o parametro da seguinte forma: &map_layer__filter=

  Exemplo de filtro

  http://localhost/i3geo/ms_criamapa.php?layers=_lbiomashp&temasa=_lbiomashp&map_layer__lbiomashp_filter=(('[CD_LEGENDA]'='CAATINGA'))

  no caso de camadas Postgis basta usar map_layer__lbiomashp_filter=cd_legenda='CAATINGA'

 largura - largura em pixel do mapa

 altura - altura em pixels do mapa
	";
    exit();
}
// $_COOKIE = array();

//
// quando $funcao existe, é pq o ms_criamapa.php está
// sendo utilizado como um include em classesphp/mapa_controle.php
//

if (! isset($funcao)) {
    ob_end_clean();
    /*
     * Carrega as extensões PHP
     *
     * Carrega as extensões utilizadas no programa de inicialização.
     * A carga das extensões geralmente é necessária nas instalações windows (ms4w) ou quando as mesmas não são carregadas pela própria inicialização do PHP.
     */
    include_once (dirname(__FILE__) . "/classesphp/carrega_ext.php");
    /*
     * Include dos arquivos PHP.
     *
     * Inclui os programas php com funções utilizadas pelo ms_criamapa.php
     */
    include_once (dirname(__FILE__) . "/classesphp/sani_request.php");
    include_once (dirname(__FILE__) . "/classesphp/funcoes_gerais.php");
    if (! isset($_GET["interface"])) {
        $_GET["interface"] = "";
    }
    $interface = $_GET["interface"];
}
$parurl = array_merge($_GET, $_POST);
//
// $base pode vir do ms_configura ou da URL
// o ms_configura pode ter sido inserido antes
//
if (empty($base) && ! empty($parurl["base"])) {
    $base = $parurl["base"];
}

ms_ResetErrorList();
$metaestatids = @$parurl["metaestatids"];
$temasa = @$parurl["temasa"];
$layers = @$parurl["layers"];
$desligar = @$parurl["desligar"];
$mapext = @$parurl["mapext"];
$executa = ""; // $parurl["executa"];
$perfil = @$parurl["perfil"];
$caminho = @$parurl["caminho"];
$pontos = @$parurl["pontos"];
$nometemapontos = @$parurl["nometemapontos"];
$linhas = @$parurl["linhas"];
$nometemalinhas = @$parurl["nometemalinhas"];
$poligonos = @$parurl["poligonos"];
$nometemapoligonos = @$parurl["nometemapoligonos"];
$simbolo = @$parurl["simbolo"];
$corsimbolo = @$parurl["corsimbolo"];
$tamanhosimbolo = @$parurl["tamanhosimbolo"];
$wkt = @$parurl["wkt"];
$nometemawkt = @$parurl["nometemawkt"];
$idioma = @$parurl["idioma"];
$kmlurl = @$parurl["kmlurl"];
$url_wms = @$parurl["url_wms"];
$layer_wms = @$parurl["layer_wms"];
$style_wms = @$parurl["style_wms"];
$nome_wms = @$parurl["nome_wms"];
$srs_wms = @$parurl["srs_wms"];
$image_wms = @$parurl["image_wms"];
$versao_wms = @$parurl["versao_wms"];
$gvsigview = @$parurl["gvsigview"];
$restauramapa = @$parurl["restauramapa"];

$versao = versao();
$versao = $versao["principal"];

//
// a variável $base pode ser definida em ms_configura, mas a preferência é pela definição já existente
// por isso, $base é guardada em uma variável e retomada apos o include de ms_configura.php
// se restauramapa estiver definido, usa o mapfile guardado no banco de administracao como a base
//
if (! isset($dir_tmp)) {
    include_once (dirname(__FILE__) . "/ms_configura.php");
    if (! empty($parurl["base"])) {
        $base = $parurl["base"];
    }
    if (! empty($parurl["interface"])) {
        $interface = $parurl["interface"];
    }
}
if (isset($logExec) && $logExec["init"] == true) {
    i3GeoLog("prog: ms_criamapa url: " . implode("&", array_merge($_GET, $_POST)), $dir_tmp);
}
if (! empty($restauramapa)) {
    $base = restauraMapaAdmin($restauramapa, $dir_tmp);
    $m = ms_newMapObj($base);
    $w = $m->web;
    $w->set("imagepath", dirname($w->imagepath) . "/");
    $w->set("imageurl", dirname($w->imageurl) . "/");
    $m->save($base);
} else {
    if (isset($base)) {
        $tempBaseX = $base;
    }
    if (isset($tempBaseX) && $tempBaseX != "") {
        $base = $tempBaseX;
    }
}
// verifica se o usuario trocou a senha do master
if ($_SERVER['SERVER_NAME'] != "localhost" && ($i3geomaster[0]["usuario"] == "admin" && $i3geomaster[0]["senha"] == "admin")) {
    echo json_encode(array(
        "bloqueado" => "Bloqueado. ATENCAO!!! Acesso bloqueado: edite o arquivo i3geo/ms_configura.php e altere o login e senha da variavel i3geomaster"
    ));
    exit();
}
/*
 * Define o cookie para o idioma da interface
 */
if (isset($idioma) && $idioma != "") {
    setcookie("i3geolingua", $idioma);
}
/*
 * Cria os diretorios temporários que serão utilizados pelo i3geo para armazenar as imagens e outros dados.
 */
$diretorios = criaDirMapa($dir_tmp, $cachedir);
if (! $diretorios) {
    echo "

Não foi possível criar os diretórios temporários em $dir_tmp.

"; exit(); } criaIndex($dir_tmp, $diretorios); $tmpfname = $diretorios[0]; $protocolo = explode("/", $_SERVER['SERVER_PROTOCOL']); /* * Prepara as variáveis que serão incluidas na seção * * As variáveis vêm do arquivo ms_configura.php e são armazenadas em uma seção com nome específico para o i3geo. */ if (! isset($mapext) || empty($mapext)) { $mapext = ""; } else { $mapext = str_replace(",", " ", $mapext); } $saikuUrl_ = $saikuUrl; $cachedir_ = $cachedir; $dir_tmp_ = $dir_tmp; $emailInstituicao_ = $emailInstituicao; $locmapserv_ = $locmapserv; $locaplic_ = $locaplic; // $locsistemas_ = $locsistemas; // $locidentifica_ = $locidentifica; $R_path_ = $R_path; $mapext_ = $mapext; $debug_ = @$debug; $ler_extensoes_ = $ler_extensoes; $postgis_mapa_ = $postgis_mapa; $tituloInstituicao_ = $tituloInstituicao; // $atlasxml_ = $atlasxml; $expoeMapfile_ = $expoeMapfile; $googleApiKey_ = $googleApiKey; $mensagemInicia_ = $mensagemInicia; $interfacePadrao_ = $interfacePadrao; if (empty($interface)) { $interface_ = $interfacePadrao; } if (isset($kmlurl)) { $kmlurl_ = $kmlurl; } // // se houver string de conexão para substituição // o modo cgi não irá funcionar // if ($postgis_mapa != "") { $utilizacgi = "nao"; } if (! isset($perfil)) { $perfil = ""; } $perfil_ = $perfil; $utilizacgi_ = $utilizacgi; if ((isset($navegadoresLocais)) && ($navegadoresLocais != "")) { $navegadoresLocais_ = "sim"; } else { $navegadoresLocais_ = "nao"; } if (empty($i3georendermode)) { $i3georendermode_ = 0; } else { $i3georendermode_ = $i3georendermode; } if (empty($statusFerramentas)) { $statusFerramentas_ = array(); } else { $statusFerramentas_ = $statusFerramentas; } if (empty($logExec)) { $logExec_ = ""; } else { $logExec_ = $logExec; } if (! isset($i3geoPermiteLogin)) { $i3geoPermiteLogin_ = ""; } else { $i3geoPermiteLogin_ = $i3geoPermiteLogin; } /* * Inicia a seção * * O i3geo inicia uma seção específica no servidor, denominada i3GeoPHP. * Se já houver uma seção aberta, em função de outro browser estar ativo, cria uma nova. Faz a cópia das variáveis definidas para itens da seção. */ session_name("i3GeoPHP"); session_start(); // echo $_SESSION["map_file"];exit; if (! isset($g_sid)) { $g_sid = ""; } if (isset($_SESSION["map_file"]) || $g_sid != "" || $g_sid == "undefined") { session_regenerate_id(); $_SESSION = array(); } /* * Aguarde * * Monta a apresentação do aguarde. * * Aqui é necessário verificar se $executa está definido * isso pq algumas aplicações podem ser prejudicadas caso o aguarde seja mostrado */ $_SESSION["dir_tmp"] = $dir_tmp_; $_SESSION["cachedir"] = $cachedir_; $_SESSION["emailInstituicao"] = $emailInstituicao_; $_SESSION["locmapserv"] = $locmapserv_; $_SESSION["locaplic"] = $locaplic_; $_SESSION["R_path"] = $R_path_; $_SESSION["mapext"] = $mapext_; $_SESSION["debug"] = $debug_; $_SESSION["ler_extensoes"] = $ler_extensoes_; $_SESSION["postgis_mapa"] = $postgis_mapa_; $_SESSION["perfil"] = $perfil_; $_SESSION["navegadoresLocais"] = $navegadoresLocais_; $_SESSION["utilizacgi"] = $utilizacgi_; $_SESSION["tituloInstituicao"] = $tituloInstituicao_; $_SESSION["expoeMapfile"] = $expoeMapfile; $_SESSION["googleApiKey"] = $googleApiKey_; $_SESSION["mensagemInicia"] = $mensagemInicia_; $_SESSION["interfacePadrao"] = $interfacePadrao_; $_SESSION["logExec"] = $logExec_; $_SESSION["i3geoPermiteLogin"] = $i3geoPermiteLogin_; if (! isset($customDir)) { $customDir = ""; } $_SESSION["customDir"] = $customDir; if (isset($interface_)) { $_SESSION["interface"] = $interface_; } if (isset($kmlurl_)) { $_SESSION["kmlurl"] = $kmlurl_; } // rotina de segurança, ver http://shiflett.org/articles/the-truth-about-sessions $fingerprint = 'I3GEOSEC' . $_SERVER['HTTP_USER_AGENT']; $_SESSION['fingerprint'] = md5($fingerprint . session_id()); $_SESSION["mapdir"] = $diretorios[1]; $_SESSION["imgdir"] = $diretorios[2]; $_SESSION["contadorsalva"] = 0; // essa variavel e utilizada pela ferramenta telaremota. Toda vez que o mapa e salvo, acrescenta 1 (veja classesphp/mapa_controle.php) $_SESSION["i3georendermode"] = $i3georendermode_; $_SESSION["saikuUrl"] = $saikuUrl_; $_SESSION["logExec"] = $logExec_; $_SESSION["i3geoPermiteLogin"] = $i3geoPermiteLogin_; // sao arrays $postgis_mapa = $postgis_mapa_; $_SESSION["statusFerramentas"] = $statusFerramentas_; /* * Define os arquivos .map * * Seleciona os arquivos mapfile que serão carregados como base conforme o tipo de sistema operacional. * * A variável $base pode ser definida como um parâmetro na inicialização, caso contrário será utilizado o valor definido em ms_configura.php ou o i3Geo tentará descobrir o melhor arquivo a ser usado, conforme o que existir em i3geo/aplicmap. * * Os arquivos .map padrão são armazenados em i3geo/aplicmap. * O arquivo é lido conforma a característica do sistema operacional. * */ $versao = versao(); $versao = $versao["principal"]; if (! 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"; } } } // error_log($base); // if(!isset($estadosl)) // {$estadosl = "estadosl";} /* * Cria os objetos map que serão processados * * O arquivo definido em $base é lido como um objeto map. Esse objeto será processado para incluir novos layers e alterar outros parâmetros definidos pelo usuário. */ if (file_exists($base)) { $map = ms_newMapObj($base); $mapn = ms_newMapObj($base); } else { $map = ms_newMapObj($locaplic . "/aplicmap/" . $base . ".map"); $mapn = ms_newMapObj($locaplic . "/aplicmap/" . $base . ".map"); } /* * Parâmetros adicionais. * * Processa os parâmetros para a inicialização verificando se foram passados pela URL ou não. */ if (! isset($mapext)) { $mapext = $map->extent->minx . " " . $map->extent->miny . " " . $map->extent->maxx . " " . $map->extent->maxy; } // arquivo com a imagem de referência if (! isset($map_reference_image)) { $map_reference_image = $map->reference->image; //verifica o caminho if(!file_exists($map_reference_image)){ $map_reference_image = $locaplic . "/imagens/" . basename($map_reference_image); } } // extensão geográfica da imagem do mapa de referência if (! isset($map_reference_extent)) { $map_reference_extent = $map->reference->extent->minx . " " . $map->reference->extent->miny . " " . $map->reference->extent->maxx . " " . $map->reference->extent->maxy; } if (empty($interface)) { if (! isset($interfacePadrao)) { $interfacePadrao = "ol.htm"; } $interface = $interfacePadrao; } if (isset($layers) && ! isset($temasa)) { $temasa = $layers; } incluiTemasIniciais(); if (isset($layers)) { ligaTemas(); } desligaTemasIniciais(); if (isset($map_reference_image)) { $mapn->reference->set("image", $map_reference_image); } $extr = $mapn->reference->extent; if (isset($map_reference_extent)) { $temp = explode(" ", $map_reference_extent); foreach ($temp as $t) { if ($t != "") { $newext[] = $t; } } if (count($newext) == 4) { $extr->setextent($newext[0], $newext[1], $newext[2], $newext[3]); } } $ext = $mapn->extent; $newext = array(); if ((isset($mapext)) && ($mapext != "")) { $temp = explode(" ", $mapext); foreach ($temp as $t) { if ($t != "") { $newext[] = $t; } } if (count($newext) == 4) { $ext->setextent($newext[0], $newext[1], $newext[2], $newext[3]); } } else { // algumas aplicacoes usam essa variavel (SAIKU) $mapext = $ext->minx . " " . $ext->miny . " " . $ext->maxx . " " . $ext->maxy; } /* * Configura os endereços corretos no mapfile. * * Altera as propriedades imagepath e imageurl corrigindo os caminhos padrão conforme o diretório criado para armazenar o mapa de trabalho. */ $w = $mapn->web; $atual = $w->imagepath; $w->set("imagepath", $atual . $diretorios[2] . "/"); $atual = $w->imageurl; $w->set("imageurl", $atual . $diretorios[2] . "/"); $projecao = pegaProjecaoDefault("proj4"); if ($projecao != "") { $mapn->setProjection($projecao); } // aplica o tamanho do mapa if (isset($parurl["largura"]) && isset($parurl["altura"])) { $mapn->setsize($parurl["largura"], $parurl["altura"]); } $tmpfname = str_replace(".map", "", $tmpfname) . ".map"; $salvo = $mapn->save($tmpfname); $_SESSION["imgurl"] = strtolower($protocolo[0]) . "://" . $_SERVER['HTTP_HOST'] . $atual . $diretorios[2] . "/"; $_SESSION["tmpurl"] = strtolower($protocolo[0]) . "://" . $_SERVER['HTTP_HOST'] . $atual; $_SESSION["map_file"] = $tmpfname; $_SESSION["mapext"] = $mapext; if (isset($wkt)) { insereWKTUrl(); } if (isset($pontos)) { inserePontosUrl(); } if (isset($linhas)) { insereLinhasUrl(); } if (isset($poligonos)) { inserePoligonosUrl(); } if (isset($url_wms)) { incluiTemaWms(); } adaptaLayers($tmpfname, $versao); // if (file_exists($locaplic."/pacotes/geoip") && file_exists($locaplic."/pacotes/geoip/GeoLiteCity.dat")){ // require_once(dirname(__FILE__)."/ms_registraip.php"); // } if ($interface != "mashup") { abreInterface($interface, $caminho); } /* * Adapta os dados de cada layer. * * Faz alterações em cada layer caso sejam necessárias. */ function adaptaLayers($tmpfname, $versao) { global $parurl; $mapa = ms_newMapObj($tmpfname); $path = $mapa->shapepath; $numlayers = $mapa->numlayers; for ($i = 0; $i < $numlayers; ++ $i) { $layer = $mapa->getLayer($i); $ok = true; if ($layer->connection == "") { $ok = false; $d = $layer->data; if ((file_exists($d)) || (file_exists($d . ".shp"))) { $ok = true; } else { if ((file_exists($path . "/" . $d)) || (file_exists($path . "/" . $d . ".shp"))) { $ok = true; } } } if ($ok == false) { $layer->set("status", MS_OFF); } // para impedir erros na legenda if ($layer->getmetadata("classe") == "") { $layer->setmetadata("classe", ""); } if ($versao > 5) { $pr = $layer->getProcessing(); if (! in_array("LABEL_NO_CLIP=True", $pr)) { $layer->setprocessing("LABEL_NO_CLIP=True"); } if (! in_array("POLYLINE_NO_CLIP=True", $pr)) { $layer->setprocessing("POLYLINE_NO_CLIP=True"); } } // // verifica se deve aplicar filtro // $filtro = @$parurl["map_layer_" . $layer->name . "_filter"]; if (! empty($filtro)) { $layer->setmetadata("CACHE", "nao"); $layer->setfilter($filtro); } corrigeLayerPath($layer, $mapa); } $mapa->save($tmpfname); erroCriacao(); } /* * Redireciona para o HTML definido em $interface, abrindo o mapa */ function abreInterface($interface, $caminho) { global $customDir; if(empty($customDir)){ $customDir = "interface"; } $nomeInterface = explode(".", basename($interface)); if (count(explode(".php", $interface)) > 1) { if (file_exists($caminho . $customDir . "/" . $interface)) { include_once ($caminho . $customDir . "/" . $interface); } exit(); } else { if (file_exists($caminho . $customDir . "/" . $interface)) { $urln = $caminho . $customDir . "/" . $interface . "?&" . session_id(); } else { $urln = $interface . "?&" . session_id(); } if (! headers_sent()) { header("Location:" . $urln); } else { echo ""; } } } /* * Desliga os temas definidos na variável $desligar */ function desligaTemasIniciais() { global $desligar, $temasa, $layers, $mapn; //para evitar LAYERS com status MS_DEFAULT if(!isset($desligar)){ $lista = array_diff(explode(" ", $temasa),explode(" ", $layers)); } else { $layersdesligar = str_replace(',', " ", $desligar); $lista = explode(" ", $layersdesligar); } foreach ($lista as $l) { if ($l == "") { continue; } if (@$mapn->getLayerByName($l)) { $layern = $mapn->getLayerByName($l); $layern->set("status", MS_OFF); } $grupos = $mapn->getLayersIndexByGroup($l); if (count($grupos) > 0) { for ($i = 0; $i < count($grupos); ++ $i) { $layern = $mapn->getLayer($grupos[$i]); if (strtolower($layern->group) == strtolower($l)) { $layern->set("status", MS_OFF); } } } } erroCriacao(); } /* * Liga os temas definidos na variável $layers */ function ligaTemas() { global $layers, $mapn; if (isset($layers)) { $layers = str_replace(',', " ", $layers); $lista = explode(" ", $layers); foreach ($lista as $l) { if ($l == "") { continue; } if (@$mapn->getLayerByName($l)) { $layern = $mapn->getLayerByName($l); $layern->set("status", MS_DEFAULT); } $grupos = $mapn->getLayersIndexByGroup($l); if (count($grupos) > 0) { for ($i = 0; $i < count($grupos); ++ $i) { $layern = $mapn->getLayer($grupos[$i]); if (strtolower($layern->group) == strtolower($l)) { $layern->set("status", MS_DEFAULT); } } } } } erroCriacao(); } /* * Inclui os temas definidos na variável $temasa * * Os temas devem estar em i3geo/temas */ function incluiTemasIniciais() { global $temasa, $mapn, $locaplic, $metaestatids, $layers; if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') { $temasdir = $locaplic . "\\temas"; } else { $temasdir = $locaplic . "/temas"; } if (! isset($temasa)) { $temasa = ""; } $temasa = str_replace(',', " ", $temasa); $alayers = explode(" ", $temasa); if (isset($metaestatids)) { // localhost/i3geo/ms_criamapa.php?metaestatids=25,12&layers=25 include_once (dirname(__FILE__) . "/classesphp/classe_metaestatinfo.php"); $metaestatids = str_replace(',', " ", $metaestatids); $metaestatids = explode(" ", $metaestatids); $metaestatidsligados = $layers; $metaestatidsligados = str_replace(',', " ", $metaestatidsligados); $metaestatidsligados = explode(" ", $metaestatidsligados); foreach ($metaestatids as $metaestatid) { if(!file_exists($_SESSION["dir_tmp"]."/metaestatTempInit".$metaestatid.".map")){ $m = new MetaestatInfo(); $parametros = $m->listaParametro($metaestatid, "", "", true, true); // id_parametro_medida,coluna $filtroPar = array(); $tituloPar = array(); foreach ($parametros as $parametro) { $valoresparametro = $m->valorUnicoMedidaVariavel($metaestatid, $parametro["coluna"]); //var_dump($valoresparametro); //exit(); $valormaior = $valoresparametro[count($valoresparametro) - 1]; $filtroPar[] = " " . $parametro["coluna"] . "::text = '" . $valormaior[$parametro["coluna"]] . "' "; $tituloPar[] = $parametro["coluna"] . ": " . $valormaior[$parametro["coluna"]]; } $dadosMedida = $m->listaMedidaVariavel("", $metaestatid); // var_dump($dadosMedida);exit; $tituloCamada = mb_convert_encoding($dadosMedida["nomemedida"],"ISO-8859-1",mb_detect_encoding($dadosMedida["nomemedida"])); if(count($tituloPar)>0){ $tituloCamada = $tituloCamada." (".implode(" ,",$tituloPar)." )"; } $mapfilemetaestat = $m->mapfileMedidaVariavel($metaestatid, implode(" AND ", $filtroPar), 0, "polygon", $tituloCamada, "", "", "", "", false, true,$_SESSION["dir_tmp"]."/metaestatTempInit".$metaestatid.".map"); } else { $mapfilemetaestat = array( "mapfile" => $_SESSION["dir_tmp"]."/metaestatTempInit".$metaestatid.".map", "layer" => "metaestatTempInit".$metaestatid ); } // array(3) { ["mapfile"]=> string(52) "/tmp/ms_tmp/AAAAc20ad4d76fe97759aa27a0c99bff6710.map" ["layer"]=> string(36) "AAAAc20ad4d76fe97759aa27a0c99bff6710" ["titulolayer"]=> string(0) "" } // var_dump ($mapfilemetaestat); // exit; array_push($alayers, $mapfilemetaestat["mapfile"]); if (in_array($metaestatid, $metaestatidsligados)) { $maptemp = @ms_newMapObj($mapfilemetaestat["mapfile"]); $maptemp->getlayerbyname($mapfilemetaestat["layer"])->set("status", MS_DEFAULT); $maptemp->save($mapfilemetaestat["mapfile"]); } } } $existeraster = false; foreach ($alayers as $arqt) { $arqtemp = ""; $arqt = trim($arqt); if ($arqt == "") { continue; } $extensao = ".map"; if (file_exists($arqt)) { $arqtemp = $arqt; } if ((strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) && (file_exists($locaplic . "\\aplicmap\\" . $arqt . $extensao))) { $arqtemp = $locaplic . "\\aplicmap\\" . $arqt . $extensao; } elseif (file_exists($locaplic . "/aplicmap/" . $arqt . $extensao)) { $arqtemp = $locaplic . "/aplicmap/" . $arqt . $extensao; } if ((strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) && (file_exists($temasdir . "\\" . $arqt . $extensao))) { $arqtemp = $temasdir . "\\" . $arqt . $extensao; } elseif (file_exists($temasdir . "/" . $arqt . $extensao)) { $arqtemp = $temasdir . "/" . $arqt . $extensao; } if ($arqtemp == "") { // echo "
Impossível acessar tema $arqtemp"; } else { if ($extensao == ".map" && ! @ms_newMapObj($arqtemp)) { echo "
Problemas com a camada $arqtemp
"; } else { $maptemp = @ms_newMapObj($arqtemp); for ($i = 0; $i < ($maptemp->numlayers); ++ $i) { // error_reporting(0); $layern = $maptemp->getLayer($i); if ($layern->type == MS_LAYER_RASTER) { $existeraster = true; } if ($layern->name == "estadosl") { $layern->set("data", $locaplic . "/aplicmap/dados/estados.shp"); } $layern->setmetadata("nomeoriginal", $layern->name); $nNome = str_replace(".map", "", basename($arqtemp)); $layern->setmetadata("arquivotemaoriginal", $nNome); autoClasses($layern, $mapn); // // necessário para não alterar a extensão do mapa por esse parâmetro // $layern->setmetadata("aplicaextensao", ""); // cria e aplica sld se for wms e existirem classes if ($layern->classitem != "" && $layern->connectiontype == 7 && $layern->numclasses > 0 && $layern->getmetadata("wms_sld_body") == "") { $tipotemp = $layern->type; $statustemp = $layern->status; $tiporep = $layern->getmetadata("tipooriginal"); $layern->set("type", MS_LAYER_POLYGON); if ($tiporep == "linear") { $layern->set("type", MS_LAYER_LINE); } if ($tiporep == "pontual") { $layern->set("type", MS_LAYER_POINT); } $layern->set("status", MS_DEFAULT); $sld = $layern->generateSLD(); if ($sld != "") $layern->setmetadata("wms_sld_body", str_replace('"', "'", $sld)); $layern->set("type", $tipotemp); $layern->set("status", $statustemp); } cloneInlineSymbol($layern, $maptemp, $mapn); //$layerAdicionado = ms_newLayerObj($mapn, $layern); if($layern->type == MS_LAYER_POLYGON && $layern->getmetadata("METAESTAT") == "SIM"){ $mapn->insertLayer($layern,0); } else { $mapn->insertLayer($layern,-1); } // echo $layern->name; //corrigeLayerGrid($layern, $layerAdicionado); corrigeLayerGrid($layern, $mapn->getlayerbyname($layern->name)); } } } } erroCriacao(); } /* * Cria os arquivos vazios index.htm e index.html nos diretorios temporários */ function criaIndex($dir_tmp, $diretorios) { if (! file_exists($dir_tmp . "/index.htm")) { $f = fopen($dir_tmp . "/index.htm", "x"); fclose($f); $f = fopen($dir_tmp . "/index.html", "x"); fclose($f); $f = fopen($dir_tmp . "/" . $diretorios[1] . "/index.html", "x"); fclose($f); $f = fopen($dir_tmp . "/" . $diretorios[1] . "/index.htm", "x"); fclose($f); $f = fopen($dir_tmp . "/" . $diretorios[2] . "/index.html", "x"); fclose($f); $f = fopen($dir_tmp . "/" . $diretorios[2] . "/index.htm", "x"); fclose($f); } if (! file_exists($dir_tmp . "/index.htm")) { echo "Erro. Não foi possível gravar no diretório temporário"; exit(); } } /* * Mostra a mensagem de aguarde */ function mostraAguarde() { global $interface, $mensagemInicia, $tituloInstituicao; if (! isset($interface)) { echo ""; echo ''; echo "" . $tituloInstituicao . ""; echo '
'; echo '

' . $mensagemInicia . '
Aguarde...preparando o mapa

'; echo ''; echo ""; echo ""; echo ""; echo ""; echo ""; echo "
"; echo ''; } } /* * Insere elementos no mapa a partir de uma string definida em wkt */ function insereWKTUrl() { global $tamanhosimbolo, $simbolo, $corsimbolo, $wkt, $nometemawkt, $dir_tmp, $imgdir, $tmpfname, $locaplic; include_once "pacotes/phpxbase/api_conversion.php"; if (! isset($nometemapontos)) { $nometemapontos = "WKT"; } if ($nometemapontos == "") { $nometemapontos = "WKT"; } // // cria o shape file // $shape = ms_shapeObjFromWkt($wkt); $tipol = $shape->type; if ($tipol == 0) { $tipol = 3; } $nomeshp = $dir_tmp . "/" . $imgdir . "/wkts"; // cria o dbf $def = array(); $items = array( "COORD" ); foreach ($items as $ni) { $def[] = array( $ni, "C", "254" ); } if (! function_exists(dbase_create)) { xbase_create($nomeshp . ".dbf", $def); } else { dbase_create($nomeshp . ".dbf", $def); } $dbname = $nomeshp . ".dbf"; $db = xbase_open($dbname, 2); if ($tipol == 1) { $novoshpf = ms_newShapefileObj($nomeshp, MS_SHP_ARC); } if ($tipol == 3) { $novoshpf = ms_newShapefileObj($nomeshp, MS_SHP_MULTIPOINT); } if ($tipol == 2) { $novoshpf = ms_newShapefileObj($nomeshp, MS_SHP_POLYGON); } $reg[] = ""; $novoshpf->addShape($shape); xbase_add_record($db, $reg); $novoshpf->free(); xbase_close($db); // adiciona o layer $mapa = ms_newMapObj($tmpfname); $layer = ms_newLayerObj($mapa); $layer->set("name", "wktins"); $layer->set("data", $nomeshp . ".shp"); $layer->setmetadata("DOWNLOAD", "sim"); $layer->setmetadata("temalocal", "sim"); $layer->setmetadata("tema", $nometemawkt); $layer->setmetadata("classe", "sim"); $layer->set("type", $shape->type); $layer->set("status", MS_DEFAULT); $classe = ms_newClassObj($layer); $classe->set("name", " "); $estilo = ms_newStyleObj($classe); if ($shape->type == 0) { if (! isset($simbolo)) $estilo->set("symbolname", "ponto"); if (! isset($tamanhosimbolo)) $estilo->set("size", 6); } if ($shape->type == 1) { if (! isset($simbolo)) $estilo->set("symbolname", "linha"); if (! isset($tamanhosimbolo)) $estilo->set("size", 3); } if ($shape->type == 2) { $layer->set("opacity", "50"); } $cor = $estilo->color; if (! isset($corsimbolo)) { $corsimbolo = "255,0,0"; } $corsimbolo = str_replace(" ", ",", $corsimbolo); $corsimbolo = explode(",", $corsimbolo); $cor->setRGB($corsimbolo[0], $corsimbolo[1], $corsimbolo[2]); $salvo = $mapa->save($tmpfname); erroCriacao(); } /* * Insere um tema do tipo ponto * */ function inserePontosUrl() { global $pontos, $tamanhosimbolo, $simbolo, $corsimbolo, $nometemapontos, $dir_tmp, $imgdir, $tmpfname, $locaplic; include_once "pacotes/phpxbase/api_conversion.php"; if (! isset($nometemapontos)) { $nometemapontos = "Pontos"; } if ($nometemapontos == "") { $nometemapontos = "Pontos"; } // // cria o shape file // $tipol = MS_SHP_POINT; $nomeshp = $dir_tmp . "/" . $imgdir . "/" . nomeRandomico(); // cria o dbf $def = array(); $items = array( "COORD" ); foreach ($items as $ni) { $def[] = array( $ni, "C", "254" ); } if (! function_exists(dbase_create)) { xbase_create($nomeshp . ".dbf", $def); } else { dbase_create($nomeshp . ".dbf", $def); } $dbname = $nomeshp . ".dbf"; $db = xbase_open($dbname, 2); $novoshpf = ms_newShapefileObj($nomeshp, $tipol); $pontos = explode(" ", trim($pontos)); if (count($pontos) == 1) { $pontos = explode(",", trim($pontos[0])); } foreach ($pontos as $p) { if (is_numeric($p)) { $pontosn[] = $p; } } $pontos = $pontosn; for ($ci = 0; $ci < count($pontos); $ci = $ci + 2) { $reg = array(); $reg[] = $pontos[$ci] . " " . $pontos[$ci + 1]; $shape = ms_newShapeObj($tipol); $linha = ms_newLineObj(); $linha->addXY($pontos[$ci], $pontos[$ci + 1]); $shape->add($linha); $novoshpf->addShape($shape); xbase_add_record($db, $reg); } $novoshpf->free(); xbase_close($db); // adiciona o layer $mapa = ms_newMapObj($tmpfname); $layer = ms_newLayerObj($mapa); $layer->set("name", "pontoins"); $layer->set("data", $nomeshp . ".shp"); $layer->setmetadata("DOWNLOAD", "sim"); $layer->setmetadata("tema", $nometemapontos); $layer->setmetadata("classe", "sim"); $layer->setmetadata("temalocal", "sim"); $layer->setmetadata("ATLAS", "nao"); $layer->set("type", MS_LAYER_POINT); $layer->set("status", MS_DEFAULT); $classe = ms_newClassObj($layer); $classe->set("name", " "); $estilo = ms_newStyleObj($classe); if (! isset($simbolo)) { $simbolo = "ponto"; } $estilo->set("symbolname", $simbolo); if (! isset($tamanhosimbolo)) { $tamanhosimbolo = 6; } $estilo->set("size", $tamanhosimbolo); $cor = $estilo->color; if (! isset($corsimbolo)) { $corsimbolo = "255,0,0"; } $corsimbolo = str_replace(" ", ",", $corsimbolo); $corsimbolo = explode(",", $corsimbolo); $cor->setRGB($corsimbolo[0], $corsimbolo[1], $corsimbolo[2]); $salvo = $mapa->save($tmpfname); erroCriacao(); } /* * Insere um tema do tipo linear * * As linhas devem ter os pontos separados por espaços e cada linha separada por vírgula * */ function insereLinhasUrl() { global $tamanhosimbolo, $simbolo, $corsimbolo, $linhas, $nometemalinhas, $dir_tmp, $imgdir, $tmpfname, $locaplic; include_once "pacotes/phpxbase/api_conversion.php"; if (! isset($nometemalinhas)) { $nometemalinhas = "Linhas"; } if ($nometemalinhas == "") { $nometemalinhas = "Linhas"; } // // cria o shape file // $tipol = MS_SHP_ARC; $nomeshp = $dir_tmp . "/" . $imgdir . "/" . nomeRandomico(); // cria o dbf $def = array(); $items = array( "COORD" ); foreach ($items as $ni) { $def[] = array( $ni, "C", "254" ); } if (! function_exists(dbase_create)) { xbase_create($nomeshp . ".dbf", $def); } else { dbase_create($nomeshp . ".dbf", $def); } $dbname = $nomeshp . ".dbf"; $db = xbase_open($dbname, 2); $novoshpf = ms_newShapefileObj($nomeshp, $tipol); $linhas = explode(",", trim($linhas)); $pontosLinhas = array(); // guarda os pontos de cada linha em arrays foreach ($linhas as $l) { $tempPTs = explode(" ", trim($l)); $temp = array(); foreach ($tempPTs as $p) { if (is_numeric($p)) { $temp[] = $p; } } $pontosLinhas[] = $temp; } foreach ($pontosLinhas as $ptsl) { $linhas = $ptsl; $shape = ms_newShapeObj(MS_SHAPE_LINE); $linha = ms_newLineObj(); $reg = array(); $reg[] = implode(",", $ptsl); for ($ci = 0; $ci < count($linhas); $ci = $ci + 2) { $linha->addXY($linhas[$ci], $linhas[$ci + 1]); } $shape->add($linha); $novoshpf->addShape($shape); xbase_add_record($db, $reg); } $novoshpf->free(); xbase_close($db); // adiciona o layer $mapa = ms_newMapObj($tmpfname); $layer = ms_newLayerObj($mapa); $layer->set("name", "linhains"); $layer->set("data", $nomeshp . ".shp"); $layer->setmetadata("DOWNLOAD", "sim"); $layer->setmetadata("temalocal", "sim"); $layer->setmetadata("tema", $nometemalinhas); $layer->setmetadata("classe", "sim"); $layer->setmetadata("ATLAS", "nao"); $layer->set("type", MS_LAYER_LINE); $layer->set("status", MS_DEFAULT); $classe = ms_newClassObj($layer); $classe->set("name", " "); $estilo = ms_newStyleObj($classe); if (isset($simbolo)) { $simbolo = "linha"; $estilo->set("symbolname", $simbolo); } if (! isset($tamanhosimbolo)) { $tamanhosimbolo = 4; } $estilo->set("width", $tamanhosimbolo); $cor = $estilo->color; if (! isset($corsimbolo)) { $corsimbolo = "255,0,0"; } $corsimbolo = str_replace(" ", ",", $corsimbolo); $corsimbolo = explode(",", $corsimbolo); $cor->setRGB($corsimbolo[0], $corsimbolo[1], $corsimbolo[2]); $salvo = $mapa->save($tmpfname); erroCriacao(); } /* * Insere um tema poligonal. * * Os polígonos devem ter os pontos separados por espaços e cada polígono separado por vírgula */ function inserePoligonosUrl() { global $tamanhosimbolo, $simbolo, $corsimbolo, $poligonos, $nometemapoligonos, $dir_tmp, $imgdir, $tmpfname, $locaplic; include_once "pacotes/phpxbase/api_conversion.php"; if (! isset($nometemapoligonos)) { $nometemapoligonos = "Poligonos"; } if ($nometemapoligonos == "") { $nometemapoligonos = "Poligonos"; } // // cria o shape file // $tipol = MS_SHP_POLYGON; $nomeshp = $dir_tmp . "/" . $imgdir . "/" . nomeRandomico(); // cria o dbf $def = array(); $items = array( "COORD" ); foreach ($items as $ni) { $def[] = array( $ni, "C", "254" ); } if (! function_exists(dbase_create)) { xbase_create($nomeshp . ".dbf", $def); } else { dbase_create($nomeshp . ".dbf", $def); } $dbname = $nomeshp . ".dbf"; $db = xbase_open($dbname, 2); $novoshpf = ms_newShapefileObj($nomeshp, $tipol); $linhas = explode(",", trim($poligonos)); $pontosLinhas = array(); // guarda os pontos de cada linha em arrays foreach ($linhas as $l) { $tempPTs = explode(" ", trim($l)); $temp = array(); foreach ($tempPTs as $p) if (is_numeric($p)) { $temp[] = $p; } $pontosLinhas[] = $temp; } foreach ($pontosLinhas as $ptsl) { $linhas = $ptsl; $shape = ms_newShapeObj(MS_SHAPE_POLYGON); $linha = ms_newLineObj(); $reg = array(); $reg[] = ""; for ($ci = 0; $ci < count($linhas); $ci = $ci + 2) { $linha->addXY($linhas[$ci], $linhas[$ci + 1]); } $shape->add($linha); $novoshpf->addShape($shape); xbase_add_record($db, $reg); } $novoshpf->free(); xbase_close($db); // adiciona o layer $mapa = ms_newMapObj($tmpfname); $layer = ms_newLayerObj($mapa); $layer->set("name", "linhains"); $layer->set("data", $nomeshp . ".shp"); $layer->setmetadata("DOWNLOAD", "sim"); $layer->setmetadata("temalocal", "sim"); $layer->setmetadata("tema", $nometemapoligonos); $layer->setmetadata("classe", "sim"); $layer->setmetadata("ATLAS", "nao"); $layer->set("type", MS_LAYER_POLYGON); $layer->set("opacity", "50"); $layer->set("status", MS_DEFAULT); $classe = ms_newClassObj($layer); $classe->set("name", " "); $estilo = ms_newStyleObj($classe); $cor = $estilo->color; if (! isset($corsimbolo)) { $corsimbolo = "255,0,0"; } $corsimbolo = str_replace(" ", ",", $corsimbolo); $corsimbolo = explode(",", $corsimbolo); $cor->setRGB($corsimbolo[0], $corsimbolo[1], $corsimbolo[2]); $salvo = $mapa->save($tmpfname); erroCriacao(); } /* * Inclui no mapa um tema do tipo WMS */ function incluiTemaWms() { global $nome_wms, $url_wms, $layer_wms, $style_wms, $srs_wms, $image_wms, $versao_wms, $tmpfname, $locaplic; include_once ($locaplic . "/classesphp/classe_mapa.php"); if (! $nome_wms) { $nome = $layer_wms . " " . $style_wms; } else $nome = $nome_wms; $m = new Mapa($tmpfname); $m->adicionatemawms($layer_wms, $url_wms, $style_wms, $srs_wms, $image_wms, $locaplic, "", $versao_wms, $nome, "", "", "", "", "nao", "text/plain", ""); $salvo = $m->salva($tmpfname); // echo $tmpfname;exit; erroCriacao(); } /* * Projeto gvsig */ function incluiMapaGvsig($gvsiggvp, $gvsigview = "") {} /* * Captura e mostra os erros de processamento do mapserver */ function erroCriacao() { $error = ms_GetErrorObj(); while ($error && $error->code != MS_NOERR) { printf("
Error in %s: %s
\n", $error->routine, $error->message); $error = $error->next(); } ms_ResetErrorList(); } /* * Cria os diretórios temporários para a aplicação. * * Parametro: * * $dir_tmp {string} - Diretório temporário (no servidor) utilizado pelo mapserver. * * $cachedir {string} - Diretório de cache temporário definido no ms_configura.php * * Retorno: * * {boleano} */ function criaDirMapa($dir_tmp, $cachedir = "") { if (empty($dir_tmp)) { return false; } if (! file_exists($dir_tmp)) { @mkdir($dir_tmp, 0744); } if (file_exists($dir_tmp)) { foreach (glob($dir_tmp . '/{,.}*.php', GLOB_BRACE) as $f) { rename($f,str_replace(".php","_php_renomeado_por_ms_criamapa",$f)); } $tmpdirname = nomeRandomico(); $crdir = @mkdir($dir_tmp . "/" . $tmpdirname, 0744); chmod($dir_tmp . "/" . $tmpdirname, 0744); $crdiri = @mkdir($dir_tmp . "/img" . $tmpdirname, 0744); chmod($dir_tmp . "/img" . $tmpdirname, 0744); $mapfile = $dir_tmp . "/" . $tmpdirname . "/" . $tmpdirname . ".map"; $tmpimgname = "img" . $tmpdirname; if (! file_exists($dir_tmp . "/comum")) { @mkdir($dir_tmp . "/comum", 0744); } if (! file_exists($dir_tmp . "/saiku-datasources")) { // utilizado para armazenar os arquivos de fonte de dados do SAIKU @mkdir($dir_tmp . "/saiku-datasources", 0744); chmod($dir_tmp . "/saiku-datasources", 0744); } // if ($cachedir == "") { if (! file_exists($dir_tmp . "/cache")) { @mkdir($dir_tmp . "/cache", 0744); chmod($dir_tmp . "/cache", 0744); @mkdir($dir_tmp . "/cache/googlemaps", 0744); chmod($dir_tmp . "/cache/googlemaps", 0744); } } else { if (! file_exists($cachedir)) { @mkdir($cachedir, 0744); chmod($cachedir, 0744); @mkdir($cachedir . "/googlemaps", 0744); chmod($cachedir . "/googlemaps", 0744); } } if (file_exists($dir_tmp . "/" . $tmpdirname)) { return array( $mapfile, $tmpdirname, $tmpimgname ); } else { return false; } } else { return false; } } ?>