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 é um WMS e se existem classes definidas //se existirem as classes, é 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; }
$lcon = $l->connection; if ($lcon == " " || $lcon == "" || in_array($lcon, array_keys($postgis_mapa))) { // //o metadata CONEXAOORIGINAL guarda o valor original para posterior substituição // if ($lcon == " " || $lcon == "") { $l->set("connection", $postgis_mapa); $l->setmetadata("CONEXAOORIGINAL", $lcon); } else { $l->set("connection", $postgis_mapa[$lcon]); $l->setmetadata("CONEXAOORIGINAL", $lcon); } } } } autoClasses($l, $oMap); ms_newLayerObj($oMap, $l); $oMap->save($nomeMapfileTmp); validaAcessoTemas($nomeMapfileTmp, true); $oMap = ms_newMapobj($nomeMapfileTmp); restauraCon($nomeMapfileTmp, $postgis_mapa); $layer = $oMap->getlayerbyname($tema); if ($layer == "") { echo "Layer nao encontrado"; exit; } $data = pegaDadosJ(); $format = $_GET["format"]; $jsonp = $_GET["jsonp"]; if ($format == "storymap") { //parametros via URL
function incluiTemasIniciais() { global $temasa, $mapn, $locaplic; if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') { $temasdir = $locaplic . "\\temas"; } else { $temasdir = $locaplic . "/temas"; } if (!isset($temasa)) { $temasa = ""; } $temasa = str_replace(',', " ", $temasa); $alayers = explode(" ", $temasa); $existeraster = false; foreach ($alayers as $arqt) { $arqtemp = ""; $arqt = trim($arqt); if ($arqt == "") { continue; } $extensao = ".map"; $arqt = str_replace(".gvp", "", $arqt); if (file_exists($arqt . ".gvp")) { $extensao = ".gvp"; $arqt = $arqt . ".gvp"; } if (file_exists($arqt)) { $arqtemp = $arqt; } if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN') && file_exists($temasdir . "\\" . $arqt . "php")) { //$extensao = ".php"; } elseif (file_exists($temasdir . "/" . $arqt . ".php")) { //$extensao = ".php"; } if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN') && file_exists($temasdir . "\\" . $arqt . "gvp")) { $extensao = ".gvp"; } elseif (file_exists($temasdir . "/" . $arqt . ".gvp")) { $extensao = ".gvp"; } if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN') && file_exists($locaplic . "\\aplicmap\\" . $arqt . $extensao)) { $arqtemp = $locaplic . "\\aplicmap\\" . $arqt . $extensao; } elseif (file_exists($locaplic . "/aplicmap/" . $arqt . $extensao)) { $arqtemp = $locaplic . "/aplicmap/" . $arqt . $extensao; } if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN') && file_exists($temasdir . "\\" . $arqt . $extensao)) { $arqtemp = $temasdir . "\\" . $arqt . $extensao; } elseif (file_exists($temasdir . "/" . $arqt . $extensao)) { $arqtemp = $temasdir . "/" . $arqt . $extensao; } if ($arqtemp == "") { echo "<br>Impossível acessar tema {$arqtemp}"; } else { if ($extensao == ".map" && !@ms_newMapObj($arqtemp)) { echo "<br>Problemas com a camada {$arqtemp}<br>"; } else { if ($extensao == ".map") { $maptemp = @ms_newMapObj($arqtemp); for ($i = 0; $i < $maptemp->numlayers; ++$i) { //error_reporting(0); $layern = $maptemp->getLayer($i); if ($layern->type == MS_LAYER_RASTER) { $existeraster = true; } if ($layern->name == "estadosl") { $layern->set("data", $locaplic . "/aplicmap/dados/estados.shp"); } $layern->setmetadata("nomeoriginal", $layern->name); $nNome = str_replace(".map", "", basename($arqtemp)); $layern->setmetadata("arquivotemaoriginal", $nNome); autoClasses($layern, $mapn); // //necessá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); corrigeLayerGrid($layern, $layerAdicionado); } } if ($extensao == ".php") { //include_once($arqtemp); //eval($arqt."(\$mapn);"); } if ($extensao == ".gvp") { include_once $locaplic . "/pacotes/gvsig/gvsig2mapfile/class.gvsig2mapfile.php"; $gm = new gvsig2mapfile($arqtemp); $gvsigview = $gm->getViewsNames(); foreach ($gvsigview as $v) { $dataView = $gm->getViewData($v); $mapn = $gm->addLayers($mapn, $v, $dataView["layerNames"]); } $next = $dataView["extent"]; $ext = $mapn->extent; $ext->setextent($next[0], $next[1], $next[2], $next[3]); } } } } // //muda para RGB para melhorar o desenho da imagem raster // if ($existeraster) { //$of = $mapn->outputformat; //$of->set("imagemode",MS_IMAGEMODE_RGB); } erroCriacao(); }
$l->set("template", "none.htm"); $l->set("status", MS_DEFAULT); // //numero de pixels que serao considerados para corte da imagem no caso de cache ativo e tema de pontos // $cortePixels = 0; if ($l->getmetadata("cortepixels") != "" && $qy == false) { $cortePixels = $l->getmetadata("cortepixels"); } //FIXME verificar se foi corrigido em versoes novas do mapserver //corrige um bug do mapserver que nao calcula a escala direito $l->set("maxscaledenom", $l->maxscaledenom * 100000); $l->set("minscaledenom", $l->minscaledenom * 100000); $l->set("symbolscaledenom", $l->symbolscaledenom * 100000); if ($l->getmetadata("classesnome") != "") { autoClasses($l, $mapa); } if (!empty($postgis_mapa)) { if ($l->connectiontype == MS_POSTGIS) { $lcon = $l->connection; if ($lcon == " " || $lcon == "" || in_array($lcon, array_keys($postgis_mapa))) { if ($lcon == " " || $lcon == "") { $l->set("connection", $postgis_mapa); } else { $l->set("connection", $postgis_mapa[$lcon]); } } } } if ($l->getProjection() == "") { $l->setProjection("proj=latlong,a=6378137,b=6378137");
// //faz uma c�pia do mapfile para poder manipular sem afetar omapfile atual usado pelo i3geo // $nomerando = nomerandomico(); //echo $map_file."<br>"; $map_filen = str_replace(basename($map_file), $nomerando . ".map", $map_file); $map_filen = str_replace(".map", "", $map_filen) . ".map"; copy($map_file, $map_filen); substituiCon($map_filen, $postgis_mapa); $map = ms_newMapObj($map_filen); restauraCon($map_filen, $postgis_mapa); $layersNames = $map->getalllayernames(); foreach ($layersNames as $layerName) { $layer = $map->getLayerByname($layerName); if ($layer->getmetadata("classesnome") != "") { autoClasses($layer, $map); } if ($layer->type == MS_LAYER_POLYGON) { $nclasses = $layer->numclasses; for ($i = 0; $i < $nclasses; ++$i) { $classe = $layer->getclass($i); $nestilos = $classe; for ($j = 0; $j < $nestilos; ++$j) { $estilo = $classe->getstyle($j); $estilo->set("symbolname", "pt1"); } } } } if (isset($_GET["map_size"])) { $map_size = explode(",", $_GET["map_size"]);
function retornaWms($map_fileX, $postgis_mapa) { error_reporting(0); if (isset($_GET["bbox"])) { $_GET["BBOX"] = $_GET["bbox"]; } if (isset($_GET["BBOX"])) { $_GET["mapext"] = str_replace(",", " ", $_GET["BBOX"]); $m = explode(" ", $_GET["mapext"]); $dx = $m[0] - $m[2]; if ($dx < 0) { $dx = $dx * -1; } $dy = $m[1] - $m[3]; if ($dy < 0) { $dy = $dy * -1; } $_GET["HEIGHT"] = $_GET["WIDTH"] / $dx * $dy; //$_GET["map_size"] = $_GET["WIDTH"]." ".$_GET["HEIGHT"]; } $mapa = ms_newMapObj($map_fileX); $mapa->setProjection("init=epsg:4326"); // //resolve o problema da seleção na versão nova do mapserver // $qyfile = dirname($map_fileX) . "/" . $_GET["layer"] . "_qy.map"; $qy = file_exists($qyfile); $o = $mapa->outputformat; $o->set("imagemode", MS_IMAGEMODE_RGBA); if (!isset($_GET["telaR"])) { //no caso de projecoes remotas, o mapfile nao´e alterado $numlayers = $mapa->numlayers; for ($i = 0; $i < $numlayers; ++$i) { $l = $mapa->getlayer($i); if ($l->getmetadata("classesnome") != "") { if (!function_exists("autoClasses")) { include_once "funcoes_gerais.php"; } autoClasses($l, $mapa); } $layerName = $l->name; if ($layerName != $_GET["layer"]) { $l->set("status", MS_OFF); } if ($layerName == $_GET["layer"] || $l->group == $_GET["layer"] && $l->group != "") { $l->set("status", MS_DEFAULT); if (!empty($postgis_mapa)) { if ($l->connectiontype == MS_POSTGIS) { $lcon = $l->connection; if ($lcon == " " || $lcon == "" || in_array($lcon, array_keys($postgis_mapa))) { if ($lcon == " " || $lcon == "") { $l->set("connection", $postgis_mapa); } else { $l->set("connection", $postgis_mapa[$lcon]); } } } } } $l->set("template", "none.htm"); } } else { $mapa->selectOutputFormat("jpeg"); $of = $mapa->outputformat; $of->set("imagemode", MS_IMAGEMODE_RGBA); $of->set("driver", "AGG/PNG"); $of->set("transparent", MS_ON); } $mapa->setsize($_GET["WIDTH"], $_GET["HEIGHT"]); if (isset($_GET["mapext"])) { $mapext = explode(" ", $_GET["mapext"]); $mapa->setExtent($mapext[0], $mapext[1], $mapext[2], $mapext[3]); } if (!isset($_GET["telaR"])) { $legenda = $mapa->legend; $legenda->set("status", MS_OFF); $escala = $mapa->scalebar; $escala->set("status", MS_OFF); } // //se o layer não for do tipo fundo // if (isset($_GET["tipolayer"]) && $_GET["tipolayer"] != "fundo") { $o->set("transparent", MS_TRUE); } if ($qy != true) { $img = $mapa->draw(); } else { $handle = fopen($qyfile, "r"); $conteudo = fread($handle, filesize($qyfile)); fclose($handle); $shp = unserialize($conteudo); $l = $mapa->getLayerByname($_GET["layer"]); if ($l->connectiontype != MS_POSTGIS) { $indxlayer = $l->index; foreach ($shp as $indx) { $mapa->querybyindex($indxlayer, -1, $indx, MS_TRUE); } $qm = $mapa->querymap; $qm->set("width", $map_size[0]); $qm->set("height", $map_size[1]); $img = $mapa->drawQuery(); } else { $img = $mapa->draw(); $c = $mapa->querymap->color; $numclasses = $l->numclasses; if ($numclasses > 0) { $classe0 = $l->getClass(0); $classe0->setexpression(""); $classe0->set("name", " "); for ($i = 1; $i < $numclasses; ++$i) { $classe = $l->getClass($i); $classe->set("status", MS_DELETE); } } $cor = $classe0->getstyle(0)->color; $cor->setrgb($c->red, $c->green, $c->blue); $cor = $classe0->getstyle(0)->outlinecolor; $cor->setrgb($c->red, $c->green, $c->blue); $status = $l->open(); $status = $l->whichShapes($mapa->extent); while ($shape = $l->nextShape()) { if (in_array($shape->index, $shp)) { $shape->draw($mapa, $l, $img); } } $l->close(); } } if (!function_exists('imagepng')) { $s = PHP_SHLIB_SUFFIX; @dl('php_gd.' . $s); if (!function_exists('imagepng')) { @dl('php_gd2.' . $s); } if (!function_exists('imagepng')) { $_GET["TIPOIMAGEM"] = ""; } } if (isset($_GET["TIPOIMAGEM"]) && trim($_GET["TIPOIMAGEM"]) != "" && trim($_GET["TIPOIMAGEM"]) != "nenhum") { if ($img->imagepath == "") { echo "Erro IMAGEPATH vazio"; exit; } $nomer = $img->imagepath . "filtroimgtemp" . nomeRandomico() . ".png"; $img->saveImage($nomer); filtraImagem($nomer, $_GET["TIPOIMAGEM"]); $img = imagecreatefrompng($nomer); imagealphablending($img, false); imagesavealpha($img, true); ob_clean(); echo header("Content-type: image/png \n\n"); imagepng($img); } else { ob_clean(); if ($img->imagepath == "") { echo "Erro IMAGEPATH vazio"; exit; } $nomer = $img->imagepath . "imgtemp" . nomeRandomico() . ".png"; $img->saveImage($nomer); $img = imagecreatefrompng($nomer); imagealphablending($img, false); imagesavealpha($img, true); ob_clean(); echo header("Content-type: image/png \n\n"); imagepng($img); } }
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Â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); } } }
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ã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> é um programa PHP. O teste pode nã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ço dos arquivos de símbolos estiverem <br>definidos de forma relativa ao invés de absoluta. Nesses casos, ao abrir o i3Geo, <br>o mapfile poderá 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ã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)); } } } }
function testaMapaImg($tema) { global $locaplic, $postgis_mapa, $versao, $base, $dir_tmp, $tempo; $base = mapaBase($locaplic, $versao, $base); $mapa = ms_newMapObj($base); error_reporting(0); ms_ResetErrorList(); try { ms_newMapObj($tema); } catch (Exception $e) { return array("imgMapa" => "", "imgLegenda" => "", "tempo" => microtime(true) - $tempo, "erro" => "Objeto map nao pode ser criado. Erro fatal."); } if (@ms_newMapObj($tema)) { $nmapa = ms_newMapObj($tema); } else { $erro = ""; $error = ms_GetErrorObj(); while ($error && $error->code != MS_NOERR) { $erro .= "<br>Error in %s: %s<br>\n"; $erro .= "<br>" . $error->routine; $erro .= "<br>" . $error->message; $error = $error->next(); } return array("imgMapa" => "", "imgLegenda" => "", "tempo" => microtime(true) - $tempo, "erro" => $erro); } substituiConObj($mapa, $postgis_mapa); substituiConObj($nmapa, $postgis_mapa); $numlayers = $nmapa->numlayers; $dados = ""; $simbolos = array(); for ($i = 0; $i < $numlayers; $i++) { $layern = $nmapa->getlayer($i); $layern->set("status", MS_DEFAULT); autoClasses($layern, $nmapa); error_reporting(0); if ($layern->classitem != "" && $layern->connectiontype == 7 && $layern->numclasses > 0 && $layern->getmetadata("wms_sld_body") == "") { $tipotemp = $layern->type; $tiporep = $layern->getmetadata("tipooriginal"); $layern->set("type", MS_LAYER_POLYGON); if ($tiporep == "linear") { $layern->set("type", MS_LAYER_LINE); } if ($tiporep == "pontual") { $layern->set("type", MS_LAYER_POINT); } $sld = $layern->generateSLD(); if ($sld != "") { $layern->setmetadata("wms_sld_body", str_replace('"', "'", $sld)); } $layern->set("type", $tipotemp); } //pega simbolos locais e aplica no novo mapa cloneInlineSymbol($layern, $nmapa, $mapa); $layerAdicionado = ms_newLayerObj($mapa, $layern); corrigeLayerGrid($layern, $layerAdicionado); $pegarext = $layern->name; } zoomTema($pegarext, $mapa); $mapa->setsize(500, 500); $sca = $mapa->scalebar; $sca->set("status", MS_OFF); $objImagem = @$mapa->draw(); //corrige o titulo da legenda $numlayers = $mapa->numlayers; for ($j = 0; $j < $numlayers; $j++) { $l = $mapa->getlayer($j); if ($l->type != 3 && $l->type != 4) { $nclass = $l->numclasses; for ($i = 0; $i < $nclass; $i++) { $classe = $l->getclass($i); if ($classe->title === "") { $classe->title = $classe->name; } } } } $objImagemLegenda = @$mapa->drawLegend(); if (!$objImagem) { $error = ""; $erro = ""; $error = ms_GetErrorObj(); while ($error && $error->code != MS_NOERR) { $erro .= "<br>Error in %s: %s<br>"; $erro .= "<br>" . $error->routine; $erro .= "<br>" . $error->message; $error = $error->next(); } return array("imgMapa" => "", "imgLegenda" => "", "tempo" => microtime(true) - $tempo, "erro" => $erro); } if ($objImagem->imagepath == "") { return array("imgMapa" => "", "imgLegenda" => "", "tempo" => microtime(true) - $tempo, "erro" => "Erro IMAGEPATH vazio"); } $nomec = $objImagem->imagepath . nomeRandomico() . "teste.png"; $objImagem->saveImage($nomec); $nomel = $objImagemLegenda->imagepath . nomeRandomico() . "testel.png"; $objImagemLegenda->saveImage($nomel); $erro = ""; $error = ""; $error = ms_GetErrorObj(); while ($error && $error->code != MS_NOERR) { $erro .= "<br>Error in %s: %s<br>"; $erro .= "<br>" . $error->routine; $erro .= "<br>" . $error->message; $error = $error->next(); } return array("imgMapa" => $objImagem->imageurl . basename($nomec), "imgLegenda" => $objImagemLegenda->imageurl . basename($nomel), "tempo" => microtime(true) - $tempo, "erro" => $erro); }
$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); cloneInlineSymbol($layern, $nmapa, $mapa); ms_newLayerObj($mapa, $layern); } //aplica a extensao geografica $layer = $mapa->getlayerbyname($tema); $extatual = $mapa->extent; $ret = ""; if (isset($mapext)) { $ret = str_replace(",", " ", $mapext); } else { $ret = $layer->getmetadata("extensao"); } if ($ret != "") { $ret = explode(" ", $ret); $extatual->setextent($ret[0], $ret[1], $ret[2], $ret[3]);