diff --git a/aplicmap/ogcwsv7.map b/aplicmap/ogcwsv7.map index bf1e6e7..81d0803 100755 --- a/aplicmap/ogcwsv7.map +++ b/aplicmap/ogcwsv7.map @@ -47,6 +47,7 @@ MAP FORMATOPTION "STORAGE=memory" IMAGEMODE FEATURE END + OUTPUTFORMAT NAME "geojson" DRIVER "OGR/GEOJSON" diff --git a/ms_configura.php b/ms_configura.php index 61cea7d..ca52a48 100755 --- a/ms_configura.php +++ b/ms_configura.php @@ -314,7 +314,7 @@ Variable: $ogrOutput Indica se o OGR esta corretamente instalado, permitindo o seu uso nos servicos OGC de exportacao de dados */ -$ogrOutput = true; +$ogrOutput = false; /* Variable: saikuUrl diff --git a/ogc.php b/ogc.php index c0bf320..5b795d8 100755 --- a/ogc.php +++ b/ogc.php @@ -262,11 +262,11 @@ ogc.php?tema=/var/www/i3geo/aplicmap/geral1debianv6.map&layers=mundo "; exit; -} - +} include(dirname(__FILE__)."/classesphp/sani_request.php"); include_once (dirname(__FILE__)."/classesphp/carrega_ext.php"); include(dirname(__FILE__)."/ms_configura.php"); +error_reporting(0); $_GET = array_merge($_GET,$_POST); //error_log($_SERVER['QUERY_STRING']); if(isset($_GET["BBOX"])){ @@ -417,6 +417,9 @@ if(strpos(strtolower($OUTPUTFORMAT),"kml") !== false){ if(strpos(strtolower($OUTPUTFORMAT),"kmz") !== false){ $OUTPUTFORMAT = "kmz"; } +if(strpos(strtolower($OUTPUTFORMAT),"kmlwms") !== false){ + $OUTPUTFORMAT = "kmlwms"; +} // //verifica o OUTPUTFORMAT e o cache de arquivo // @@ -428,16 +431,21 @@ if(!empty($OUTPUTFORMAT)){ //para o caso da requisicao kmz //kmz nao funciona diretamente com mapserver // -if(strtolower($OUTPUTFORMAT) == "kmz"){ +if(strtolower($OUTPUTFORMAT) == "kmz" && $ogrOutput == false){ $urln = "pacotes/kmlmapserver/kmlservice.php?request=kmz&map=".$tema."&typename=".$tema; header("Location:".$urln); exit; } if(strtolower($OUTPUTFORMAT) == "kml" && $ogrOutput == false){ - $urln = "pacotes/kmlmapserver/kmlservice.php?request=kmz&map=".$tema."&typename=".$tema; + $urln = "pacotes/kmlmapserver/kmlservice.php?request=kml&map=".$tema."&typename=".$tema; header("Location:".$urln); exit; } +if(strtolower($OUTPUTFORMAT) == "kmlwms"){ + $urln = "pacotes/kmlmapserver/kmlservice.php?request=kmlwms&map=".$tema."&typename=".$tema; + header("Location:".$urln); + exit; +} if(strtolower($OUTPUTFORMAT) == "shape-zip" && $ogrOutput == false){ $retorno = downloadTema2("",$tema,$locaplic,$dir_tmp,$postgis_mapa); $zip = $retorno["shape-zip"]; @@ -1543,6 +1551,14 @@ function processaOutputformatMapfile(){ $oMap->outputformat->setOption("FILENAME", $tema.".kml"); $l->setmetadata("wfs_getfeature_formatlist","kml"); } + if(strtolower($OUTPUTFORMAT) == "kmz"){ + $l = $oMap->getlayer(0); + $n = $l->name; + $oMap->selectOutputFormat("kmz"); + $oMap->outputformat->setOption("STORAGE", "filesystem"); + $oMap->outputformat->setOption("FILENAME", $tema.".kmz"); + $l->setmetadata("wfs_getfeature_formatlist","kmz"); + } if(strtolower($OUTPUTFORMAT) == "shape-zip"){ $l = $oMap->getlayer(0); $n = $l->name; diff --git a/ogc/dicionario.js b/ogc/dicionario.js index f4769c3..7e25a59 100755 --- a/ogc/dicionario.js +++ b/ogc/dicionario.js @@ -52,14 +52,19 @@ ogc.dicionario = es : "Descargar CSV a través de WFS pero sin geometría" }], "kmz" : [{ - pt : "Download KMZ", + pt : "Download KMZ (KML vetorial compactado)", en : "Download KMZ", es : "Descargar KMZ" }], + "kmlwms" : [{ + pt : "Download KML (com WMS embutido)", + en : "", + es : "" + }], "kml" : [{ - pt : "Download KML", - en : "Download KML", - es : "Descargar KML" + pt : "Download KML (vetorial)", + en : "", + es : "" }], "explore" : [{ pt : "Explore a tabela de atributos", diff --git a/ogc/templates/templatelinksdownload.php b/ogc/templates/templatelinksdownload.php index cb4a259..3d37551 100755 --- a/ogc/templates/templatelinksdownload.php +++ b/ogc/templates/templatelinksdownload.php @@ -7,6 +7,7 @@
{{{explore}}} diff --git a/pacotes/kmlmapserver/classes/kmlserver.class.php b/pacotes/kmlmapserver/classes/kmlserver.class.php index 20f2601..9465e54 100755 --- a/pacotes/kmlmapserver/classes/kmlserver.class.php +++ b/pacotes/kmlmapserver/classes/kmlserver.class.php @@ -70,6 +70,7 @@ class KmlServer { $this->service->run(); } else { include 'layerserver.class.php'; + error_reporting(0); $this->service = new LayerServer(); $this->service->run(); } @@ -81,7 +82,10 @@ class KmlServer { function get_request(){ $this->service = $this->load_parm('service'); if(!$this->service){ - $this->service= 'kml'; + $this->service= $this->load_parm('request'); + } + if(!$this->service){ + $this->service= "kml"; } } diff --git a/pacotes/kmlmapserver/classes/layerserver.class.php b/pacotes/kmlmapserver/classes/layerserver.class.php index c42b31b..508ea7b 100755 --- a/pacotes/kmlmapserver/classes/layerserver.class.php +++ b/pacotes/kmlmapserver/classes/layerserver.class.php @@ -153,7 +153,7 @@ class LayerServer * wether folder should contain networklinks instead of real geometries * it is automatically set when all layers are requested */ - var $_networklink; + var $_networklink = false; var $postgis_mapa; /** @@ -191,8 +191,6 @@ class LayerServer if (! $this->typename) { $this->_networklink = true; $this->typename = $this->get_layer_list(); - } else { - $this->_networklink = false; } if ($this->_networklink == false) { // desliga todos os layers @@ -276,6 +274,11 @@ class LayerServer $this->request = $this->load_parm('request', 'kml'); if ($this->request == 'kmz') { $this->_zipped = true; + } else { + $this->_zipped = false; + } + if($this->request == "kmlwms"){ + $this->_networklink = true; } if (! $this->map) { $this->set_error('No mapfile specified'); @@ -325,7 +328,6 @@ class LayerServer } } else { foreach ($layers as $layer) { - // echo "Oi";exit; $this->process_layer_request($layer); } } @@ -684,6 +686,9 @@ class LayerServer { $ml = $element->addChild('MultiGeometry'); foreach (split('\), \(', $wkt) as $line) { + //$line = str_replace("MULTIPOLYGON (","POLYGON ",$line).")"; + $line = str_replace(array("MULTIPOLYGON",")","("),"",$line); + //$line = "POLYGON ((".$line."))"; $this->add_polygon($line, $ml, $featurename); } } @@ -1107,7 +1112,7 @@ class LayerServer for ($i = 0; $i < ($maptemp->numlayers); $i ++) { $l = $maptemp->getlayer($i); $l->set("status", MS_DEFAULT); - if (! $this->_zipped) { + if ($this->_networklink == true || $l->type == MS_LAYER_RASTER ) { $l->set("type", MS_LAYER_RASTER); $l->setmetadata('wms_onlineresource', "../../ogc.php?tema=" . $temp . "&width=1500&height=1500&TRANSPARENT=true&FORMAT=image/png&"); $l->setmetadata("ows_enable_request", "*"); @@ -1116,11 +1121,7 @@ class LayerServer } } else { $this->map_object = ms_newMapObj($this->map); - // $w = $this->map_object->web; - // $w->set("template","none.htm"); - if (! $this->_zipped) { - // $this->map_object->setmetadata('wms_onlineresource',$servidor.":80".$locmapserv."?map=".$temp."&width=1500&height=1500&"); $this->map_object->setmetadata('wms_onlineresource', "../../ogc.php?tema=" . $temp . "&width=1500&height=1500&TRANSPARENT=true&FORMAT=image/png&"); $this->map_object->setmetadata("ows_enable_request", "*"); } @@ -1128,10 +1129,6 @@ class LayerServer for ($i = 0; $i < $n; $i ++) { $l = $this->map_object->getlayer($i); $l->set("status", MS_DEFAULT); - if (! $this->_zipped) - $l->set("type", MS_LAYER_RASTER); - // $l->setmetadata('wms_onlineresource',"../../ogc.php?tema=".$temp."&width=500&height=500&"); - // ms_newLayerObj($this->map_object, $l); } } if (! $this->map_object) { @@ -1181,7 +1178,7 @@ class LayerServer */ function send_header() { - header('Content-Disposition: attachment; filename=kml.km' . ($this->_zipped ? 'z' : 'l')); + header('Content-Disposition: attachment; filename='.$this->typename."_".$this->request .'.km' . ($this->_zipped ? 'z' : 'l')); header('Content-type: application/vnd.google-earth.km' . ($this->_zipped ? 'z' : 'l') . '+XML'); } -- libgit2 0.21.2