extent->minx." ".$mapdefault->extent->miny." ".$mapdefault->extent->maxx." ".$mapdefault->extent->maxy;} if (!isset ($map_reference_image)) //arquivo com a imagem de referência {$map_reference_image = $mapdefault->reference->image;} if (!isset ($map_reference_extent)) //extensão geográfica da imagem do mapa de referência {$map_reference_extent = $mapdefault->reference->extent->minx." ".$mapdefault->reference->extent->miny." ".$mapdefault->reference->extent->maxx." ".$mapdefault->reference->extent->maxy;} if (!isset($interface)) {$interface = "geral.htm";} // //cria os diretórios temporários // $diretorios = criaDirMapa($dir_tmp); $_SESSION["mapdir"] = $diretorios[1]; $_SESSION["imgdir"] = $diretorios[2]; // //cria arquivos para impedir a leitura dos diretórios temporários // criaIndex(); // //cria os objetos map // ms_ResetErrorList(); if (file_exists($base)) { $map = ms_newMapObj($base); $mapn = ms_newMapObj($base); } else { $map = ms_newMapObj($temasaplic."/".$base.".map"); $mapn = ms_newMapObj($temasaplic."/".$base.".map"); } $error = ms_GetErrorObj(); while($error && $error->code != MS_NOERR) { printf("
Error in %s: %s
\n", $error->routine, $error->message); $error = $error->next(); } ms_ResetErrorList(); // //verifica a lista de temas da inicializacao, adicionando-os se necessário // incluiTemasIniciais(); // //verifica erros // $error = ms_GetErrorObj(); while($error && $error->code != MS_NOERR) { printf("
Error in %s: %s
\n", $error->routine, $error->message); $error = $error->next(); } ms_ResetErrorList(); // //liga os temas definidos em $layers // ligaTemas(); // //verifica erros // $error = ms_GetErrorObj(); while($error && $error->code != MS_NOERR) { printf("
Error in %s: %s
\n", $error->routine, $error->message); $error = $error->next(); } ms_ResetErrorList(); // //aplica ao mapa os parâmetros passados pela URL // 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]);} } $error = ms_GetErrorObj(); while($error && $error->code != MS_NOERR) { printf("
Error in %s: %s
\n", $error->routine, $error->message); $error = $error->next(); } ms_ResetErrorList(); // //configura os endereços corretos // $protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']); $w = $mapn->web; $atual = $w->imagepath; $w->set("imagepath",$atual.$diretorios[2]."/"); $atual = $w->imageurl; $w->set("imageurl",$atual.$diretorios[2]."/"); $salvo = $mapn->save($diretorios[0]); $_SESSION["imgurl"] = $protocolo[0]."://".$_SERVER['HTTP_HOST'].$atual.$diretorios[2]."/"; $_SESSION["tmpurl"] = $protocolo[0]."://".$_SERVER['HTTP_HOST'].$atual; // //faz o include de um programa se tiver sido passado pela URL // $tmpfname = $diretorios[0]; $_SESSION["map_file"] = $diretorios[0]; $_SESSION["mapext"] = $mapext; if (isset($executa)) { if (file_exists($executa)) {include ($executa);} if (function_exists($executa)) {eval($executa."();");} } $error = ms_GetErrorObj(); while($error && $error->code != MS_NOERR) { printf("
Error in %s: %s
\n", $error->routine, $error->message); $error = $error->next(); } ms_ResetErrorList(); // //inclui pontos via url // if (isset($pontos)) {inserePontosUrl();} $error = ms_GetErrorObj(); while($error && $error->code != MS_NOERR) { printf("
Error in %s: %s
\n", $error->routine, $error->message); $error = $error->next(); } ms_ResetErrorList(); // //inclui linhas via url // if (isset($linhas)) {insereLinhasUrl();} $error = ms_GetErrorObj(); while($error && $error->code != MS_NOERR) { printf("
Error in %s: %s
\n", $error->routine, $error->message); $error = $error->next(); } ms_ResetErrorList(); // //inclui pontos via url // if (isset($poligonos)) {inserePoligonosUrl();} $error = ms_GetErrorObj(); while($error && $error->code != MS_NOERR) { printf("
Error in %s: %s
\n", $error->routine, $error->message); $error = $error->next(); } ms_ResetErrorList(); // //se vc quiser parar o script aqui, para verificar erros, descomente a linha abaixo // //exit; // //verifica os dados de cada layer // $mapa = ms_newMapObj($tmpfname); $path = $mapa->shapepath; for($i=0;$i<($mapa->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);} } $mapa->save($tmpfname); // //obtem o IP do usuário e registra no banco de dados //essa função pode ser comentada sem prejuízos ao funcionamento do I3Geo require_once($caminho."ms_registraip.php"); // // gera a url para abrir o mapa // interface = arquivo html que será aberto // if ($interface != "mashup") { if (count(explode(".php",$interface)) > 1) { if (file_exists($caminho."aplicmap/".$interface)) {include_once($caminho."aplicmap/".$interface);} else {include_once($interface);} exit; } else { if (file_exists($caminho."aplicmap/".$interface)) {$urln = $caminho."aplicmap/".$interface."?".session_id();} else {$urln = $interface."?".session_id();} //header("Location:".$urln); echo ""; } } ////////////////////////////////////////////////////////////////////////////// //funções ///////////////////////////////////////////////////////////////////////////// function ligaTemas() { global $layers,$mapn; if (isset($layers)) { $layers = str_replace(','," ",$layers); $lista = explode(" ", $layers); foreach ($lista as $l) { $arqt = trim($l); if ($l == "") {continue;} if(@$mapn->getLayerByName($l)) {$layern = $mapn->getLayerByName($l);$layern->set("status",MS_DEFAULT);} } } } function incluiTemasIniciais() { global $temasa,$estadosl,$temasaplic,$temasdir,$mapn; if (!isset($temasa)){$temasa = $estadosl;} $temasa = str_replace(','," ",$temasa); $alayers = explode(" ",$temasa); foreach ($alayers as $arqt) { $arqtemp = ""; $arqt = trim($arqt); if ($arqt == "") {continue;} if (file_exists($arqt)) {$arqtemp = $arqt;} if ((strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) && (file_exists($temasaplic."\\".$arqt.".map"))) {$arqtemp = $temasaplic."\\".$arqt.".map";} elseif (file_exists($temasaplic."/".$arqt.".map")) {$arqtemp = $temasaplic."/".$arqt.".map";} if ((strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) && (file_exists($temasdir."\\".$arqt.".map"))) {$arqtemp = $temasdir."\\".$arqt.".map";} elseif (file_exists($temasdir."/".$arqt.".map")) {$arqtemp = $temasdir."/".$arqt.".map";} if ($arqtemp == "") {echo "
Impossível acessar tema $arqtemp";} else { if (!@ms_newMapObj($arqtemp)) {echo "
Problemas com a camada $arqtemp
";} else { $maptemp = @ms_newMapObj($arqtemp); for($i=0;$i<($maptemp->numlayers);$i++) { $layern = $maptemp->getLayer($i); $layern->setmetadata("NOMEORIGINAL",$layern->name); if ($layern->name == "estadosl") {$layern->set("data",$temasaplic."/dados/estados.shp");} ms_newLayerObj(&$mapn, $layern); } } } } } function criaIndex() { global $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; } } function mostraAguarde() { global $interface,$caminho,$mensagemInicia; if (!isset($interface)) { echo ""; echo '
'; echo '

