getlayerbyname($tema); if (!empty($postgis_mapa)){ if ($l->connectiontype == MS_POSTGIS){ $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); $data = pegaDadosJ(); if($format == "storymap"){ //parametros via URL $layer = $oMap->getlayerbyname($tema); if($layer == ""){ echo "Layer nao encontrado"; exit; } $storymap = $layer->getmetadata("storymap"); if($storymap == ""){ echo "Parametros nao definidos no METADATA storymap"; exit; } $storymap = json_decode($storymap,true); $cabecalho = converteenc($storymap["cabecalho"]); $texto = converteenc($storymap["texto"]); $coltexto = $storymap["coltexto"]; $colcabecalho = $storymap["colcabecalho"]; $collocal = $storymap["collocal"]; $colicone = $storymap["colicone"]; $collon = $storymap["collon"]; $collat = $storymap["collat"]; $colmedia = $storymap["colmedia"]; $par = array( "cabecalho"=>$cabecalho, "texto"=>$texto, "coltexto"=>$coltexto, "colcabecalho"=>$colcabecalho, "collocal"=>$collocal, "colicone"=>$colicone, "collon"=>$collon, "collat"=>$collat, "colmedia"=>$colmedia ); storymap($par); exit; } //echo "
".var_dump ($data);
function storymap($par){
global $data, $nomeArq;
$items = $data["items"];
$colunaTexto = array_search($par["coltexto"],$items);
$colcabecalho = array_search($par["colcabecalho"],$items);
$nomeLocal = array_search($par["collocal"],$items);
$colunaIcone = "";
$colunaLon = array_search($par["collon"],$items);
$colunaLat = array_search($par["collat"],$items);
if(empty($par["colmedia"])){
$colmedia = "";
}else{
$colmedia = array_search($par["colmedia"],$items);
}
$dados = $data["features"];
$slides = array();
if(!empty($par["cabecalho"]) || !empty($par["texto"])){
$slides[] = array(
"type"=>"overview",
"text"=>array(
"text"=>$par["texto"],
"headline"=>$par["cabecalho"]
)
);
}
foreach($dados as $dd){
$d = $dd["valores"];
$icone = "http://maps.gstatic.com/intl/en_us/mapfiles/ms/micons/blue-pushpin.png";
if(!empty($d[$par["colicone"]])){
$icone = $d[$par["colicone"]];
}
$slide = array(
"text"=>array(
"text"=>$d[$colunaTexto],
"headline"=>$d[$colcabecalho]
),
"location"=>array(
"name" => $d[$nomeLocal],
"lon" => $d[$colunaLon]*1,
//"zoom" => 10,
"lat" => $d[$colunaLat]*1,
"line" => false,
"icon" => $icone
)
);
if(!empty($d[$colmedia])){
$slide["media"] = array(
"url"=>$d[$colmedia]
);
}
//var_dump($slide);exit;
$slides[] = $slide;
}
$storymap = array("slides"=>$slides);
$j = array(
"storymap"=>$storymap
);
//echo "";var_dump($j);exit;
$contents = json_encode($j);
//var_dump($contents);exit;
file_put_contents($nomeArq.".json",$contents);
//envia para download
ob_clean();
header("Content-type: application/json");
echo $contents;
}
function ogc_imprimeAjuda(){
echo "Construtor de web services do I3Geo.
";
echo "Esse programa usa os arquivos mapfiles existentes em
";
echo "i3geo/temas para gerar web services OGC.
";
echo "Para escolher um tema, utilize:
";
echo "ogc.php?lista=temas - para listar os temas disponíveis
";
echo "Para usar esse web service voce pode usar o parametro &tema=,
";
echo "ou seja,http://[host]/i3geo/ogc.php?tema=[codigo do tema]
";
echo "no lugar do codigo pode ser especificado um arquivo mapfile qualquer. ";
echo "Nesse caso, deve ser digitado o caminho completo no servidor
";
echo "Utilize o sistema de administracao do i3Geo para configurar quais os temas da pasta i3geo/temas podem ser utilizados.
";
echo "Utilize o parametro restauramapa para indicar o ID de um mapa salvo no banco
";
echo "de dados de administracao para utiliza-lo como um WMS";
}
function nomeRand($n=10)
{
$nomes = "";
$a = 'azertyuiopqsdfghjklmwxcvbnABCDEFGHIJKLMNOPQRSTUVWXYZ';
$max = 51;
for($i=0; $i < $n; ++$i)
{
$nomes .= $a{mt_rand(0, $max)};
}
return $nomes;
}
function carregaCacheArquivo(){
global $nomeArq;
if(file_exists($nomeArq.".json")){
header("Content-type: application/json");
readfile($nomeArq.".json");
exit;
}
}
function pegaDadosJ(){
global $oMap, $tema, $versao;
$layer = $oMap->getlayerbyname($tema);
$items = pegaItens($layer,$oMap);
$layer->querybyrect($oMap->extent);
$layer->open();
$res_count = $layer->getNumresults();
$linhas = array();
for ($i = 0; $i < $res_count; $i++){
if($versao == 6){
$shape = $layer->getShape($layer->getResult($i));
}
else{
$shape = $layer->getFeature($layer->getResult($i)->shapeindex);
}
$valores = array();
foreach ($items as $item){
$v = trim($shape->values[$item]);
if(is_string($v)){
$v = converteenc($v);
}
$valores[] = $v;
}
$linhas[] = array(
"valores"=>$valores,
"shape"=>$shape
);
}
$resultado = array(
"items"=>$items,
"features"=>$linhas
);
return $resultado;
}
function converteenc($texto){
if (!mb_detect_encoding($texto,"UTF-8",true)){
$texto = mb_convert_encoding($texto,"UTF-8","ISO-8859-1");
}
return $texto;
}
?>