[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("&","&amp;", $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."&amp;REQUEST=GetMap&amp;SRS=EPSG:4326&amp;WIDTH=512&amp;HEIGHT=512&amp;LAYERS=".$layername."&amp;STYLES=&amp;TRANSPARENT=TRUE&amp;BGCOLOR=0xffffff&amp;FORMAT=image/png&amp;</href>".chr(13).chr(10);
+//http://www.geoportal.rlp.de/owsproxy/3acc4cc90d02c754c531a9d5fa1b1545/5d38dd28a830f2c4ab97a506225d0a9b?VERSION=1.1.1&amp;REQUEST=GetMap&amp;SRS=EPSG:4326&amp;WIDTH=512&amp;HEIGHT=512&amp;LAYERS=boriweCD01&amp;TRANSPARENT=TRUE&amp;FORMAT=image/jpeg&amp;</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