'.$mensagemInicia.'
Aguarde...criando o mapa

'; echo "


"; echo "


"; echo "
"; echo ''; } } function inserePontosUrl() { global $pontos,$nometemapontos,$dir_tmp,$imgdir,$tmpfname,$locaplic; require_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."/pontosins"; // cria o dbf $def = array(); $items = array("COORD"); foreach ($items as $ni) {$def[] = array($ni,"C","254");} xbase_create($nomeshp.".dbf", $def); $dbname = $nomeshp.".dbf"; $db=xbase_open($dbname,2); $novoshpf = ms_newShapefileObj($nomeshp, $tipol); $pontos = explode(" ",trim($pontos)); 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); $layer->setmetadata("tema",$nometemapontos); $layer->setmetadata("classe","sim"); $layer->set("type",MS_LAYER_POINT); $layer->set("status",MS_DEFAULT); $classe = ms_newClassObj($layer); $estilo = ms_newStyleObj($classe); $estilo->set("symbolname","ponto"); $estilo->set("size",6); $cor = $estilo->color; $cor->setRGB(255,0,0); $salvo = $mapa->save($tmpfname); } // //as linhas devem ter os pontos separados por espaços e cada linha separada por vírgula // function insereLinhasUrl() { global $linhas,$nometemalinhas,$dir_tmp,$imgdir,$tmpfname,$locaplic; require_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."/linhains"; // cria o dbf $def = array(); $items = array("COORD"); foreach ($items as $ni) {$def[] = array($ni,"C","254");} xbase_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($tipol); $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); $layer->setmetadata("tema",$nometemalinhas); $layer->setmetadata("classe","sim"); $layer->set("type",MS_LAYER_LINE); $layer->set("status",MS_DEFAULT); $classe = ms_newClassObj($layer); $estilo = ms_newStyleObj($classe); $estilo->set("symbolname","linha"); $estilo->set("size",3); $cor = $estilo->color; $cor->setRGB(255,0,0); $salvo = $mapa->save($tmpfname); } // //os polígonos devem ter os pontos separados por espaços e cada polígono separado por vírgula // function inserePoligonosUrl() { global $poligonos,$nometemapoligonos,$dir_tmp,$imgdir,$tmpfname,$locaplic; require_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."/poligonosins"; // cria o dbf $def = array(); $items = array("COORD"); foreach ($items as $ni) {$def[] = array($ni,"C","254");} xbase_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($tipol); $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); $layer->setmetadata("tema",$nometemapoligonos); $layer->setmetadata("classe","sim"); $layer->set("type",MS_LAYER_POLYGON); $layer->set("transparency","50"); $layer->set("status",MS_DEFAULT); $classe = ms_newClassObj($layer); $estilo = ms_newStyleObj($classe); //$estilo->set("symbolname","linha"); //$estilo->set("size",3); $cor = $estilo->color; $cor->setRGB(255,0,0); $salvo = $mapa->save($tmpfname); } ?>