From e157b68852e3de407cf8f533f8286cd685a0bbda Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Thu, 21 May 2015 19:36:21 +0000 Subject: [PATCH] --- ogc.htm | 2 ++ ogc.php | 953 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 2 files changed, 480 insertions(+), 475 deletions(-) diff --git a/ogc.htm b/ogc.htm index a6a2e8f..72232c7 100644 --- a/ogc.htm +++ b/ogc.htm @@ -201,6 +201,8 @@ A:hover { ins += "

download CSV via WFS"; ins += + "

download CSV via WFS mas sem a geometria"; + ins += "

download KMZ"; ins += "

GeoJson"; diff --git a/ogc.php b/ogc.php index 68b0db0..703408c 100644 --- a/ogc.php +++ b/ogc.php @@ -1,4 +1,4 @@ -_filter= - -Exemplo de filtro - -http://localhost/i3geo/ogc.php?map_layer__lbiomashp_filter=(('[CD_LEGENDA]'='CAATINGA'))&tema=_lbiomashp&SRS=EPSG:4618&WIDTH=500&HEIGHT=500&BBOX=-76.5125927,-39.3925675209,-29.5851853,9.49014852081&FORMAT=image/png&service=wms&version=1.1.0&request=getmap&layers=_lbiomashp - -no caso de camadas Postgis basta usar map_layer__lbiomashp_filter=cd_legenda='CAATINGA' + +DESLIGACACHE (opcional) {sim|nao} - forca a nao usar o cache de imagens qd definido como "sim", do contrário, o uso ou não do cache será definido automaticamente + +filtros - filtros podem ser adicionados incluindo o parametro da seguinte forma: &map_layer__filter= + +Exemplo de filtro + +http://localhost/i3geo/ogc.php?map_layer__lbiomashp_filter=(('[CD_LEGENDA]'='CAATINGA'))&tema=_lbiomashp&SRS=EPSG:4618&WIDTH=500&HEIGHT=500&BBOX=-76.5125927,-39.3925675209,-29.5851853,9.49014852081&FORMAT=image/png&service=wms&version=1.1.0&request=getmap&layers=_lbiomashp + +no caso de camadas Postgis basta usar map_layer__lbiomashp_filter=cd_legenda='CAATINGA' Exemplos: - -ogc.php?temas=biomashp&format=application/openlayers&bbox=-54,-14,-50,-10 + +ogc.php?temas=biomashp&format=application/openlayers&bbox=-54,-14,-50,-10 ogc.php?lista=temas @@ -75,39 +76,38 @@ ogc.php?tema=bioma ogc.php?tema=/var/www/i3geo/aplicmap/geral1debianv6.map&layers=mundo -ogc.php?intervalo=0,50 */ -$_GET = array_merge($_GET,$_POST); +$_GET = array_merge($_GET,$_POST); // //caso nenhum parametros tenha sido enviado // if(count($_GET) == 0){ $tipo="metadados"; - $_GET["REQUEST"] = "getCapabilities"; + $_GET["REQUEST"] = "getCapabilities"; $_GET["request"] = "getCapabilities"; $_GET["SERVICE"] = "WMS"; -} +} // //compatibiliza chamadas fora do padrao // if(isset($_GET["outputFormat"]) && $_GET["outputFormat"] != ""){ $_GET["OUTPUTFORMAT"] = $_GET["outputFormat"]; -} +} if(isset($_GET["outputformat"]) && $_GET["outputformat"] != ""){ $_GET["OUTPUTFORMAT"] = $_GET["outputformat"]; } $cache = true; //require_once(dirname(__FILE__)."/classesphp/carrega_ext.php"); include(dirname(__FILE__)."/ms_configura.php"); -include(dirname(__FILE__)."/classesphp/pega_variaveis.php"); -include(dirname(__FILE__)."/classesphp/funcoes_gerais.php"); +include(dirname(__FILE__)."/classesphp/pega_variaveis.php"); +include(dirname(__FILE__)."/classesphp/funcoes_gerais.php"); // //imprime na tela a ajuda // if(isset($ajuda)){ ogc_imprimeAjuda(); exit; -} +} // //pega os enderecos para compor a url de chamada do gerador de web services // @@ -115,35 +115,35 @@ $protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']); $protocolo = $protocolo[0]; $protocolo1 = strtolower($protocolo) . '://'.$_SERVER['SERVER_NAME']; $protocolo = strtolower($protocolo) . '://'.$_SERVER['SERVER_NAME'] .":". $_SERVER['SERVER_PORT']; -$urli3geo = str_replace("/ogc.php","",$protocolo.$_SERVER["PHP_SELF"]); +$urli3geo = str_replace("/ogc.php","",$protocolo.$_SERVER["PHP_SELF"]); // //imprime na tela a lista de temas disponiveis // if(isset($lista) && $lista != ""){ include_once(dirname(__FILE__)."/classesphp/classe_menutemas.php"); - if($lista == "temas"){ - ogc_imprimeListaDeTemas(); - } + if($lista == "temas"){ + ogc_imprimeListaDeTemas(); + } if($lista == "temaswfs"){ ogc_imprimeListaDeTemasWfs(); } exit; -} +} // //define um nome para o mapfile caso a origem seja o sistema de metadados estatisticos // if(isset($id_medida_variavel) && $id_medida_variavel != ""){ $tema = "ogcmetaestat".$id_medida_variavel; -} -// -//compatibiliza variaveis -// +} +// +//compatibiliza variaveis +// if(!isset($tema) && isset($layers)){ $tema = $layers; -} +} if(!isset($tema) && isset($LAYERS)){ $tema = $LAYERS; -} +} if(!isset($tema) && isset($temas)){ $tema = $temas; } @@ -152,27 +152,27 @@ if(isset($typeName)){ } if(!isset($tema) && isset($typename)){ $tema = $typename; -} -// -//garante que layers possam ser especificados de diferentes maneiras -// +} +// +//garante que layers possam ser especificados de diferentes maneiras +// $_GET["layers"] = $tema; -$_GET["LAYERS"] = $tema; -$layers = $tema; -// -//verifica o OUTPUTFORMAT e o cache de arquivo -// -if(!empty($OUTPUTFORMAT)){ - carregaCacheArquivo(); -} -// -//para o caso da requisicao kml +$_GET["LAYERS"] = $tema; +$layers = $tema; +// +//verifica o OUTPUTFORMAT e o cache de arquivo +// +if(!empty($OUTPUTFORMAT)){ + carregaCacheArquivo(); +} +// +//para o caso da requisicao kml // if(strtolower($OUTPUTFORMAT) == "kml" || strtolower($OUTPUTFORMAT) == "kmz"){ $urln = "pacotes/kmlmapserver/kmlservice.php?request=kmz&map=".$tema."&typename=".$tema; header("Location:".$urln); exit; -} +} // //usa o epsg correto ao inves do apelido inventado pelo Google // @@ -183,31 +183,31 @@ if($_GET["SRS"] == "EPSG:900913" || $_GET["srs"] == "EPSG:900913"){ if(!isset($_GET["srs"]) && !isset($_GET["SRS"])){ $_GET["srs"] = "EPSG:4326"; $_GET["SRS"] = "EPSG:4326"; -} -// -//trata geojson da mesma forma que json -// +} +// +//trata geojson da mesma forma que json +// if(strtolower($OUTPUTFORMAT) == "geojson"){ $OUTPUTFORMAT = "json"; -} +} // //recupera um mapa salvo no banco de administracao // if(!empty($restauramapa)){ - restauraMapaSalvo(); -} + restauraMapaSalvo(); +} // //para operar como o Geoserver, abre o openlayers // if(isset($format) && strtolower($format) == "application/openlayers"){ $urln = dirname($_SERVER["PHP_SELF"])."/mashups/openlayers.php?layers=".$layers."&mapext=".$bbox."&botoes=pan,zoombox,zoomtot,identifica"; - //echo $urln;exit; - if(!headers_sent()){ - header("Location:".$urln); + //echo $urln;exit; + if(!headers_sent()){ + header("Location:".$urln); + } + else{ + echo ""; } - else{ - echo ""; - } //exit.... } // @@ -215,16 +215,16 @@ if(isset($format) && strtolower($format) == "application/openlayers"){ // error_reporting(0); $versao = versao(); -$versao = $versao["principal"]; +$versao = $versao["principal"]; -$req = ms_newowsrequestobj(); +$req = ms_newowsrequestobj(); $tipo = ""; if(isset($_GET["sld"]) || isset($_GET["filter"])){ $cache = false; -} -// -//inclui todos os parametros na requisicao e aproveita para verificar getcapabilities +} +// +//inclui todos os parametros na requisicao e aproveita para verificar getcapabilities // foreach ($_GET as $k=>$v){ $req->setParameter(strtoupper($k), $v); @@ -232,54 +232,54 @@ foreach ($_GET as $k=>$v){ $tipo = "metadados"; $cache = false; } -} -// -//cria uma lista de epsgs para o getcapabilities -// -$req->setParameter("srsName",$req->getValueByName("SRS")); +} +// +//cria uma lista de epsgs para o getcapabilities +// +$req->setParameter("srsName",$req->getValueByName("SRS")); $listaepsg = $req->getValueByName("SRS")." EPSG:4618 EPSG:4291 EPSG:4326 EPSG:22521 EPSG:22522 EPSG:22523 EPSG:22524 EPSG:22525 EPSG:29101 EPSG:29119 EPSG:29120 EPSG:29121 EPSG:29122 EPSG:29177 EPSG:29178 EPSG:29179 EPSG:29180 EPSG:29181 EPSG:29182 EPSG:29183 EPSG:29184 EPSG:29185"; -if(isset($version) && !isset($VERSION)){ - $VERSION = $version; +if(isset($version) && !isset($VERSION)){ + $VERSION = $version; } if(!isset($VERSION)){ - $req->setParameter("VeRsIoN","1.1.1"); -} -// -//nome do mapfile que ficara em cache -// -$agora = intval(time() / 1000); -//acrescenta ao nome a indicacao do tipo de TMS + $req->setParameter("VeRsIoN","1.1.1"); +} +// +//nome do mapfile que ficara em cache +// +$agora = intval(time() / 1000); +//acrescenta ao nome a indicacao do tipo de TMS if(isset($_GET["tms"])){ $agora .= "tms"; -} -if(isset($_GET["Z"]) && isset($_GET["X"])){ - $agora .= "google"; -} -// -//se o outputformat for definido, evita o cahce de arquivo -//o mesmo se existir filtro para o layer -// -if(isset($_GET["OUTPUTFORMAT"]) || !empty($_GET["map_layer_".$tema."_filter"])){ - $_GET["DESLIGACACHE"] = "sim"; -} -if(isset($_GET["DESLIGACACHE"]) && $_GET["DESLIGACACHE"] == "sim"){ - $agora = time(); - $cache = false; -} -$nomeMapfileTmp = $dir_tmp."/ogc_".md5(implode("",$_GET))."_".$agora.".map"; -//essa variavel e usada para definir se a imagem final gerada devera ser cortada ou nao -$cortePixels = 0; -if(file_exists($nomeMapfileTmp) && $tipo == ""){ - $oMap = ms_newMapobj($nomeMapfileTmp); -} -else{ +} +if(isset($_GET["Z"]) && isset($_GET["X"])){ + $agora .= "google"; +} +// +//se o outputformat for definido, evita o cahce de arquivo +//o mesmo se existir filtro para o layer +// +if(isset($_GET["OUTPUTFORMAT"]) || !empty($_GET["map_layer_".$tema."_filter"])){ + $_GET["DESLIGACACHE"] = "sim"; +} +if(isset($_GET["DESLIGACACHE"]) && $_GET["DESLIGACACHE"] == "sim"){ + $agora = time(); + $cache = false; +} +$nomeMapfileTmp = $dir_tmp."/ogc_".md5(implode("",$_GET))."_".$agora.".map"; +//essa variavel e usada para definir se a imagem final gerada devera ser cortada ou nao +$cortePixels = 0; +if(file_exists($nomeMapfileTmp) && $tipo == ""){ + $oMap = ms_newMapobj($nomeMapfileTmp); +} +else{ if(empty($ogcwsmap)){ $oMap = ms_newMapobj($locaplic."/aplicmap/ogcwsv".$versao.".map"); } else{ $oMap = ms_newMapobj($ogcwsmap); - } + } $proto = "http" . ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "s" : "") . "://"; $server = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME']; $or = $urli3geo."/ogc.php"; @@ -299,15 +299,15 @@ else{ $oMap->setmetadata("wms_attribution_logourl_href",$urli3geo."/imagens/i3geo.png"); $oMap->setmetadata("wms_attribution_onlineresource",$urli3geo); $oMap->setmetadata("wms_attribution_title",$tituloInstituicao); - $oMap->setmetadata("ows_enable_request","*"); - //parametro mandatario - if($oMap->getmetadata("wms_srs") == ""){ - $oMap->setmetadata("wms_srs","EPSG:4326"); + $oMap->setmetadata("ows_enable_request","*"); + //parametro mandatario + if($oMap->getmetadata("wms_srs") == ""){ + $oMap->setmetadata("wms_srs","EPSG:4326"); } $e = $oMap->extent; - $extensaoMap = ($e->minx)." ".($e->miny)." ".($e->maxx)." ".($e->maxy); + $extensaoMap = ($e->minx)." ".($e->miny)." ".($e->maxx)." ".($e->maxy); //gera o mapa - if ($tema != ""){ + if ($tema != ""){ $listatema = explode(" ",$tema); //para o caso do tema ser um arquivo mapfile existente em uma pasta qualquer //$temai3geo = true indica que o layer será buscado na pasta i3geo/temas @@ -319,7 +319,7 @@ else{ $nmap->setmetadata("ows_enable_request","*"); } foreach ($listatema as $tx){ - $extensao = ".map"; + $extensao = ".map"; if($temai3geo == true && file_exists($locaplic."/temas/".$tx.".php")){ $extensao = ".php"; } @@ -328,15 +328,15 @@ else{ } if($extensao == ".map"){ //cria o mapfile com base no sistema de metadados estatisticos - //verifica se o id_medida_variavel existe no mapfile e nao foi passado como um parametro - if(!isset($id_medida_variavel) && $temai3geo == true){ - $nmap = ms_newMapobj($locaplic."/temas/".$tx.".map"); - $l = $nmap->getlayer(0); - $teste = $l->getmetadata("METAESTAT_ID_MEDIDA_VARIAVEL"); - if($teste != "" && $l->data == ""){ - $id_medida_variavel = $teste; - } - } + //verifica se o id_medida_variavel existe no mapfile e nao foi passado como um parametro + if(!isset($id_medida_variavel) && $temai3geo == true){ + $nmap = ms_newMapobj($locaplic."/temas/".$tx.".map"); + $l = $nmap->getlayer(0); + $teste = $l->getmetadata("METAESTAT_ID_MEDIDA_VARIAVEL"); + if($teste != "" && $l->data == ""){ + $id_medida_variavel = $teste; + } + } if(isset($id_medida_variavel)){ $temai3geo = false; include("admin/php/classe_metaestat.php"); @@ -346,32 +346,32 @@ else{ $nmap = ms_newMapobj($mapfileMetaestat["mapfile"]); $nmap->setmetadata("ows_enable_request","*"); $req->setParameter("LAYERS", "ogcmetaestat".$id_medida_variavel); - } + } if($temai3geo == true){ $nmap = ms_newMapobj($locaplic."/temas/".$tx.".map"); $nmap->setmetadata("ows_enable_request","*"); } - if($temai3geo == false || empty($layers)){ - $ts = $nmap->getalllayernames(); - $nmap->setmetadata("ows_enable_request","*"); + if($temai3geo == false || empty($layers)){ + $ts = $nmap->getalllayernames(); + $nmap->setmetadata("ows_enable_request","*"); } else{ $ts = explode(",",str_replace(" ",",",$layers)); } - foreach ($ts as $t){ + foreach ($ts as $t){ $l = $nmap->getlayerbyname($t); - $permite = $l->getmetadata("permiteogc"); + $permite = $l->getmetadata("permiteogc"); if(strtolower($permite) != "nao"){ //necessário pq o mapfile pode ter todos os layers como default if($temai3geo == false){ $l->set("status",MS_OFF); - } + } /* if($cache == true && strtolower($l->getmetadata('cache')) == 'sim' && $tipo == '' && count($tema) == 1){ carregaCacheImagem($_GET['BBOX'],$tx,$_GET['WIDTH'],$_GET['HEIGHT'],$cachedir); - } + } */ - $l->setmetadata("ows_title",pegaNome($l)); + $l->setmetadata("ows_title",pegaNome($l)); $l->setmetadata("ows_srs",$listaepsg); $l->set("group",""); //essa linha é necessária pq as vezes no mapfile não tem nenhum layer com o nome igual ao nome do mapfile @@ -382,7 +382,7 @@ else{ $l->set("template","none.htm"); $l->set("dump",MS_TRUE); $l->setmetadata("WMS_INCLUDE_ITEMS","all"); - $l->setmetadata("WFS_INCLUDE_ITEMS","all"); + $l->setmetadata("WFS_INCLUDE_ITEMS","all"); if(file_exists($locaplic."/temas/miniaturas/".$t.".map.mini.png")){ $mini = $proto.$server.dirname($_SERVER['PHP_SELF'])."/temas/miniaturas/".$t.".map.mini.png"; @@ -393,8 +393,8 @@ else{ } if($l->type == MS_LAYER_RASTER && $l->numclasses > 0){ $c = $l->getclass(0); - if($c->name == ""){ - $c->name = " "; + if($c->name == ""){ + $c->name = " "; } } //inclui extensao geografica @@ -423,26 +423,26 @@ else{ } autoClasses($l,$oMap); if($versao > 5){ - $pr = $l->getProcessing(); - if(!in_array("LABEL_NO_CLIP=True",$pr)){ - $l->setprocessing("LABEL_NO_CLIP=True"); - } - if(!in_array("POLYLINE_NO_CLIP=True",$pr)){ - $l->setprocessing("POLYLINE_NO_CLIP=True"); - } - } - // - //verifica se existem parametros de substituicao passados via url - // - $parametro = $_GET["map_layer_".$l->name."_filter"]; - //echo $parametro;exit; - if(!empty($parametro)){ - $l->setfilter($parametro); - $cache = false; - } + $pr = $l->getProcessing(); + if(!in_array("LABEL_NO_CLIP=True",$pr)){ + $l->setprocessing("LABEL_NO_CLIP=True"); + } + if(!in_array("POLYLINE_NO_CLIP=True",$pr)){ + $l->setprocessing("POLYLINE_NO_CLIP=True"); + } + } + // + //verifica se existem parametros de substituicao passados via url + // + $parametro = $_GET["map_layer_".$l->name."_filter"]; + //echo $parametro;exit; + if(!empty($parametro)){ + $l->setfilter($parametro); + $cache = false; + } - ms_newLayerObj($oMap, $l); - //$req->setParameter("LAYERS", "mundo"); + ms_newLayerObj($oMap, $l); + //$req->setParameter("LAYERS", "mundo"); } } } @@ -454,10 +454,10 @@ else{ include_once($locaplic."/pacotes/gvsig/gvsig2mapfile/class.gvsig2mapfile.php"); $gm = new gvsig2mapfile($locaplic."/temas/".$tx.".gvp"); $gvsigview = $gm->getViewsNames(); - foreach($gvsigview as $gv){ + foreach($gvsigview as $gv){ $dataView = $gm->getViewData($gv); $oMap = $gm->addLayers($oMap,$gv,$dataView["layerNames"]); - } + } $numlayers = $oMap->numlayers; $lys = array(); //$layers[] = "default"; @@ -480,8 +480,8 @@ else{ } if($l->type == MS_LAYER_RASTER && $l->numclasses > 0){ $c = $l->getclass(0); - if($c->name == ""){ - $c->name = " "; + if($c->name == ""){ + $c->name = " "; } } //inclui extensao geografica @@ -489,12 +489,12 @@ else{ if($extensao == ""){ $extensao = $extensaoMap; } - $l->setmetadata("wms_extent",$extensao); - // - //numero de pixels que serao considerados para corte da imagem no caso de cache ativo e tema de pontos - // - if ($l->getmetadata("cortepixels") != ""){ - $cortePixels = $l->getmetadata("cortepixels"); + $l->setmetadata("wms_extent",$extensao); + // + //numero de pixels que serao considerados para corte da imagem no caso de cache ativo e tema de pontos + // + if ($l->getmetadata("cortepixels") != ""){ + $cortePixels = $l->getmetadata("cortepixels"); } } $req->setParameter("LAYERS", implode(",",$lys)); @@ -502,13 +502,13 @@ else{ } } } - else{ - $intervalo = "0,5000"; + else{ + $intervalo = "0,5000"; $conta = 0; $int = explode(",",$intervalo); $codigosTema = array(); - if(empty($perfil)){ - $perfil = ""; + if(empty($perfil)){ + $perfil = ""; } include("classesphp/classe_menutemas.php"); $m = new Menutemas("",$perfil,$locaplic,$urli3geo); @@ -541,8 +541,8 @@ else{ if ($oMap->getlayerbyname($t) == ""){ $l = $nmap->getlayerbyname($t); $extensao = $l->getmetadata("EXTENSAO"); - if($extensao == ""){ - $extensao = $extensaoMap; + if($extensao == ""){ + $extensao = $extensaoMap; } $l->setmetadata("wms_extent",$extensao); $l->setmetadata("ows_title",pegaNome($l)); @@ -551,25 +551,25 @@ else{ $l->setmetadata("gml_include_items","all"); $l->set("dump",MS_TRUE); $l->setmetadata("WMS_INCLUDE_ITEMS","all"); - $l->setmetadata("WFS_INCLUDE_ITEMS","all"); - if($l->getmetadata("ows_metadataurl_href") == ""){ + $l->setmetadata("WFS_INCLUDE_ITEMS","all"); + if($l->getmetadata("ows_metadataurl_href") == ""){ $l->setmetadata("ows_metadataurl_href",$c["fonte"]); $l->setmetadata("ows_metadataurl_type","TC211"); $l->setmetadata("ows_metadataurl_format","text/html"); - } + } if(file_exists($locaplic."/temas/miniaturas/".$t.".map.mini.png")){ $mini = $proto.$server.dirname($_SERVER['PHP_SELF'])."/temas/miniaturas/".$t.".map.mini.png"; $l->setmetadata("wms_attribution_logourl_format","image/png"); $l->setmetadata("wms_attribution_logourl_height","50"); $l->setmetadata("wms_attribution_logourl_width","50"); $l->setmetadata("wms_attribution_logourl_href",$mini); - } - // - //numero de pixels que serao considerados para corte da imagem no caso de cache ativo e tema de pontos - // - if ($l->getmetadata("cortepixels") != ""){ - $cortePixels = $l->getmetadata("cortepixels"); - } + } + // + //numero de pixels que serao considerados para corte da imagem no caso de cache ativo e tema de pontos + // + if ($l->getmetadata("cortepixels") != ""){ + $cortePixels = $l->getmetadata("cortepixels"); + } cloneInlineSymbol($l,$nmap,$oMap); ms_newLayerObj($oMap, $l); } @@ -584,104 +584,104 @@ else{ } } } - } - } + } + } // //a imagem do mapa recebera a legenda // if((isset($legenda)) && (strtolower($legenda) == "sim")){ $leg = $oMap->legend; $leg->set("status",MS_EMBED); - } - $oMap->setSymbolSet($locaplic."/symbols/".basename($oMap->symbolsetfilename)); - $oMap->setFontSet($locaplic."/symbols/".basename($oMap->fontsetfilename)); - // - //caso seja download ou json ou csv - // - processaOutputformatMapfile(); - - $oMap->save($nomeMapfileTmp); - $oMap = ms_newMapobj($nomeMapfileTmp); -} + } + $oMap->setSymbolSet($locaplic."/symbols/".basename($oMap->symbolsetfilename)); + $oMap->setFontSet($locaplic."/symbols/".basename($oMap->fontsetfilename)); + // + //caso seja download ou json ou csv + // + processaOutputformatMapfile(); + + $oMap->save($nomeMapfileTmp); + $oMap = ms_newMapobj($nomeMapfileTmp); +} if(ob_get_contents ()){ ob_end_clean(); -} -// -//verifica se a requisicao e do tipo TMS. -// -// -//calcula a extensao geografica com base no x,y,z em requisisoes TMS -//quando for do tipo tms $_GET["tms"] contem os parametros do tile -//essa rotina faz um exit ao final -//o cache tms so fucniona se houver apenas uma camada no mapa -//tms e usado basicamente por mashup ou openlayers -// -if(isset($_GET["tms"])){ - $temp = explode("/",$_GET["tms"]); - $z = $temp[2]; - $x = $temp[3]; - $y = str_replace(".png","",$temp[4]); - $n = pow(2,$z+1); - $lon1 = $x / $n * 360.0 - 180.0; - $lon2 = ($x+1) / $n * 360.0 - 180.0; - $n = pow(2,$z); - $lat1 = $y / $n * 180.0 - 90.0; - $lat2 = ($y+1) / $n * 180.0 - 90.0; - //essa funcao termina o processo se a imagem existir - if($cache == true){ - carregaCacheImagem($cachedir,$nomeMapfileTmp,$_GET["tms"]); - } - $layer0 = $oMap->getlayer(0); - // - //numero de pixels que serao considerados para corte da imagem no caso de cache ativo e tema de pontos - // - if ($layer0->getmetadata("cortepixels") != ""){ - $cortePixels = $layer0->getmetadata("cortepixels"); - } - //se nao existir, salva a imagem - //echo $lon1." ".$lat1." ".$lon2." ".$lat2;exit; - $oMap->setsize(256,256); - - $oMap->setExtent($lon1,$lat1,$lon2,$lat2); - - $layer0->set("status",MS_DEFAULT); - // - //se o layer foi marcado para corte altera os parametros para ampliar o mapa - //antes de gerar a imagem - // - if($cortePixels > 0){ - //$oMap->prepareImage(); - $escalaInicial = $oMap->scaledenom; - $extensaoInicial = $oMap->extent; - $wh = 256+($cortePixels*2); - $oMap->setsize($wh,$wh); - $ponto = new pointObj(); - $ponto->setxy(($wh/2),($wh/2)); - $oMap->zoomScale($escalaInicial, $ponto, $wh, $wh, $extensaoInicial); - } - $img = $oMap->draw(); - if($img->imagepath == ""){ - exit; - } - if($cache == true){ - salvaCacheImagem($cachedir,$nomeMapfileTmp,$_GET["tms"]); - } - renderNocacheTms(); -} +} +// +//verifica se a requisicao e do tipo TMS. +// +// +//calcula a extensao geografica com base no x,y,z em requisisoes TMS +//quando for do tipo tms $_GET["tms"] contem os parametros do tile +//essa rotina faz um exit ao final +//o cache tms so fucniona se houver apenas uma camada no mapa +//tms e usado basicamente por mashup ou openlayers +// +if(isset($_GET["tms"])){ + $temp = explode("/",$_GET["tms"]); + $z = $temp[2]; + $x = $temp[3]; + $y = str_replace(".png","",$temp[4]); + $n = pow(2,$z+1); + $lon1 = $x / $n * 360.0 - 180.0; + $lon2 = ($x+1) / $n * 360.0 - 180.0; + $n = pow(2,$z); + $lat1 = $y / $n * 180.0 - 90.0; + $lat2 = ($y+1) / $n * 180.0 - 90.0; + //essa funcao termina o processo se a imagem existir + if($cache == true){ + carregaCacheImagem($cachedir,$nomeMapfileTmp,$_GET["tms"]); + } + $layer0 = $oMap->getlayer(0); + // + //numero de pixels que serao considerados para corte da imagem no caso de cache ativo e tema de pontos + // + if ($layer0->getmetadata("cortepixels") != ""){ + $cortePixels = $layer0->getmetadata("cortepixels"); + } + //se nao existir, salva a imagem + //echo $lon1." ".$lat1." ".$lon2." ".$lat2;exit; + $oMap->setsize(256,256); + + $oMap->setExtent($lon1,$lat1,$lon2,$lat2); + + $layer0->set("status",MS_DEFAULT); + // + //se o layer foi marcado para corte altera os parametros para ampliar o mapa + //antes de gerar a imagem + // + if($cortePixels > 0){ + //$oMap->prepareImage(); + $escalaInicial = $oMap->scaledenom; + $extensaoInicial = $oMap->extent; + $wh = 256+($cortePixels*2); + $oMap->setsize($wh,$wh); + $ponto = new pointObj(); + $ponto->setxy(($wh/2),($wh/2)); + $oMap->zoomScale($escalaInicial, $ponto, $wh, $wh, $extensaoInicial); + } + $img = $oMap->draw(); + if($img->imagepath == ""){ + exit; + } + if($cache == true){ + salvaCacheImagem($cachedir,$nomeMapfileTmp,$_GET["tms"]); + } + renderNocacheTms(); +} // //verifica se a chamada do servico e do tipo TILE no padrao do Google // -if(isset($_GET["Z"]) && isset($_GET["X"])){ +if(isset($_GET["Z"]) && isset($_GET["X"])){ $x = $_GET["X"]; $y = $_GET["Y"]; $z = $_GET["Z"]; - $layer0 = $oMap->getlayer(0); - // - //numero de pixels que serao considerados para corte da imagem no caso de cache ativo e tema de pontos - // - if ($layer0->getmetadata("cortepixels") != ""){ - $cortePixels = $layer0->getmetadata("cortepixels"); - } + $layer0 = $oMap->getlayer(0); + // + //numero de pixels que serao considerados para corte da imagem no caso de cache ativo e tema de pontos + // + if ($layer0->getmetadata("cortepixels") != ""){ + $cortePixels = $layer0->getmetadata("cortepixels"); + } if($cache == true){ carregaCacheImagem($cachedir,$nomeMapfileTmp,"/googlemaps/$layer0->name/$z/$x/$y"); } @@ -703,40 +703,40 @@ if(isset($_GET["Z"]) && isset($_GET["X"])){ $poPoint1->project($projInObj, $projOutObj); $poPoint2 = ms_newpointobj(); $poPoint2->setXY($lon2, $lat2); - $poPoint2->project($projInObj, $projOutObj); - $oMap->setsize(256,256); + $poPoint2->project($projInObj, $projOutObj); + $oMap->setsize(256,256); $oMap->setExtent($poPoint1->x,$poPoint1->y,$poPoint2->x,$poPoint2->y); - $oMap->getlayer(0)->set("status",MS_DEFAULT); - $oMap->setProjection("proj=merc,a=6378137,b=6378137,lat_ts=0.0,lon_0=0.0,x_0=0.0,y_0=0,k=1.0,units=m"); - $layer0->setProjection("proj=latlong,a=6378137,b=6378137"); - // - //se o layer foi marcado para corte altera os parametros para ampliar o mapa - //antes de gerar a imagem - // - if($cortePixels > 0){ - //$oMap->prepareImage(); - $escalaInicial = $oMap->scaledenom; - $extensaoInicial = $oMap->extent; - $wh = 256+($cortePixels*2); - $oMap->setsize($wh,$wh); - $ponto = new pointObj(); - $ponto->setxy(($wh/2),($wh/2)); - $oMap->zoomScale($escalaInicial, $ponto, $wh, $wh, $extensaoInicial); - } + $oMap->getlayer(0)->set("status",MS_DEFAULT); + $oMap->setProjection("proj=merc,a=6378137,b=6378137,lat_ts=0.0,lon_0=0.0,x_0=0.0,y_0=0,k=1.0,units=m"); + $layer0->setProjection("proj=latlong,a=6378137,b=6378137"); + // + //se o layer foi marcado para corte altera os parametros para ampliar o mapa + //antes de gerar a imagem + // + if($cortePixels > 0){ + //$oMap->prepareImage(); + $escalaInicial = $oMap->scaledenom; + $extensaoInicial = $oMap->extent; + $wh = 256+($cortePixels*2); + $oMap->setsize($wh,$wh); + $ponto = new pointObj(); + $ponto->setxy(($wh/2),($wh/2)); + $oMap->zoomScale($escalaInicial, $ponto, $wh, $wh, $extensaoInicial); + } $img = $oMap->draw(); if($img->imagepath == ""){ exit; - } + } if($cache == true){ - salvaCacheImagem($cachedir,$nomeMapfileTmp,"/googlemaps/$layer0->name/$z/$x/$y"); - } - renderNocacheTms(); -} -if(strtolower($req->getValueByName("REQUEST")) == "getlegendgraphic"){ - $l = $oMap->getlayer(0); - if($req->getValueByName("LAYER") == ""){ - $req->setParameter("LAYER",$l->name); + salvaCacheImagem($cachedir,$nomeMapfileTmp,"/googlemaps/$layer0->name/$z/$x/$y"); + } + renderNocacheTms(); +} +if(strtolower($req->getValueByName("REQUEST")) == "getlegendgraphic"){ + $l = $oMap->getlayer(0); + if($req->getValueByName("LAYER") == ""){ + $req->setParameter("LAYER",$l->name); } //muda o title se for vazio $nclass = $l->numclasses; @@ -745,29 +745,29 @@ if(strtolower($req->getValueByName("REQUEST")) == "getlegendgraphic"){ if($classe->title === ""){ $classe->title = $classe->name; } - } + } if($req->getValueByName("FORMAT") == ""){ $req->setParameter("FORMAT","image/png"); } - $legenda = $oMap->legend; - $legenda->set("status",MS_ON); - $l->set("minscaledenom",0); + $legenda = $oMap->legend; + $legenda->set("status",MS_ON); + $l->set("minscaledenom",0); $l->set("maxscaledenom",0); if($req->getValueByName("FORMAT") == "text/html"){ //$req->setParameter("FORMAT","image/png"); $l = $oMap->getlayerbyname($req->getValueByName("LAYER")); - $l->set("status",MS_DEFAULT); - //remove offset de simbolos pontuais - $nclass = $l->numclasses; - for($cc = 0; $cc < $nclass; $cc++){ - $classe = $l->getclass($cc); - if($classe->numstyles > 0){ - $estilo = $classe->getstyle(0); - if($estilo->symbolname != "" && file_exists($estilo->symbolname)){ - $estilo->set("offsetx",0); - $estilo->set("offsety",0); - } - } + $l->set("status",MS_DEFAULT); + //remove offset de simbolos pontuais + $nclass = $l->numclasses; + for($cc = 0; $cc < $nclass; $cc++){ + $classe = $l->getclass($cc); + if($classe->numstyles > 0){ + $estilo = $classe->getstyle(0); + if($estilo->symbolname != "" && file_exists($estilo->symbolname)){ + $estilo->set("offsetx",0); + $estilo->set("offsety",0); + } + } } $legenda->set("template",$locaplic."/aplicmap/legendaOgc.html"); $tmparray["my_tag"] = "value_of_my_tag"; @@ -775,62 +775,62 @@ if(strtolower($req->getValueByName("REQUEST")) == "getlegendgraphic"){ if (function_exists("mb_convert_encoding")){ $leg = mb_convert_encoding($leg,"UTF-8","ISO-8859-1"); } - echo $leg; + echo $leg; exit; } - } -} + } +} if(strtolower($req->getValueByName("REQUEST")) == "getfeature"){ $l = $oMap->getlayer(0); if($req->getValueByName("TYPENAME") == "" || $req->getValueByName("TYPENAME") == "undefined"){ $req->setParameter("TYPENAME",$l->name); - } - if($l->getProjection() == "" ){ - $l->setProjection("proj=latlong,a=6378137,b=6378137"); - } - if(strtolower($req->getValueByName("SRS")) == "epsg:900913"){ - $req->setParameter("SRS","EPSG:3857"); } -} -if(strtolower($req->getValueByName("REQUEST")) == "getfeatureinfo"){ - $l = $oMap->getlayer(0); - $req->setParameter("LAYERS",$l->name); - $req->setParameter("QUERY_LAYERS",$l->name); - if(strtolower($req->getValueByName("SRS")) == "epsg:900913"){ - $req->setParameter("SRS","EPSG:3857"); - $_GET["SRS"] = "EPSG:3857"; - } -} - -ms_ioinstallstdouttobuffer(); -// -//verifica parametro outputformat e ajusta a requisicao -// -if(strtolower($req->getValueByName("REQUEST")) == "getmap" && $req->getValueByName("format") == ""){ - $req->setParameter("format","image/png"); -} + if($l->getProjection() == "" ){ + $l->setProjection("proj=latlong,a=6378137,b=6378137"); + } + if(strtolower($req->getValueByName("SRS")) == "epsg:900913"){ + $req->setParameter("SRS","EPSG:3857"); + } +} +if(strtolower($req->getValueByName("REQUEST")) == "getfeatureinfo"){ + $l = $oMap->getlayer(0); + $req->setParameter("LAYERS",$l->name); + $req->setParameter("QUERY_LAYERS",$l->name); + if(strtolower($req->getValueByName("SRS")) == "epsg:900913"){ + $req->setParameter("SRS","EPSG:3857"); + $_GET["SRS"] = "EPSG:3857"; + } +} + +ms_ioinstallstdouttobuffer(); +// +//verifica parametro outputformat e ajusta a requisicao +// +if(strtolower($req->getValueByName("REQUEST")) == "getmap" && $req->getValueByName("format") == ""){ + $req->setParameter("format","image/png"); +} if(strtolower($req->getValueByName("REQUEST")) == "getfeatureinfo" && $_GET["info_format"] == "text/xml"){ - $req->setParameter("info_format","application/vnd.ogc.gml"); -} -//json conforme cesium + $req->setParameter("info_format","application/vnd.ogc.gml"); +} +//json conforme cesium if(strtolower($req->getValueByName("REQUEST")) == "getfeatureinfo" && $_GET["info_format"] == "application/json"){ - getfeatureinfoJson(); + getfeatureinfoJson(); exit; -} -$oMap->owsdispatch($req); +} +$oMap->owsdispatch($req); -$contenttype = ms_iostripstdoutbuffercontenttype(); - -if(strtolower($request) == "getcapabilities"){ - header('Content-Disposition: attachment; filename=getcapabilities.xml'); +$contenttype = ms_iostripstdoutbuffercontenttype(); + +if(strtolower($request) == "getcapabilities"){ + header('Content-Disposition: attachment; filename=getcapabilities.xml'); } - + if(!isset($OUTPUTFORMAT)){ header("Content-type: $contenttype"); -} - -//precisa limpar o cabecalho -if(strtolower($OUTPUTFORMAT) == "geojson" || strtolower($OUTPUTFORMAT) == "json"){ +} + +//precisa limpar o cabecalho +if(strtolower($OUTPUTFORMAT) == "geojson" || strtolower($OUTPUTFORMAT) == "json"){ ms_iostripstdoutbuffercontentheaders(); //grava em disco $arq = $dir_tmp."/".$tema.".json"; @@ -841,31 +841,32 @@ if(strtolower($OUTPUTFORMAT) == "geojson" || strtolower($OUTPUTFORMAT) == "json" ms_iogetStdoutBufferBytes(); ms_ioresethandlers(); exit; -} -if(strtolower($OUTPUTFORMAT) == "shape-zip"){ - //grava em disco +} +if(strtolower($OUTPUTFORMAT) == "shape-zip"){ + //grava em disco $arq = $dir_tmp."/".$tema."_shapefile.zip"; - $contents = ms_iogetstdoutbufferstring(); - file_put_contents($arq,$contents); - //envia para download - header('Content-Disposition: attachment; filename='.$tema.'_shapefile.zip'); - ms_iogetStdoutBufferBytes(); - ms_ioresethandlers(); + $contents = ms_iogetstdoutbufferstring(); + file_put_contents($arq,$contents); + //envia para download + header('Content-Disposition: attachment; filename='.$tema.'_shapefile.zip'); + ms_iogetStdoutBufferBytes(); + ms_ioresethandlers(); exit; } -if(strtolower($OUTPUTFORMAT) == "csv"){ +if(strtolower($OUTPUTFORMAT) == "csv"){ + ms_iostripstdoutbuffercontentheaders(); //grava em disco - $arq = $dir_tmp."/".$tema.".csv"; + $arq = $dir_tmp."/".$tema.$ows_geomtype.".csv"; $contents = ms_iogetstdoutbufferstring(); file_put_contents($arq,$contents); //envia para download - header('Content-Disposition: attachment; filename='.$tema.'.csv'); + header('Content-Disposition: attachment; filename='.$tema.$ows_geomtype.'.csv'); header("Content-type: text/csv"); ms_iogetStdoutBufferBytes(); ms_ioresethandlers(); exit; } -$buffer = ms_iogetStdoutBufferBytes(); +$buffer = ms_iogetStdoutBufferBytes(); ms_ioresethandlers(); // @@ -873,13 +874,13 @@ ms_ioresethandlers(); // function ogc_pegaListaDeMenus(){ global $perfil,$locaplic,$urli3geo; - if(!isset($perfil)){ - $perfil = ""; + if(!isset($perfil)){ + $perfil = ""; } $m = new Menutemas("",$perfil,$locsistemas,$locaplic,"",$urli3geo); foreach($m->pegaListaDeMenus() as $menu) - { - $menus[] = $urli3geo."/admin/xmlmenutemas.php?id_menu=".$menu["idmenu"]; + { + $menus[] = $urli3geo."/admin/xmlmenutemas.php?id_menu=".$menu["idmenu"]; } return $menus; } @@ -891,11 +892,11 @@ function ogc_imprimeAjuda(){ 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 "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"; + 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 ogc_imprimeListaDeTemas(){ global $urli3geo,$perfil,$locaplic; @@ -969,52 +970,52 @@ function ogc_imprimeListaDeTemasWfs(){ } echo $imprimir.""; } -function carregaCacheImagem($cachedir,$map,$tms){ - global $dir_tmp; - if($cachedir == ""){ - $nome = $dir_tmp."/cache".$tms; - } - else{ - $nome = $cachedir.$tms; - } - if(file_exists($nome)){ - header('Content-Length: '.filesize($nome)); - header('Content-Type: image/png'); - header('Cache-Control: max-age=3600, must-revalidate'); - header('Expires: ' . gmdate('D, d M Y H:i:s', time()+24*60*60) . ' GMT'); - header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($nome)).' GMT', true, 200); - $etag = md5_file($nome); - header('Etag: '.$etag); - readfile($nome); - exit; - } -} +function carregaCacheImagem($cachedir,$map,$tms){ + global $dir_tmp; + if($cachedir == ""){ + $nome = $dir_tmp."/cache".$tms; + } + else{ + $nome = $cachedir.$tms; + } + if(file_exists($nome)){ + header('Content-Length: '.filesize($nome)); + header('Content-Type: image/png'); + header('Cache-Control: max-age=3600, must-revalidate'); + header('Expires: ' . gmdate('D, d M Y H:i:s', time()+24*60*60) . ' GMT'); + header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($nome)).' GMT', true, 200); + $etag = md5_file($nome); + header('Etag: '.$etag); + readfile($nome); + exit; + } +} function salvaCacheImagem($cachedir,$map,$tms){ - global $img,$dir_tmp,$cortePixels; + global $img,$dir_tmp,$cortePixels; if($cachedir == ""){ $nome = $dir_tmp."/cache".$tms; } else{ $nome = $cachedir.$tms; - } + } @mkdir(dirname($nome),0777,true); - chmod(dirname($nome),0777); + chmod(dirname($nome),0777); $img->saveImage($nome); - // - //corta a imagem gerada para voltar ao tamanho normal - // - if($cortePixels > 0){ - $img = imagecreatefrompng($nome); - $imgc = imagecreate(256,256); - - imagesavealpha($imgc, true); - // Fill the image with transparent color - $color = imagecolorallocatealpha($imgc,0x00,0x00,0x00,127); - imagefill($imgc, 0, 0, $color); - - imagecopy($imgc, $img, 0 , 0 , $cortePixels , $cortePixels , 256, 256); - imagepng($imgc,$nome); - } + // + //corta a imagem gerada para voltar ao tamanho normal + // + if($cortePixels > 0){ + $img = imagecreatefrompng($nome); + $imgc = imagecreate(256,256); + + imagesavealpha($imgc, true); + // Fill the image with transparent color + $color = imagecolorallocatealpha($imgc,0x00,0x00,0x00,127); + imagefill($imgc, 0, 0, $color); + + imagecopy($imgc, $img, 0 , 0 , $cortePixels , $cortePixels , 256, 256); + imagepng($imgc,$nome); + } chmod($nome,0777); header('Content-Length: '.filesize($nome)); header('Content-Type: image/png'); @@ -1023,55 +1024,54 @@ function salvaCacheImagem($cachedir,$map,$tms){ header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($nome)).' GMT', true, 200); readfile($nome); exit; -} -function texto2iso($texto){ - if (function_exists("mb_convert_encoding")){ - if (mb_detect_encoding($texto,"UTF-8",true)){ - $texto = mb_convert_encoding($texto,"ISO-8859-1","UTF-8"); - } - } - return $texto; -} +} +function texto2iso($texto){ + if (function_exists("mb_convert_encoding")){ + if (mb_detect_encoding($texto,"UTF-8",true)){ + $texto = mb_convert_encoding($texto,"ISO-8859-1","UTF-8"); + } + } + return $texto; +} function nomeRand($n=10) { $nomes = ""; $a = 'azertyuiopqsdfghjklmwxcvbnABCDEFGHIJKLMNOPQRSTUVWXYZ'; $max = 51; for($i=0; $i < $n; ++$i) - { - $nomes .= $a{mt_rand(0, $max)}; + { + $nomes .= $a{mt_rand(0, $max)}; } return $nomes; -} -function renderNocacheTms(){ - global $img,$i3georendermode,$dir_tmp,$cortePixels; - if($i3georendermode == 1 && $cortePixels == 0){ - ob_clean(); - header('Content-Type: image/png'); - $img->saveImage(); - exit; - } - if($i3georendermode == 1 && $cortePixels > 0){ - $i3georendermode = 0; - } - $nomer = $dir_tmp."/temp".nomeRand().".png"; - $img->saveImage($nomer); - // - //corta a imagem gerada para voltar ao tamanho normal - // - if($cortePixels > 0){ - $img = imagecreatefrompng($nomer); - $imgc = imagecreate(256,256); - imagecopy( $imgc, $img, 0 , 0 , $cortePixels , $cortePixels , 256, 256 ); - imagepng($imgc,$nomer); - } - if($i3georendermode == 0 || !isset($i3georendermode)){ - - header('Content-Length: '.filesize($nomer)); - header('Content-Type: image/png'); - header('Cache-Control: max-age=3600, must-revalidate'); - header('Expires: ' . gmdate('D, d M Y H:i:s', time()+24*60*60) . ' GMT'); - header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($nomer)).' GMT', true, 200); +} +function renderNocacheTms(){ + global $img,$i3georendermode,$dir_tmp,$cortePixels; + if($i3georendermode == 1 && $cortePixels == 0){ + ob_clean(); + header('Content-Type: image/png'); + $img->saveImage(); + exit; + } + if($i3georendermode == 1 && $cortePixels > 0){ + $i3georendermode = 0; + } + $nomer = $dir_tmp."/temp".nomeRand().".png"; + $img->saveImage($nomer); + // + //corta a imagem gerada para voltar ao tamanho normal + // + if($cortePixels > 0){ + $img = imagecreatefrompng($nomer); + $imgc = imagecreate(256,256); + imagecopy( $imgc, $img, 0 , 0 , $cortePixels , $cortePixels , 256, 256 ); + imagepng($imgc,$nomer); + } + if($i3georendermode == 0 || !isset($i3georendermode)){ + header('Content-Length: '.filesize($nomer)); + header('Content-Type: image/png'); + header('Cache-Control: max-age=3600, must-revalidate'); + header('Expires: ' . gmdate('D, d M Y H:i:s', time()+24*60*60) . ' GMT'); + header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($nomer)).' GMT', true, 200); readfile($nomer); } if($i3georendermode == 2){ @@ -1080,10 +1080,10 @@ function renderNocacheTms(){ header('Expires: ' . gmdate('D, d M Y H:i:s', time()+48*60*60) . ' GMT'); header("X-Sendfile: $nomer"); header("Content-type: image/png"); - } -} -function getfeatureinfoJson(){ - global $req, $oMap; + } +} +function getfeatureinfoJson(){ + global $req, $oMap; $req->setParameter("info_format","application/vnd.ogc.gml"); $oMap->owsdispatch($req); ms_iostripstdoutbuffercontentheaders(); @@ -1125,10 +1125,10 @@ function getfeatureinfoJson(){ for($i = 0; $i < $n; $i++){ $json = str_ireplace($itens[$i],$itensdesc[$i],$json); } - echo $json; -} -function processaOutputformatMapfile(){ - global $OUTPUTFORMAT, $oMap, $tema; + echo $json; +} +function processaOutputformatMapfile(){ + global $OUTPUTFORMAT, $oMap, $tema, $ows_geomtype; if(strtolower($OUTPUTFORMAT) == "shape-zip"){ $l = $oMap->getlayer(0); $n = $l->name; @@ -1143,18 +1143,21 @@ function processaOutputformatMapfile(){ $n = $l->name."-csv"; $oMap->selectOutputFormat("csv"); $oMap->outputformat->setOption("STORAGE", "filesystem"); - $oMap->outputformat->setOption("FILENAME", $tema.".csv"); + $oMap->outputformat->setOption("FILENAME", $tema.$ows_geomtype.".csv"); $oMap->outputformat->setOption("FORM", "simple"); + if(isset($ows_geomtype) && $ows_geomtype != ""){ + $oMap->outputformat->setOption("LCO:GEOMETRY", $ows_geomtype); + } $l->setmetadata("wfs_getfeature_formatlist","csv"); } if(strtolower($OUTPUTFORMAT) == "geojson" || strtolower($OUTPUTFORMAT) == "json"){ $l = $oMap->getlayer(0); $oMap->selectOutputFormat("geojson"); $l->setmetadata("wfs_getfeature_formatlist","geojson"); - } -} + } +} function carregaCacheArquivo(){ - global $dir_tmp, $tema, $OUTPUTFORMAT; + global $dir_tmp, $tema, $OUTPUTFORMAT, $ows_geomtype; if(strtolower($OUTPUTFORMAT) == "shape-zip"){ $arq = $dir_tmp."/".$tema."_shapefile.zip"; if(file_exists($arq)){ @@ -1164,9 +1167,9 @@ function carregaCacheArquivo(){ } } if(strtolower($OUTPUTFORMAT) == "csv"){ - $arq = $dir_tmp."/".$tema.".csv"; + $arq = $dir_tmp."/".$tema.$ows_geomtype.".csv"; if(file_exists($arq)){ - header('Content-Disposition: attachment; filename='.$tema.'.csv'); + header('Content-Disposition: attachment; filename='.$tema.$ows_geomtype.'.csv'); header("Content-type: text/csv"); readfile($arq); exit; @@ -1180,9 +1183,9 @@ function carregaCacheArquivo(){ exit; } } -} -function restauraMapaSalvo(){ - global $restauramapa, $dir_tmp, $tema; +} +function restauraMapaSalvo(){ + global $restauramapa, $dir_tmp, $tema; $xbase = restauraMapaAdmin($restauramapa,$dir_tmp); $m = ms_newMapObj($xbase); $w = $m->web; @@ -1203,12 +1206,12 @@ function restauraMapaSalvo(){ $_GET["tema"] = $xbase; $_GET["layers"] = ""; $l = $m->getlayer(0); - $_GET["LAYERS"] = $l->name; -} + $_GET["LAYERS"] = $l->name; +} function converteenc($texto){ - if (!mb_detect_encoding($texto,"UTF-8",true)){ + if (!mb_detect_encoding($texto,"UTF-8",true)){ $texto = mb_convert_encoding($texto,"UTF-8","ISO-8859-1"); } return $texto; -} -?> +} +?> -- libgit2 0.21.2