Commit a18b0b9bc558c36617602ab6f0bfc922a6dfbaef
1 parent
80991dbd
Exists in
master
Coreção na legenda quando é gerado KMZ. Uso do Mapserver ao invés de KMZ quando …
…a requisição OGC for KML
Showing
7 changed files
with
103 additions
and
14 deletions
Show diff stats
aplicmap/ogcwsv6.map
... | ... | @@ -43,7 +43,7 @@ MAP |
43 | 43 | NAME 'kml' |
44 | 44 | DRIVER 'OGR/KML' |
45 | 45 | MIMETYPE "application/vnd.google-earth.kml+xml" |
46 | - #FORMATOPTION "STORAGE=memory" | |
46 | + FORMATOPTION "STORAGE=memory" | |
47 | 47 | IMAGEMODE FEATURE |
48 | 48 | END |
49 | 49 | OUTPUTFORMAT |
... | ... | @@ -55,7 +55,7 @@ MAP |
55 | 55 | END |
56 | 56 | |
57 | 57 | PROJECTION |
58 | - "+proj=longlat +ellps=GRS67 +no_defs" | |
58 | + "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs" | |
59 | 59 | END |
60 | 60 | LEGEND |
61 | 61 | IMAGECOLOR 255 255 255 | ... | ... |
aplicmap/ogcwsv7.map
1 | 1 | MAP |
2 | 2 | EXTENT -76.512593 -36.948432 -29.585185 7.046013 |
3 | 3 | FONTSET "../symbols/fontes.txt" |
4 | - SYMBOLSET "../symbols/simbolosv6.sym" | |
4 | + SYMBOLSET "../symbols/simbolosv7.sym" | |
5 | 5 | IMAGECOLOR 255 255 255 |
6 | 6 | IMAGETYPE png |
7 | 7 | MAXSIZE 10000 |
... | ... | @@ -42,8 +42,8 @@ MAP |
42 | 42 | OUTPUTFORMAT |
43 | 43 | NAME 'kml' |
44 | 44 | DRIVER 'OGR/KML' |
45 | - MIMETYPE "application/vnd.google-earth.kml+xml" | |
46 | - #FORMATOPTION "STORAGE=memory" | |
45 | + #MIMETYPE "application/vnd.google-earth.kml+xml" | |
46 | + FORMATOPTION "STORAGE=memory" | |
47 | 47 | IMAGEMODE FEATURE |
48 | 48 | END |
49 | 49 | OUTPUTFORMAT |
... | ... | @@ -55,7 +55,7 @@ MAP |
55 | 55 | END |
56 | 56 | |
57 | 57 | PROJECTION |
58 | - "+proj=longlat +ellps=GRS67 +no_defs" | |
58 | + "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs" | |
59 | 59 | END |
60 | 60 | LEGEND |
61 | 61 | IMAGECOLOR 255 255 255 | ... | ... |
classesjs/datadownload.js
... | ... | @@ -319,6 +319,7 @@ function mostraDownload(retorno) |
319 | 319 | ins += "<a href='"+g_locaplic+"/ogc.php?tema="+retorno.tema+"&SERVICE=WFS&VERSION=1.1.0&request=getfeature&OUTPUTFORMAT=shape-zip' target=blank >Download shapefile com WFS (arquivo compactado incluindo .prj)</a><br><br>"; |
320 | 320 | ins += "<a href='"+g_locaplic+"/ogc.php?tema="+retorno.tema+"&SERVICE=WFS&VERSION=1.1.0&request=getfeature&OUTPUTFORMAT=csv' target=blank >Download CSV com WFS (arquivo compactado)</a><br><br>"; |
321 | 321 | ins += "<a href='"+g_locaplic+"/ogc.php?tema="+retorno.tema+"&SERVICE=WFS&VERSION=1.1.0&request=getfeature&OUTPUTFORMAT=kmz' target=blank >Download KMZ</a><br><br>"; |
322 | + ins += "<a href='"+g_locaplic+"/ogc.php?tema="+retorno.tema+"&SERVICE=WFS&VERSION=1.1.0&request=getfeature&OUTPUTFORMAT=kml' target=blank >Download KML</a><br><br>"; | |
322 | 323 | |
323 | 324 | for (var arq=0;arq<n;arq++) |
324 | 325 | { | ... | ... |
datadownload.htm
ogc.htm
... | ... | @@ -97,6 +97,9 @@ A:hover { |
97 | 97 | color: #4142ff; |
98 | 98 | } |
99 | 99 | |
100 | +#panellistaarquivos_h{ | |
101 | + line-height: 1.5; | |
102 | +} | |
100 | 103 | </style> |
101 | 104 | </head> |
102 | 105 | <body class=" yui-skin-sam " style="background-color: white;"> |
... | ... | @@ -190,7 +193,6 @@ A:hover { |
190 | 193 | ins += "<p>Webservice com todas as camadas: <a href='" + servico + "' target='_blank' >" + servico + "</a>"; |
191 | 194 | ins += "<p>Webservice dessa camada: <a href='" + servico + "tema=" + tema + "&' target='_blank' >" + servico + "tema=" + tema + "&</a>"; |
192 | 195 | ins += "<p>Link para essa página: <a href='"+ window.location.href.split("?")[0] + "?temaOgc=" + tema + "'>"+ window.location.href.split("?")[0] + "?temaOgc=" + tema + "</a>"; |
193 | - | |
194 | 196 | ins += "<p>Bookmark: <span id=bm ></span>"; |
195 | 197 | ins += |
196 | 198 | "<p><iframe src='http://www.facebook.com/plugins/like.php?href=" + servico |
... | ... | @@ -200,6 +202,8 @@ A:hover { |
200 | 202 | ins += |
201 | 203 | "<p><a target=blank href='"+servico+"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="+tema+"' />testar getmap</a>"; |
202 | 204 | ins += |
205 | + "<p><a target=blank href='"+servico+"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=getlegendgraphic&layers="+tema+"' />testar getLegendGraphic</a>"; | |
206 | + ins += | |
203 | 207 | "<p><a target=blank href='"+servico+"format=application/openlayers&bbox=-76.5125927,-39.3925675209,-29.5851853,9.49014852081&layers="+tema+"' />visualizar com openLayers</a>"; |
204 | 208 | ins += |
205 | 209 | "<p><a target=blank href='"+servico+"OUTPUTFORMAT=shape-zip&bbox=-76.5125927,-39.3925675209,-29.5851853,9.49014852081&service=wfs&version=1.1.0&request=getfeature&layers="+tema+"&typeName="+tema+"' />download shapefile via WFS</a>"; |
... | ... | @@ -210,6 +214,8 @@ A:hover { |
210 | 214 | ins += |
211 | 215 | "<p><a target=blank href='"+servico+"OUTPUTFORMAT=kmz&bbox=-76.5125927,-39.3925675209,-29.5851853,9.49014852081&service=wfs&version=1.1.0&request=getfeature&layers="+tema+"&typeName="+tema+"' />download KMZ</a>"; |
212 | 216 | ins += |
217 | + "<p><a target=blank href='"+servico+"OUTPUTFORMAT=kml&bbox=-76.5125927,-39.3925675209,-29.5851853,9.49014852081&service=wfs&version=1.1.0&request=getfeature&layers="+tema+"&typeName="+tema+"' />download KML</a>"; | |
218 | + ins += | |
213 | 219 | "<p><a target=blank href='"+servico+"OUTPUTFORMAT=geojson&bbox=-76.5125927,-39.3925675209,-29.5851853,9.49014852081&service=wfs&version=1.1.0&request=getfeature&layers="+tema+"&typeName="+tema+"' />GeoJson</a>"; |
214 | 220 | ins += |
215 | 221 | "<p><a target=blank href='ferramentas/recline/default.php?tema="+tema+"' />Explore a tabela de atributos</a>"; | ... | ... |
ogc.php
... | ... | @@ -181,9 +181,10 @@ if(!empty($OUTPUTFORMAT)){ |
181 | 181 | carregaCacheArquivo(); |
182 | 182 | } |
183 | 183 | // |
184 | -//para o caso da requisicao kml | |
184 | +//para o caso da requisicao kmz | |
185 | +//kmz nao funciona diretamente com mapserver | |
185 | 186 | // |
186 | -if(strtolower($OUTPUTFORMAT) == "kml" || strtolower($OUTPUTFORMAT) == "kmz"){ | |
187 | +if(strtolower($OUTPUTFORMAT) == "xkml" || strtolower($OUTPUTFORMAT) == "kmz"){ | |
187 | 188 | $urln = "pacotes/kmlmapserver/kmlservice.php?request=kmz&map=".$tema."&typename=".$tema; |
188 | 189 | header("Location:".$urln); |
189 | 190 | exit; |
... | ... | @@ -290,8 +291,7 @@ $arrayget["Z"] = ""; |
290 | 291 | $arrayget["X"] = ""; |
291 | 292 | $arrayget["Y"] = ""; |
292 | 293 | $arrayget["tms"] = ""; |
293 | -$nomeMapfileTmp = $dir_tmp."/ogc_".md5(implode("",$arrayget))."_".$agora.".map"; | |
294 | - | |
294 | +$nomeMapfileTmp = $dir_tmp."/ogc_".md5(implode("",$arrayget))."_".$agora.".map"; | |
295 | 295 | //essa variavel e usada para definir se a imagem final gerada devera ser cortada ou nao |
296 | 296 | $cortePixels = 0; |
297 | 297 | if(file_exists($nomeMapfileTmp) && $tipo == ""){ |
... | ... | @@ -558,7 +558,7 @@ else{ |
558 | 558 | } |
559 | 559 | } |
560 | 560 | $req->setParameter("LAYERS", implode(",",$lys)); |
561 | - $req->setParameter("STYLES", ""); | |
561 | + $req->setParameter("STYLES", ""); | |
562 | 562 | } |
563 | 563 | } |
564 | 564 | } |
... | ... | @@ -677,9 +677,10 @@ else{ |
677 | 677 | //caso seja download ou json ou csv |
678 | 678 | // |
679 | 679 | processaOutputformatMapfile(); |
680 | - | |
681 | 680 | $oMap->save($nomeMapfileTmp); |
681 | + | |
682 | 682 | validaAcessoTemas($nomeMapfileTmp,true); |
683 | + | |
683 | 684 | $oMap = ms_newMapobj($nomeMapfileTmp); |
684 | 685 | } |
685 | 686 | |
... | ... | @@ -945,6 +946,35 @@ if(strtolower($OUTPUTFORMAT) == "geojson" || strtolower($OUTPUTFORMAT) == "json" |
945 | 946 | |
946 | 947 | exit; |
947 | 948 | } |
949 | +if(strtolower($OUTPUTFORMAT) == "kml"){ | |
950 | + $oMap->owsdispatch($req); | |
951 | + $contenttype = ms_iostripstdoutbuffercontenttype(); | |
952 | + ms_iostripstdoutbuffercontentheaders(); | |
953 | + //grava em disco | |
954 | + $arq = $dir_tmp."/".$tema.".kml"; | |
955 | + $contents = ms_iogetstdoutbufferstring(); | |
956 | + file_put_contents($arq,$contents); | |
957 | + //envia para download | |
958 | + header('Content-Disposition: attachment; filename='.$tema.'.kml'); | |
959 | + ms_iogetStdoutBufferBytes(); | |
960 | + ms_ioresethandlers(); | |
961 | + exit; | |
962 | +} | |
963 | +//kmz nao funciona quando fornecido diretamente pelo mapserver | |
964 | +if(strtolower($OUTPUTFORMAT) == "kmz"){ | |
965 | + $oMap->owsdispatch($req); | |
966 | + $contenttype = ms_iostripstdoutbuffercontenttype(); | |
967 | + ms_iostripstdoutbuffercontentheaders(); | |
968 | + //grava em disco | |
969 | + $arq = $dir_tmp."/".$tema.".kmz"; | |
970 | + $contents = ms_iogetstdoutbufferstring(); | |
971 | + file_put_contents($arq,$contents); | |
972 | + //envia para download | |
973 | + header('Content-Disposition: attachment; filename='.$tema.'.kmz'); | |
974 | + ms_iogetStdoutBufferBytes(); | |
975 | + ms_ioresethandlers(); | |
976 | + exit; | |
977 | +} | |
948 | 978 | if(strtolower($OUTPUTFORMAT) == "shape-zip"){ |
949 | 979 | $oMap->owsdispatch($req); |
950 | 980 | $contenttype = ms_iostripstdoutbuffercontenttype(); |
... | ... | @@ -1245,6 +1275,14 @@ function getfeatureinfoJson(){ |
1245 | 1275 | } |
1246 | 1276 | function processaOutputformatMapfile(){ |
1247 | 1277 | global $OUTPUTFORMAT, $oMap, $tema, $ows_geomtype; |
1278 | + if(strtolower($OUTPUTFORMAT) == "kml"){ | |
1279 | + $l = $oMap->getlayer(0); | |
1280 | + $n = $l->name; | |
1281 | + $oMap->selectOutputFormat("kml"); | |
1282 | + $oMap->outputformat->setOption("STORAGE", "filesystem"); | |
1283 | + $oMap->outputformat->setOption("FILENAME", $tema.".kml"); | |
1284 | + $l->setmetadata("wfs_getfeature_formatlist","kml"); | |
1285 | + } | |
1248 | 1286 | if(strtolower($OUTPUTFORMAT) == "shape-zip"){ |
1249 | 1287 | $l = $oMap->getlayer(0); |
1250 | 1288 | $n = $l->name; |
... | ... | @@ -1290,6 +1328,24 @@ function carregaCacheArquivo(){ |
1290 | 1328 | readfile($arq); |
1291 | 1329 | exit; |
1292 | 1330 | } |
1331 | + } | |
1332 | + if(strtolower($OUTPUTFORMAT) == "kml"){ | |
1333 | + $arq = $dir_tmp."/".$tema.".kml"; | |
1334 | + if(file_exists($arq)){ | |
1335 | + header('Content-Disposition: attachment; filename='.$tema.'.kml'); | |
1336 | + header("Content-type: application/vnd.google-earth.kml+xml"); | |
1337 | + readfile($arq); | |
1338 | + exit; | |
1339 | + } | |
1340 | + } | |
1341 | + if(strtolower($OUTPUTFORMAT) == "kmz"){ | |
1342 | + $arq = $dir_tmp."/".$tema.".kmz"; | |
1343 | + if(file_exists($arq)){ | |
1344 | + header('Content-Disposition: attachment; filename='.$tema.'.kmz'); | |
1345 | + header("Content-type: application/vnd.google-earth.kmz"); | |
1346 | + readfile($arq); | |
1347 | + exit; | |
1348 | + } | |
1293 | 1349 | } |
1294 | 1350 | if(strtolower($OUTPUTFORMAT) == "geojson" || strtolower($OUTPUTFORMAT) == "json"){ |
1295 | 1351 | $arq = $dir_tmp."/".$tema.".json"; | ... | ... |
pacotes/kmlmapserver/classes/layerserver.class.php
... | ... | @@ -157,7 +157,29 @@ class LayerServer { |
157 | 157 | } else { |
158 | 158 | $this->_networklink = false; |
159 | 159 | } |
160 | - | |
160 | + //ajusta a legenda | |
161 | + $numlayers = $this->map_object->numlayers; | |
162 | + for ($i=0;$i < $numlayers;++$i){ | |
163 | + $layer = $this->map_object->getlayer($i); | |
164 | + if (($layer->data != "") && (strtoupper($layer->getmetadata("escondido")) != "SIM") && (strtoupper($layer->getmetadata("tema")) != "NAO")){ | |
165 | + if ($layer->numclasses > 0){ | |
166 | + $classe = $layer->getclass(0); | |
167 | + if (($classe->name == "") || ($classe->name == " ")){ | |
168 | + $classe->set("name",$layer->getmetadata("tema")); | |
169 | + } | |
170 | + //corrige o titulo da legenda | |
171 | + if($layer->type != 3 && $layer->type != 4){ | |
172 | + $nclass = $layer->numclasses; | |
173 | + for($j=0;$j<$nclass;$j++){ | |
174 | + $classe = $layer->getclass($j); | |
175 | + if($classe->title === ""){ | |
176 | + $classe->title = $classe->name; | |
177 | + } | |
178 | + } | |
179 | + } | |
180 | + } | |
181 | + } | |
182 | + } | |
161 | 183 | $imageObj = $this->map_object->drawlegend(); |
162 | 184 | $url = $imageObj->saveWebImage(); |
163 | 185 | $protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']); | ... | ... |