';
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."/pontosins";
// 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."/linhains";
// 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($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.".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 = 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 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."/poligonosins";
// 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($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.".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=""){
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];
}
$dataView = $gm->getViewData($gvsigview);
$numlayers = $mapn->numlayers;
for ($i=0;$i < $numlayers;$i++)
{
$layer = $mapn->getlayer($i);
$layer->set("status",MS_DELETE);
}
$next = $dataView["extent"];
$ext = $mapn->extent;
$ext->setextent($next[0],$next[1],$next[2],$next[3]);
$mapn = $gm->addLayers($mapn,$gvsigview,$dataView["layerNames"]);
}
/*
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();
}
/*
Function: criaDirMapa
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(!file_exists($dir_tmp)){
@mkdir ($dir_tmp,0777);
}
if(file_exists($dir_tmp))
{
$tmpdirname = nomeRandomico();
$crdir = @mkdir ($dir_tmp."/".$tmpdirname,0777);
$crdiri = @mkdir ($dir_tmp."/img".$tmpdirname,0777);
$mapfile = $dir_tmp."/".$tmpdirname."/".$tmpdirname.".map";
$tmpimgname = "img".$tmpdirname;
@mkdir($dir_tmp."/comum",0777);
if($cachedir == ""){
@mkdir($dir_tmp."/cache",0777);
@mkdir($dir_tmp."/cache/googlemaps",0777);
}
else{
@mkdir($cachedir,0777);
@mkdir($cachedir."/googlemaps",0777);
}
if(file_exists($dir_tmp."/".$tmpdirname))
return array($mapfile,$tmpdirname,$tmpimgname);
else
{return false;}
}
else
{return false;}
}
?>