[Mapbender-commits] r4915 - trunk/mapbender/http/php
svn_mapbender at osgeo.org
svn_mapbender at osgeo.org
Wed Nov 4 08:51:02 EST 2009
Author: kmq
Date: 2009-11-04 08:51:01 -0500 (Wed, 04 Nov 2009)
New Revision: 4915
Added:
trunk/mapbender/http/php/kmldownload.php
Modified:
trunk/mapbender/http/php/mod_layerMetadata.php
Log:
added KML export in Metadata
Added: trunk/mapbender/http/php/kmldownload.php
===================================================================
--- trunk/mapbender/http/php/kmldownload.php (rev 0)
+++ trunk/mapbender/http/php/kmldownload.php 2009-11-04 13:51:01 UTC (rev 4915)
@@ -0,0 +1,43 @@
+<?php
+
+require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+
+ob_start();
+
+$download = array();
+
+$download["dir"] = TMPDIR . "/";
+$download["file"] = trim($_REQUEST["download"]);
+
+if(!(bool)$download["file"]) {
+ die("No filename given.");
+}
+
+if((int)strpos($download["file"],"..") !== 0) {
+ die("Illegal filename given.");
+}
+
+if(!file_exists(implode($download)) || !is_readable(implode($download))) {
+ die("An error occured.");
+}
+/*
+switch(substr($download["file"],-3)) {
+ case "gpx":
+ $filename = "GPS-Track.gpx";
+ break;
+ case "kml":
+ $filename = "Google-Earth-Flug.kml";
+ break;
+ default:
+ die("An error occured.");
+}
+*/
+$filename = $download["file"];
+
+#"header("Content-Type: application/octet-stream");
+header("Content-Type: application/vnd.google-earth.kml+xml");
+header("Content-Disposition: attachment; filename=\"".$filename."\"");
+
+readfile(implode($download));
+
+?>
Modified: trunk/mapbender/http/php/mod_layerMetadata.php
===================================================================
--- trunk/mapbender/http/php/mod_layerMetadata.php 2009-11-04 10:29:29 UTC (rev 4914)
+++ trunk/mapbender/http/php/mod_layerMetadata.php 2009-11-04 13:51:01 UTC (rev 4915)
@@ -45,6 +45,40 @@
return trim($epsg_list);
}
+//function to generate temporal kml-file
+function generateKML($kml_id,$resdir,$getmapurl,$wmsversion,$layername,$layertitle,$north,$south,$east,$west){
+$getmapurl = eregi_replace("&","&", $getmapurl);
+//$kml_id=md5(uniqid(rand(), true));
+if($h = fopen($resdir."/".$kml_id.".kml","w+")){
+// $content = $text .chr(13).chr(10); //example for linefeeds
+$kml="<?xml version=\"1.0\" encoding=\"UTF-8\"?>".chr(13).chr(10);
+$kml.="<kml xmlns=\"http://earth.google.com/kml/2.2\">".chr(13).chr(10);
+$kml.="<GroundOverlay>".chr(13).chr(10);
+$kml.="<name>".$layertitle." - www.geoportal.rlp.de</name>".chr(13).chr(10);
+$kml.="<Icon>".chr(13).chr(10);
+$kml.="<href>".$getmapurl."VERSION=".$wmsversion."&REQUEST=GetMap&SRS=EPSG:4326&WIDTH=512&HEIGHT=512&LAYERS=".$layername."&STYLES=&TRANSPARENT=TRUE&BGCOLOR=0xffffff&FORMAT=image/png&</href>".chr(13).chr(10);
+//http://www.geoportal.rlp.de/owsproxy/3acc4cc90d02c754c531a9d5fa1b1545/5d38dd28a830f2c4ab97a506225d0a9b?VERSION=1.1.1&REQUEST=GetMap&SRS=EPSG:4326&WIDTH=512&HEIGHT=512&LAYERS=boriweCD01&TRANSPARENT=TRUE&FORMAT=image/jpeg&</href>
+$kml.="<RefreshMode>onExpire</RefreshMode>".chr(13).chr(10);
+$kml.="<viewRefreshMode>onStop</viewRefreshMode>".chr(13).chr(10);
+$kml.="<viewRefreshTime>1</viewRefreshTime>".chr(13).chr(10);
+$kml.="<viewBoundScale>0.87</viewBoundScale>".chr(13).chr(10);
+$kml.="</Icon>".chr(13).chr(10);
+$kml.="<LatLonBox>".chr(13).chr(10);
+$kml.="<north>".$north."</north>".chr(13).chr(10);
+$kml.="<south>".$south."</south>".chr(13).chr(10);
+$kml.="<east>".$east."</east>".chr(13).chr(10);
+$kml.="<west>".$west."</west>".chr(13).chr(10);
+$kml.="</LatLonBox>".chr(13).chr(10);
+$kml.="</GroundOverlay>".chr(13).chr(10);
+$kml.="</kml>".chr(13).chr(10);
+ if(!fwrite($h,$kml)){
+ #exit;
+ }
+ fclose($h);
+ }
+}
+
+
$metadataStr = "";
$metadataStr .= '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">' .
'<head>' .
@@ -196,7 +230,26 @@
}
}
$metadataStr .= "</td></tr>";
+
+
+ $resdir = TMPDIR;
+ $kml_id=md5(uniqid(rand(), true));
+ //dbselect for generate KML
+ $sql_kml = "select wms.wms_getmap, wms.wms_version, layer.layer_name,layer.layer_title, layer_epsg.minx,layer_epsg.miny,layer_epsg.maxx,layer_epsg.maxy from wms, layer, layer_epsg, wms_format where layer.layer_id=$1 and layer.fkey_wms_id=wms.wms_id and layer.layer_id=layer_epsg.fkey_layer_id and layer_epsg.epsg='EPSG:4326' and wms.wms_id=wms_format.fkey_wms_id and wms_format.data_format like '%image/png%' LIMIT 1";
+ $v_kml = array($layer_id);
+
+ $t_kml = array('i');
+
+ $res_kml = db_prep_query($sql_kml, $v_kml, $t_kml);
+
+ $row_kml = db_fetch_array($res_kml);
+
+ generateKML($kml_id,$resdir,$row_kml['wms_getmap'],$row_kml['wms_version'],$row_kml['layer_name'],$row_kml['layer_title'],$row_kml['maxy'],$row_kml['miny'],$row_kml['maxx'],$row_kml['minx']);
+ //export KML
+ $metadataStr .= "<tr><th>Weitere Schnittstellen</th><td>";
+ $metadataStr .= "<a href='kmldownload.php?download=".$kml_id.".kml'>KML (Keyhole Markup Language)</a>";
+
$user = new User();
//
More information about the Mapbender_commits
mailing list