From 808d9f762d77230794902d70dea79a182315e64d Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Thu, 21 May 2015 18:43:04 +0000 Subject: [PATCH] --- admin/admin.db | Bin 278528 -> 0 bytes admin/php/preview.php | 5 +++-- aplicmap/dados/teste3d.kmz | Bin 0 -> 128574 bytes classesphp/classe_mapa.php | 10 ++++++++-- classesphp/funcoes_gerais.php | 3 ++- classesphp/mapa_googlemaps.php | 3 ++- classesphp/mapa_openlayers.php | 8 +++++--- ferramentas/parametrossql/ogc.php | 9 ++++++--- ferramentas/salvamapa/geraminiatura.php | 5 +++-- mashups/openlayers.php | 4 ++-- mashups/osm.php | 2 +- ogc.php | 423 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ temas/_lbairros.map | 2 +- temas/_lbiomashp.map | 184 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------------------------------------------------------------- temas/_lteste3d.map | 29 +++++++++++++++++++++++++++++ 15 files changed, 388 insertions(+), 299 deletions(-) create mode 100755 aplicmap/dados/teste3d.kmz create mode 100755 temas/_lteste3d.map diff --git a/admin/admin.db b/admin/admin.db index cccca6c..0d9e29b 100644 Binary files a/admin/admin.db and b/admin/admin.db differ diff --git a/admin/php/preview.php b/admin/php/preview.php index 44d70c2..3c1b345 100755 --- a/admin/php/preview.php +++ b/admin/php/preview.php @@ -141,13 +141,14 @@ if(ob_get_contents ()){ ob_end_clean(); } - $l = $oMap->getlayer(0); - $req->setParameter("LAYERS",$l->name); +$l = $oMap->getlayer(0); +$req->setParameter("LAYERS",$l->name); ms_ioinstallstdouttobuffer(); $req->setParameter("format","image/png"); $oMap->owsdispatch($req); $contenttype = ms_iostripstdoutbuffercontenttype(); + if(!isset($OUTPUTFORMAT)){ header("Content-type: $contenttype"); } diff --git a/aplicmap/dados/teste3d.kmz b/aplicmap/dados/teste3d.kmz new file mode 100755 index 0000000..8c836d3 Binary files /dev/null and b/aplicmap/dados/teste3d.kmz differ diff --git a/classesphp/classe_mapa.php b/classesphp/classe_mapa.php index e9c4d3e..a416dc2 100644 --- a/classesphp/classe_mapa.php +++ b/classesphp/classe_mapa.php @@ -1366,8 +1366,14 @@ class Mapa for ($i = $numlayers-1;$i > 0;$i--){ $layerAbaixo = $this->mapa->getlayer($i); $tipo = $layerAbaixo->type; - if($tipo == 2 && ($layerAbaixo->getclass(0)->getstyle(0)->color->red == -1) && ($l->getclass(0)->getstyle(0)->color->red != -1)) { - $tipo = 0;//vai subir + 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++; diff --git a/classesphp/funcoes_gerais.php b/classesphp/funcoes_gerais.php index 8c249a9..a370018 100644 --- a/classesphp/funcoes_gerais.php +++ b/classesphp/funcoes_gerais.php @@ -443,7 +443,8 @@ Envia para o navegador uma imagem. Utilizado na tag IMG em arquivos HTML function echoimg($arquivo,$tipo){ echo header("Content-type: image/png \n\n"); header('Content-Length: '.filesize($arquivo)); - fpassthru(fopen($arquivo, 'rb')); + //fpassthru(fopen($arquivo, 'rb')); + readfile($arquivo); exit; } /* diff --git a/classesphp/mapa_googlemaps.php b/classesphp/mapa_googlemaps.php index 48b69fe..a9f9378 100644 --- a/classesphp/mapa_googlemaps.php +++ b/classesphp/mapa_googlemaps.php @@ -511,7 +511,8 @@ function carregaCacheImagem(){ header('Content-Type: image/png'); header('Cache-Control: public, max-age=22222222'); header('Expires: ' . gmdate('D, d M Y H:i:s', time()+48*60*60) . ' GMT'); - fpassthru(fopen($nome, 'rb')); + //fpassthru(fopen($nome, 'rb')); + readfile($nome); } else{ header('Cache-Control: public, max-age=22222222'); diff --git a/classesphp/mapa_openlayers.php b/classesphp/mapa_openlayers.php index 9c937a1..913e8e2 100644 --- a/classesphp/mapa_openlayers.php +++ b/classesphp/mapa_openlayers.php @@ -92,7 +92,7 @@ if(isset($_GET["X"])){ $z = intval((0.703125 / $res) / 4) + 1; $x = floor((($box[0] + 180) / 360) * pow(2, $z)); $y = floor((1 - log(tan(deg2rad($box[3])) + 1 / cos(deg2rad($box[3]))) / pi()) /2 * pow(2, $z)); - + $_GET["WIDTH"] = 256; $_GET["HEIGHT"] = 256; $_GET["tms"] = "/".$_GET["layer"]."/".$z."/".$x."/".$y.".png"; @@ -413,7 +413,8 @@ else{ //header('Expires: ' . gmdate('D, d M Y H:i:s', time()+24*60*60) . ' GMT'); header('Cache-Control: public, max-age=22222222'); header('Expires: ' . gmdate('D, d M Y H:i:s', time()+48*60*60) . ' GMT'); - fpassthru(fopen($nomer, 'rb')); + //fpassthru(fopen($nomer, 'rb')); + readfile($nomer); } } else{ @@ -501,7 +502,8 @@ function carregaCacheImagem($cachedir,$map,$tms,$i3georendermode=0){ header('Cache-Control: public, max-age=22222222'); header('Expires: ' . gmdate('D, d M Y H:i:s', time()+48*60*60) . ' GMT'); //header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($nome)).' GMT', true, 200); - fpassthru(fopen($nome, 'rb')); + //fpassthru(fopen($nome, 'rb')); + readfile($nome); } else{ header('Cache-Control: public, max-age=22222222'); diff --git a/ferramentas/parametrossql/ogc.php b/ferramentas/parametrossql/ogc.php index 0ab1f04..6216abc 100755 --- a/ferramentas/parametrossql/ogc.php +++ b/ferramentas/parametrossql/ogc.php @@ -459,7 +459,8 @@ function renderNocacheTms(){ 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); - fpassthru(fopen($nomer, 'rb')); + //fpassthru(fopen($nomer, 'rb')); + readfile($nomer); } if($i3georendermode == 2){ ob_clean(); @@ -488,7 +489,8 @@ function carregaCacheImagem($cachedir,$map,$tms, $plugin, $tema){ header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($nome)).' GMT', true, 200); $etag = md5_file($nome); header('Etag: '.$etag); - fpassthru(fopen($nome, 'rb')); + //fpassthru(fopen($nome, 'rb')); + readfile($nome); exit; } } @@ -527,7 +529,8 @@ function salvaCacheImagem($cachedir,$map,$tms, $plugin, $tema){ 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); - fpassthru(fopen($nome, 'rb')); + //fpassthru(fopen($nome, 'rb')); + readfile($nome); exit; } diff --git a/ferramentas/salvamapa/geraminiatura.php b/ferramentas/salvamapa/geraminiatura.php index f3fcb29..29895de 100644 --- a/ferramentas/salvamapa/geraminiatura.php +++ b/ferramentas/salvamapa/geraminiatura.php @@ -2,7 +2,7 @@ /* * Gera uma miniatura de um mapfile salvo no banco de dados * Verifica se a imagem existe, caso contrario cria uma no diretorio temporario - * + * * @param restauramapa - id do mapa a ser restaurado * @param w * @param h @@ -47,5 +47,6 @@ header('Content-Length: '.filesize($nomeImagem)); header('Content-Type: image/png'); header('Cache-Control: public, max-age=22222222'); header('Expires: ' . gmdate('D, d M Y H:i:s', time()+48*60*60) . ' GMT'); -fpassthru(fopen($nomeImagem, 'rb')); +//fpassthru(fopen($nomeImagem, 'rb')); +readfile($nomeImagem); ?> \ No newline at end of file diff --git a/mashups/openlayers.php b/mashups/openlayers.php index adbe566..0cdd36a 100644 --- a/mashups/openlayers.php +++ b/mashups/openlayers.php @@ -277,7 +277,7 @@ if($temas != ""){ if(in_array($tema,$visiveis)){ $visivel = "true"; } - if($nlayers == 1 && strtoupper($layern->getmetadata("cache")) == "SIM" && $layern->getmetadata("PLUGINI3GEO") == ""){ + if(strtolower($DESLIGACACHE) != "sim" && $nlayers == 1 && strtoupper($layern->getmetadata("cache")) == "SIM" && $layern->getmetadata("PLUGINI3GEO") == ""){ if($layern->type != 2 && $layern->type != 3){ $opacidade = 1; } @@ -646,7 +646,7 @@ if(!i3GEO.configura){ } ?> i3GEO.editorOL.inicia(); - + function adicionaPluginI3geo(camada,visivel){ if(!camada.cache){ camada["cache"] = "NAO"; diff --git a/mashups/osm.php b/mashups/osm.php index 0041229..9c2b459 100755 --- a/mashups/osm.php +++ b/mashups/osm.php @@ -634,7 +634,7 @@ if(!i3GEO.configura){ } ?> i3GEO.editorOL.inicia(); - + function adicionaPluginI3geo(camada,visivel){ if(!camada.cache){ camada["cache"] = "NAO"; diff --git a/ogc.php b/ogc.php index 075f7bb..68b0db0 100644 --- a/ogc.php +++ b/ogc.php @@ -77,9 +77,16 @@ ogc.php?tema=/var/www/i3geo/aplicmap/geral1debianv6.map&layers=mundo ogc.php?intervalo=0,50 */ +$_GET = array_merge($_GET,$_POST); // -//validações e includes -// +//caso nenhum parametros tenha sido enviado +// +if(count($_GET) == 0){ + $tipo="metadados"; + $_GET["REQUEST"] = "getCapabilities"; + $_GET["request"] = "getCapabilities"; + $_GET["SERVICE"] = "WMS"; +} // //compatibiliza chamadas fora do padrao // @@ -90,7 +97,7 @@ if(isset($_GET["outputformat"]) && $_GET["outputformat"] != ""){ $_GET["OUTPUTFORMAT"] = $_GET["outputformat"]; } $cache = true; -require_once(dirname(__FILE__)."/classesphp/carrega_ext.php"); +//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"); @@ -112,154 +119,132 @@ $urli3geo = str_replace("/ogc.php","",$protocolo.$_SERVER["PHP_SELF"]); // //imprime na tela a lista de temas disponiveis // -if(isset($lista) && $lista == "temas"){ +if(isset($lista) && $lista != ""){ include_once(dirname(__FILE__)."/classesphp/classe_menutemas.php"); - 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 +// +if(!isset($tema) && isset($layers)){ + $tema = $layers; +} +if(!isset($tema) && isset($LAYERS)){ + $tema = $LAYERS; +} +if(!isset($tema) && isset($temas)){ + $tema = $temas; } -if(isset($lista) && $lista == "temaswfs"){ - include_once(dirname(__FILE__)."/classesphp/classe_menutemas.php"); - ogc_imprimeListaDeTemasWfs(); - exit; +if(isset($typeName)){ + $typename = $typeName; +} +if(!isset($tema) && isset($typename)){ + $tema = $typename; +} +// +//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 // if(strtolower($OUTPUTFORMAT) == "kml" || strtolower($OUTPUTFORMAT) == "kmz"){ - //http://localhost/i3geo/pacotes/kmlmapserver/kmlservice.php?request=kmz&map=_lbiomashp&typename=_lbiomashp - if(!isset($tema) && isset($layers)){ - $tema = $layers; - } $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 +// +if($_GET["SRS"] == "EPSG:900913" || $_GET["srs"] == "EPSG:900913"){ + $_GET["SRS"] = "EPSG:3857"; + $_GET["srs"] = "EPSG:3857"; +} +if(!isset($_GET["srs"]) && !isset($_GET["SRS"])){ + $_GET["srs"] = "EPSG:4326"; + $_GET["SRS"] = "EPSG:4326"; +} // //trata geojson da mesma forma que json // if(strtolower($OUTPUTFORMAT) == "geojson"){ $OUTPUTFORMAT = "json"; } -// -//define um nome para o mapfile caso a origem seja o sistema de metadados estatisticos -// -if(isset($id_medida_variavel)){ - $tema = "ogcmetaestat".$id_medida_variavel; - $_GET["layers"] = $tema; - $_GET["LAYERS"] = $tema; -} -if(!isset($tema) && isset($temas)){ - $tema = $temas; -} -if(isset($typeName)){ - $typename = $typeName; -} -if(!isset($tema) && isset($typename)){ - $tema = $typename; -} // //recupera um mapa salvo no banco de administracao // if(!empty($restauramapa)){ - $xbase = restauraMapaAdmin($restauramapa,$dir_tmp); - $m = ms_newMapObj($xbase); - $w = $m->web; - $w->set("imagepath",dirname($w->imagepath)."/"); - $w->set("imageurl",dirname($w->imageurl)."/"); - //apaga algumas camadas - $l = $m->getlayerbyname("rosadosventos"); - if($l != ""){ - $l->set("status",MS_DELETE); - } - $l = $m->getlayerbyname("copyright"); - if($l != ""){ - $l->set("status",MS_DELETE); - } - $m->save($xbase); - //$fundo = $xbase; - $tema = $xbase; - $_GET["tema"] = $xbase; - $_GET["layers"] = ""; - $l = $m->getlayer(0); - $_GET["LAYERS"] = $l->name; + restauraMapaSalvo(); } // -//para operar como o Geoserver +//para operar como o Geoserver, abre o openlayers // if(isset($format) && strtolower($format) == "application/openlayers"){ - if(!isset($layers)){ - $layers = $tema; - } - $urln = diogc_imprimeAjudarname($_SERVER["PHP_SELF"])."/mashups/openlayers.php?temas=".$layers."&layers=".$layers."&mapext=".$bbox."&botoes=pan,zoombox,zoomtot,identifica"; + $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); } else{ echo ""; - } + } + //exit.... } // -//cria o web service +//pega a versao do Mapserver // error_reporting(0); $versao = versao(); $versao = $versao["principal"]; -if($_GET["SRS"] == "EPSG:900913"){ - $_GET["SRS"] = "EPSG:3857"; -} + $req = ms_newowsrequestobj(); $tipo = ""; -$_GET = array_merge($_GET,$_POST); + if(isset($_GET["sld"]) || isset($_GET["filter"])){ $cache = false; } -if(!isset($_GET["srs"]) && !isset($_GET["SRS"])){ - $_GET["srs"] = "EPSG:4326"; -} +// +//inclui todos os parametros na requisicao e aproveita para verificar getcapabilities +// foreach ($_GET as $k=>$v){ $req->setParameter(strtoupper($k), $v); if(strtolower($v) == "getcapabilities"){ $tipo = "metadados"; $cache = false; } - if(strtolower($k) == "layers" && empty($_GET["tema"])){ - $tema = $v; - } - if(strtolower($k) == "layer" && empty($_GET["tema"])){ - $tema = $v; - } } +// +//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"; -//echo $listaepsg;exit; -if(count($_GET) == 0){ - $tipo="intervalo"; - $req->setParameter("REQUEST", "getCapabilities"); - $req->setParameter("SERVICE", "WMS"); - $cache = false; -} -if(isset($tema) && $tipo != "metadados"){ - $tipo = ""; -} + if(isset($version) && !isset($VERSION)){ $VERSION = $version; } if(!isset($VERSION)){ $req->setParameter("VeRsIoN","1.1.1"); } -if (!isset($intervalo)){ - $intervalo = "0,5000"; -} -else{ - $tipo = "intervalo"; -} -if(!isset($tema)){ - if(!isset($intervalo)){ - $intervalo = "0,5000"; - } - $tipo = "intervalo"; -} // //nome do mapfile que ficara em cache // @@ -282,9 +267,7 @@ if(isset($_GET["DESLIGACACHE"]) && $_GET["DESLIGACACHE"] == "sim"){ $agora = time(); $cache = false; } -$nomeMapfileTmp = $dir_tmp."/ogc_".md5($tema.($req->getValueByName("SRS")))."_".$agora.".map"; -$nomeMapfileTmp = str_replace(",","",$nomeMapfileTmp); -$nomeMapfileTmp = str_replace(" ","",$nomeMapfileTmp); +$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 == ""){ @@ -299,7 +282,7 @@ else{ } $proto = "http" . ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "s" : "") . "://"; $server = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME']; - $or = $proto.$server.$_SERVER['PHP_SELF']; + $or = $urli3geo."/ogc.php"; if((isset($tema)) && ($tema != "") && ($tipo=="metadados")){ $or = $or."?tema=".$tema."&"; } @@ -313,8 +296,8 @@ else{ $oMap->setmetadata("wms_attribution_logourl_format","image/png"); $oMap->setmetadata("wms_attribution_logourl_height","56"); $oMap->setmetadata("wms_attribution_logourl_width","85"); - $oMap->setmetadata("wms_attribution_logourl_href",$proto.$server.dirname($_SERVER['PHP_SELF'])."/imagens/i3geo.png"); - $oMap->setmetadata("wms_attribution_onlineresource",$proto.$server.dirname($_SERVER['PHP_SELF'])); + $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 @@ -324,8 +307,8 @@ else{ $e = $oMap->extent; $extensaoMap = ($e->minx)." ".($e->miny)." ".($e->maxx)." ".($e->maxy); //gera o mapa - if ($tipo == "" || $tipo == "metadados"){ - $tema = explode(" ",$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 $temai3geo = true; @@ -335,7 +318,7 @@ else{ $temai3geo = false; $nmap->setmetadata("ows_enable_request","*"); } - foreach ($tema as $tx){ + foreach ($listatema as $tx){ $extensao = ".map"; if($temai3geo == true && file_exists($locaplic."/temas/".$tx.".php")){ $extensao = ".php"; @@ -368,8 +351,7 @@ else{ $nmap = ms_newMapobj($locaplic."/temas/".$tx.".map"); $nmap->setmetadata("ows_enable_request","*"); } - if($temai3geo == false || empty($layers)) - { + if($temai3geo == false || empty($layers)){ $ts = $nmap->getalllayernames(); $nmap->setmetadata("ows_enable_request","*"); } @@ -520,7 +502,8 @@ else{ } } } - else{ + else{ + $intervalo = "0,5000"; $conta = 0; $int = explode(",",$intervalo); $codigosTema = array(); @@ -554,48 +537,41 @@ else{ $nmap = ms_newMapobj($locaplic."/temas/".$codigoTema.".map"); $nmap->setmetadata("ows_enable_request","*"); $ts = $nmap->getalllayernames(); - if (count($ts) == 1){ - foreach ($ts as $t){ - if ($oMap->getlayerbyname($t) == ""){ - $conta++; - if (($conta >= $int[0]) && ($conta <= $int[1])){ - $l = $nmap->getlayerbyname($t); - $extensao = $l->getmetadata("EXTENSAO"); - if($extensao == ""){ - $extensao = $extensaoMap; - } - $l->setmetadata("wms_extent",$extensao); - - $l->setmetadata("ows_title",pegaNome($l)); - $l->setmetadata("ows_srs",$listaepsg); - $l->set("status",MS_OFF); - $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("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"); - } - cloneInlineSymbol($l,$nmap,$oMap); - ms_newLayerObj($oMap, $l); - - } + foreach ($ts as $t){ + if ($oMap->getlayerbyname($t) == ""){ + $l = $nmap->getlayerbyname($t); + $extensao = $l->getmetadata("EXTENSAO"); + if($extensao == ""){ + $extensao = $extensaoMap; } + $l->setmetadata("wms_extent",$extensao); + $l->setmetadata("ows_title",pegaNome($l)); + $l->setmetadata("ows_srs",$listaepsg); + $l->set("status",MS_OFF); + $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("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"); + } + cloneInlineSymbol($l,$nmap,$oMap); + ms_newLayerObj($oMap, $l); } } } @@ -619,6 +595,11 @@ else{ } $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); } @@ -820,12 +801,7 @@ if(strtolower($req->getValueByName("REQUEST")) == "getfeatureinfo"){ $_GET["SRS"] = "EPSG:3857"; } } -// -//altera o outputformat -// -if(isset($OUTPUTFORMAT)){ - processaOutputformatMapfile(); -} + ms_ioinstallstdouttobuffer(); // //verifica parametro outputformat e ajusta a requisicao @@ -841,11 +817,10 @@ if(strtolower($req->getValueByName("REQUEST")) == "getfeatureinfo" && $_GET["inf getfeatureinfoJson(); exit; } - $oMap->owsdispatch($req); $contenttype = ms_iostripstdoutbuffercontenttype(); - + if(strtolower($request) == "getcapabilities"){ header('Content-Disposition: attachment; filename=getcapabilities.xml'); } @@ -853,12 +828,45 @@ if(strtolower($request) == "getcapabilities"){ if(!isset($OUTPUTFORMAT)){ header("Content-type: $contenttype"); } -if(strtolower($OUTPUTFORMAT) == "geojson"){ - ms_iostripstdoutbuffercontentheaders(); - header("Content-type: application/json; subtype=geojson"); + +//precisa limpar o cabecalho +if(strtolower($OUTPUTFORMAT) == "geojson" || strtolower($OUTPUTFORMAT) == "json"){ + ms_iostripstdoutbuffercontentheaders(); + //grava em disco + $arq = $dir_tmp."/".$tema.".json"; + $contents = ms_iogetstdoutbufferstring(); + file_put_contents($arq,$contents); + //envia para download + header("Content-type: application/json; subtype=geojson"); + ms_iogetStdoutBufferBytes(); + ms_ioresethandlers(); + exit; } +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(); + exit; +} +if(strtolower($OUTPUTFORMAT) == "csv"){ + //grava em disco + $arq = $dir_tmp."/".$tema.".csv"; + $contents = ms_iogetstdoutbufferstring(); + file_put_contents($arq,$contents); + //envia para download + header('Content-Disposition: attachment; filename='.$tema.'.csv'); + header("Content-type: text/csv"); + ms_iogetStdoutBufferBytes(); + ms_ioresethandlers(); + exit; +} +$buffer = ms_iogetStdoutBufferBytes(); -$buffer = ms_iogetStdoutBufferBytes(); ms_ioresethandlers(); // //funções @@ -877,16 +885,17 @@ function ogc_pegaListaDeMenus(){ } function ogc_imprimeAjuda(){ echo "
Construtor de web services do I3Geo.

"; - echo "Esse utilitário usa os arquivos mapfiles existentes em
"; - echo "i3geo/temas para gerar web services no padrão OGC.
"; + 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, além dos parâmetros normais, vc deverá incluir o parâmetro &tema=,
"; - echo "ou seja,http://[host]/i3geo/ogc.php?tema=[código do tema]
"; - echo "no lugar do c&ocaute;digo pode ser especificado também um arquivo mapfile qualquer. Nesse caso, deve ser digitado o caminho completo no servidor

"; - echo "Utilize o sistema de administração do i3Geo para configurar quais os temas da pasta i3geo/temas podem ser utilizados."; - echo "Utilize o parametro &intervalo=0,20 para definir o número de temas desejado na função getcapabilities."; - echo "Utilize o parametro restauramapa para indicar o ID de um mapa salvo no banco de dados de administração para utilizá-lo como um WMS"; + 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 ogc_imprimeListaDeTemas(){ global $urli3geo,$perfil,$locaplic; @@ -976,7 +985,7 @@ function carregaCacheImagem($cachedir,$map,$tms){ header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($nome)).' GMT', true, 200); $etag = md5_file($nome); header('Etag: '.$etag); - fpassthru(fopen($nome, 'rb')); + readfile($nome); exit; } } @@ -1012,7 +1021,7 @@ function salvaCacheImagem($cachedir,$map,$tms){ 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); - fpassthru(fopen($nome, 'rb')); + readfile($nome); exit; } function texto2iso($texto){ @@ -1063,7 +1072,7 @@ function renderNocacheTms(){ 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); - fpassthru(fopen($nomer, 'rb')); + readfile($nomer); } if($i3georendermode == 2){ ob_clean(); @@ -1119,41 +1128,83 @@ function getfeatureinfoJson(){ echo $json; } function processaOutputformatMapfile(){ - global $OUTPUTFORMAT, $oMap; + global $OUTPUTFORMAT, $oMap, $tema; if(strtolower($OUTPUTFORMAT) == "shape-zip"){ $l = $oMap->getlayer(0); $n = $l->name; $oMap->selectOutputFormat("shape-zip"); - $oMap->outputformat->setOption("STORAGE", "memory"); + $oMap->outputformat->setOption("STORAGE", "filesystem"); $oMap->outputformat->setOption("FORM", "zip"); - $oMap->outputformat->setOption("FILENAME", $n.".zip"); + $oMap->outputformat->setOption("FILENAME", $tema."_shapefile.zip"); $l->setmetadata("wfs_getfeature_formatlist","shape-zip"); - $oMap->save($nomeMapfileTmp); - if(strtolower($request) != "getcapabilities"){ - header('Content-Disposition: attachment; filename='.$n.'.zip'); - } } if(strtolower($OUTPUTFORMAT) == "csv"){ $l = $oMap->getlayer(0); $n = $l->name."-csv"; $oMap->selectOutputFormat("csv"); - $oMap->outputformat->setOption("STORAGE", "memory"); - $oMap->outputformat->setOption("FILENAME", $n.".zip"); - $oMap->outputformat->setOption("FORM", "zip"); + $oMap->outputformat->setOption("STORAGE", "filesystem"); + $oMap->outputformat->setOption("FILENAME", $tema.".csv"); + $oMap->outputformat->setOption("FORM", "simple"); $l->setmetadata("wfs_getfeature_formatlist","csv"); - $oMap->save($nomeMapfileTmp); - if(strtolower($request) != "getcapabilities"){ - header('Content-Disposition: attachment; filename='.$n.'.zip'); - } } - if(strtolower($OUTPUTFORMAT) == "geojson"){ + if(strtolower($OUTPUTFORMAT) == "geojson" || strtolower($OUTPUTFORMAT) == "json"){ $l = $oMap->getlayer(0); $oMap->selectOutputFormat("geojson"); $l->setmetadata("wfs_getfeature_formatlist","geojson"); - $oMap->save($nomeMapfileTmp); - header("Content-type: application/json; subtype=geojson"); } } +function carregaCacheArquivo(){ + global $dir_tmp, $tema, $OUTPUTFORMAT; + if(strtolower($OUTPUTFORMAT) == "shape-zip"){ + $arq = $dir_tmp."/".$tema."_shapefile.zip"; + if(file_exists($arq)){ + header('Content-Disposition: attachment; filename='.$tema.'_shapefile.zip'); + readfile($arq); + exit; + } + } + if(strtolower($OUTPUTFORMAT) == "csv"){ + $arq = $dir_tmp."/".$tema.".csv"; + if(file_exists($arq)){ + header('Content-Disposition: attachment; filename='.$tema.'.csv'); + header("Content-type: text/csv"); + readfile($arq); + exit; + } + } + if(strtolower($OUTPUTFORMAT) == "geojson" || strtolower($OUTPUTFORMAT) == "json"){ + $arq = $dir_tmp."/".$tema.".json"; + if(file_exists($arq)){ + header("Content-type: application/json; subtype=geojson"); + readfile($arq); + exit; + } + } +} +function restauraMapaSalvo(){ + global $restauramapa, $dir_tmp, $tema; + $xbase = restauraMapaAdmin($restauramapa,$dir_tmp); + $m = ms_newMapObj($xbase); + $w = $m->web; + $w->set("imagepath",dirname($w->imagepath)."/"); + $w->set("imageurl",dirname($w->imageurl)."/"); + //apaga algumas camadas + $l = $m->getlayerbyname("rosadosventos"); + if($l != ""){ + $l->set("status",MS_DELETE); + } + $l = $m->getlayerbyname("copyright"); + if($l != ""){ + $l->set("status",MS_DELETE); + } + $m->save($xbase); + //$fundo = $xbase; + $tema = $xbase; + $_GET["tema"] = $xbase; + $_GET["layers"] = ""; + $l = $m->getlayer(0); + $_GET["LAYERS"] = $l->name; +} function converteenc($texto){ if (!mb_detect_encoding($texto,"UTF-8",true)){ $texto = mb_convert_encoding($texto,"UTF-8","ISO-8859-1"); diff --git a/temas/_lbairros.map b/temas/_lbairros.map index 56fe2ca..5b26010 100644 --- a/temas/_lbairros.map +++ b/temas/_lbairros.map @@ -7,7 +7,7 @@ MAP DATA "the_geom from (select gid, st_setsrid(the_geom,4326) as the_geom,co_bairro,no_bairro,no_distr,no_municip from i3geo_metaestat.bairros /*FW*//*FW*/) as foo using unique co_bairro using srid=4326" METADATA "TIP" "no_bairro" - "cache" "" + "cache" "SIM" "CLASSE" "SIM" "ITENSDESC" "id,Código bairro,Nome,Distrito,Município" "EDITAVEL" "SIM" diff --git a/temas/_lbiomashp.map b/temas/_lbiomashp.map index fda0b63..668ac60 100644 --- a/temas/_lbiomashp.map +++ b/temas/_lbiomashp.map @@ -1,95 +1,89 @@ -MAP - FONTSET "../symbols/fontes.txt" - SYMBOLSET "../symbols/simbolosv6.sym" - LAYER - CONNECTION "" - DATA "/var/www/i3geo/aplicmap/dados/biomas.shp" - METADATA - "METAESTAT_ID_MEDIDA_VARIAVEL" "" - "TIP" "CD_LEGENDA" - "CLASSE" "SIM" - "permitekmz" "SIM" - "ITENSDESC" "Bioma Teste de acentuação" - "ESCALA" "1000000" - "TILES" "SIM" - "METAESTAT_CODIGO_TIPO_REGIAO" "" - "permitedownload" "SIM" - "metaestat" "" - "download" "SIM" - "itembuscarapida" "CD_LEGENDA" - "ITENS" "CD_LEGENDA" - "arquivodownload" "" - "arquivokmz" "" - "transitioneffect" "SIM" - "permiteogc" "SIM" - "permitekml" "SIM" - "TEMA" "Biomas shapefile (acentuação)" - END # METADATA - NAME "_lbiomashp" - PROCESSING "ITEMS=CD_LEGENDA" - PROCESSING "LABEL_NO_CLIP=True" - PROCESSING "POLYLINE_NO_CLIP=True" - STATUS OFF - TEMPLATE "none.htm" - TILEITEM "location" - OPACITY 40 - TYPE POLYGON - UNITS METERS - CLASS - NAME "CAATINGA" - EXPRESSION ('[CD_LEGENDA]'eq'CAATINGA') - STYLE - COLOR 183 247 169 - OUTLINECOLOR 255 255 255 - END # STYLE - TITLE "" - END # CLASS - CLASS - NAME "PAMPA area > 5" - EXPRESSION ('[CD_LEGENDA]'eq'PAMPA area > 5') - STYLE - COLOR 239 22 152 - OUTLINECOLOR 255 255 255 - END # STYLE - TITLE "" - END # CLASS - CLASS - NAME "CERRADO" - EXPRESSION ('[CD_LEGENDA]'eq'CERRADO') - STYLE - COLOR 57 32 234 - OUTLINECOLOR 255 255 255 - END # STYLE - TITLE "" - END # CLASS - CLASS - NAME "PANTANAL" - EXPRESSION ('[CD_LEGENDA]'eq'PANTANAL') - STYLE - COLOR 214 107 232 - OUTLINECOLOR 255 255 255 - END # STYLE - TITLE "" - END # CLASS - CLASS - NAME "AMAZÔNIA" - EXPRESSION ('[CD_LEGENDA]'eq'AMAZÔNIA') - STYLE - COLOR 102 177 195 - OUTLINECOLOR 255 255 255 - END # STYLE - TITLE "" - END # CLASS - CLASS - NAME "MATA ATLÂNTICA" - EXPRESSION ('[CD_LEGENDA]'eq'MATA ATLÂNTICA') - STYLE - COLOR 44 215 49 - OUTLINECOLOR 255 255 255 - END # STYLE - TITLE "" - END # CLASS - END # LAYER - -END # MAP - +MAP + FONTSET "../symbols/fontes.txt" + SYMBOLSET "../symbols/simbolosv6.sym" + LAYER + CONNECTION "" + DATA "/var/www/i3geo/aplicmap/dados/biomas.shp" + METADATA + "TIP" "CD_LEGENDA" + "CACHE" "SIM" + "CLASSE" "SIM" + "permitekmz" "SIM" + "ITENSDESC" "Bioma Teste de acentuação" + "ESCALA" "1000000" + "TILES" "SIM" + "permitedownload" "SIM" + "download" "SIM" + "itembuscarapida" "CD_LEGENDA" + "ITENS" "CD_LEGENDA" + "transitioneffect" "SIM" + "permiteogc" "SIM" + "permitekml" "SIM" + "TEMA" "Biomas shapefile (acentuação)" + END # METADATA + NAME "_lbiomashp" + PROCESSING "ITEMS=CD_LEGENDA" + PROCESSING "LABEL_NO_CLIP=True" + PROCESSING "POLYLINE_NO_CLIP=True" + STATUS OFF + TEMPLATE "none.htm" + TILEITEM "location" + OPACITY 40 + TYPE POLYGON + UNITS METERS + CLASS + NAME "CAATINGA" + EXPRESSION ('[CD_LEGENDA]'eq'CAATINGA') + STYLE + COLOR 183 247 169 + OUTLINECOLOR 255 255 255 + END # STYLE + TITLE "" + END # CLASS + CLASS + NAME "PAMPA area > 5" + EXPRESSION ('[CD_LEGENDA]'eq'PAMPA area > 5') + STYLE + COLOR 239 22 152 + OUTLINECOLOR 255 255 255 + END # STYLE + TITLE "" + END # CLASS + CLASS + NAME "CERRADO" + EXPRESSION ('[CD_LEGENDA]'eq'CERRADO') + STYLE + COLOR 57 32 234 + OUTLINECOLOR 255 255 255 + END # STYLE + TITLE "" + END # CLASS + CLASS + NAME "PANTANAL" + EXPRESSION ('[CD_LEGENDA]'eq'PANTANAL') + STYLE + COLOR 214 107 232 + OUTLINECOLOR 255 255 255 + END # STYLE + TITLE "" + END # CLASS + CLASS + NAME "AMAZÔNIA" + EXPRESSION ('[CD_LEGENDA]'eq'AMAZÔNIA') + STYLE + COLOR 102 177 195 + OUTLINECOLOR 255 255 255 + END # STYLE + TITLE "" + END # CLASS + CLASS + NAME "MATA ATLÂNTICA" + EXPRESSION ('[CD_LEGENDA]'eq'MATA ATLÂNTICA') + STYLE + COLOR 44 215 49 + OUTLINECOLOR 255 255 255 + END # STYLE + TITLE "" + END # CLASS + END # LAYER +END # MAP diff --git a/temas/_lteste3d.map b/temas/_lteste3d.map new file mode 100755 index 0000000..1044ec9 --- /dev/null +++ b/temas/_lteste3d.map @@ -0,0 +1,29 @@ +MAP + FONTSET "../symbols/fontes.txt" + SYMBOLSET "../symbols/simbolosv6.sym" + LAYER + DATA "/var/www/i3geo/aplicmap/dados/mundo" + METADATA + "CLASSE" "SIM" #o simbolo sera mostrado na legenda + "ITENS" "FIPS_CNTRY,GMI_CNTRY,LONG_NAME,CNTRY_NAME" #itens que serao mostrados na opcao de identificacao + "ITENSDESC" "FIPS,GMI,Nome,Wikipedia" #descricao dos nomes dos itens + "ITENSLINK" ",,,http://pt.wikipedia.org/wiki/[CNTRY_NAME]" + "TEMA" "Países do mundo" #nome que sera mostrado na legenda + "TITULO" "Países do mundo" #nome alternativo que e mostrado nos combos para escolha do tema + "TIP" "FIPS_CNTRY,GMI_CNTRY,CNTRY_NAME" + "itembuscarapida" "LONG_NAME" + "TME" '{"titulo":"População","colnome":"CNTRY_NAME","colsdata":["POP_CNTRY"],"hmax":"5000","wmax":"5000"}' + END + NAME "_lteste3d" + STATUS DEFAULT + TEMPLATE "none.htm" + TYPE POLYGON + CLASS + NAME "" #vazio indica que nao sera incluido o nome ao lado do simbolo + STYLE + COLOR 230 230 230 + OUTLINECOLOR 255 255 255 + END + END + END +END \ No newline at end of file -- libgit2 0.21.2