[Mapbender-commits] r1805 - branches/mapbender_sld/http/sld/classes

svn_mapbender at osgeo.org svn_mapbender at osgeo.org
Thu Nov 15 10:46:38 EST 2007


Author: mschulz
Date: 2007-11-15 10:46:38 -0500 (Thu, 15 Nov 2007)
New Revision: 1805

Added:
   branches/mapbender_sld/http/sld/classes/DbUtils.php
Log:
Initial checkin, SLD db-utility functions

Added: branches/mapbender_sld/http/sld/classes/DbUtils.php
===================================================================
--- branches/mapbender_sld/http/sld/classes/DbUtils.php	                        (rev 0)
+++ branches/mapbender_sld/http/sld/classes/DbUtils.php	2007-11-15 15:46:38 UTC (rev 1805)
@@ -0,0 +1,132 @@
+<?php
+
+# Copyright (C) 2007 in medias res GmbH
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+require_once(dirname(__FILE__)."/../../../conf/mapbender.conf");
+$con = db_connect(DBSERVER,OWNER,PW);
+db_select_db(DB,$con);
+
+/**
+ * This class wraps db functions of the sld implementation.
+ *
+ * @package sld_classes
+ * @author Michael Schulz
+ */
+class DbUtils 
+{
+    /**
+     * Read the layer_id from the DB.
+     * 
+     * @param <int> the wms_id
+     * @param <string> the layer_name
+     * @return <int> the layer_id
+     */
+	function getLayerIdFromLayerName($wms_id, $layer_name) {
+		$sql = "SELECT * FROM layer WHERE fkey_wms_id = $1 AND layer_name = $2";
+		$v = array($wms_id, $layer_name);
+		$t = array('i', 's');
+		$res = db_prep_query($sql,$v,$t);
+		if ( db_fetch_row($res, 0) ) {
+			return db_result($res, 0, "layer_id");
+		} else {
+			return false;
+		}
+	}
+	
+	/**
+     * Check for a layer wfs-Conf.
+     * 
+     * @param <int> the layer_id
+     * @param <string> the gui_id
+     * @return <int> wfs_conf_id
+     */
+	function getLayerWfsConfId($gui_id, $layer_id) {
+		$sql = "SELECT gui_layer_wfs_featuretype FROM gui_layer WHERE fkey_gui_id = $1 AND fkey_layer_id = $2";
+		$v = array($gui_id, $layer_id);
+		$t = array('s', 'i');
+		$res = db_prep_query($sql,$v,$t);
+		if ( db_fetch_row($res, 0) ) {
+			return db_result($res, 0, "gui_layer_wfs_featuretype");
+		} else {
+			return false;
+		}
+	}
+
+	/**
+     * return layer wfs-FeatureType-id.
+     * 
+     * @param <int> the wfs_conf_id
+     * @return <int> fkey_featuretype_id
+     */
+	function getWfsConfFeatureTypeId($wfs_conf_id) {
+		$sql = "SELECT fkey_featuretype_id FROM wfs_conf WHERE wfs_conf_id = $1";
+		$v = array($wfs_conf_id);
+		$t = array('i');
+		$res = db_prep_query($sql,$v,$t);
+		if ( db_fetch_row($res, 0) ) {
+			return db_result($res, 0, "fkey_featuretype_id");
+		} else {
+			return false;
+		}
+	}	
+	
+	/**
+	 * create a getmap request for the map images
+	 * 
+	 * @param <string> gui_id
+	 * @param <int> layer_id
+	 * @param <int> wms_id
+	 *
+	 * @return <string> getmap URL
+	 */
+	function getPreviewMapUrl($gui_id, $layer_id, $wms_id) {
+		$previewMapSrs = "";
+		$sql = "select w.gui_wms_epsg as srs, e.minx, e.miny, e.maxx, e.maxy ";
+		$sql .= "from gui_wms w, layer l, layer_epsg e ";
+		$sql .= "where l.fkey_wms_id=w.fkey_wms_id and e.fkey_layer_id=l.layer_id and e.epsg=w.gui_wms_epsg and ";
+		$sql .= "l.layer_parent = '' and w.fkey_gui_id = $1 and w.gui_wms_position=0";
+		$v = array($gui_id);
+		$t = array('s');
+		$res = db_prep_query($sql,$v,$t);
+		if ( $res ) {
+			$row = db_fetch_array($res, 0); 
+			$previewMapSrs .= "&SRS=".$row["srs"]."&BBOX=".$row["minx"].",".$row["miny"].",".$row["maxx"].",".$row["maxy"];
+		} else {
+			return false;
+		}
+		
+		$sql = "select wms.wms_getmap as mapurl, layer.layer_name, wms.wms_version as version, w.gui_wms_mapformat as format ";
+		$sql .= "from gui_wms w, gui_layer l, wms, layer ";
+		$sql .= "where w.fkey_gui_id=l.fkey_gui_id and wms.wms_id = w.fkey_wms_id and l.fkey_layer_id = layer.layer_id and ";
+		$sql .= "w.fkey_gui_id=$1 and l.fkey_layer_id=$2 and wms.wms_id = $3";
+		$v = array($gui_id, $layer_id, $wms_id);
+		$t = array('s', 'i', 'i');
+		$res = db_prep_query($sql,$v,$t);
+		$previewMapUrl = "";
+		if ( $res ) {
+			$row = db_fetch_array($res, 0); 
+			$previewMapUrl .= $row["mapurl"]."SERVICE=WMS&REQUEST=GetMap&VERSION=".$row["version"];
+			$previewMapUrl .= "&LAYERS=".$row["layer_name"]."&STYLES=";
+			$previewMapUrl .= $previewMapSrs;
+			$previewMapUrl .= "&FORMAT=".$row["format"];
+			return $previewMapUrl;
+		} else {
+			return false;
+		}
+	}
+}
+
+?>
\ No newline at end of file



More information about the Mapbender_commits mailing list