[Mapbender-commits] r6855 - in trunk/mapbender/http: classes php

svn_mapbender at osgeo.org svn_mapbender at osgeo.org
Tue Aug 31 12:45:36 EDT 2010


Author: armin11
Date: 2010-08-31 16:45:36 +0000 (Tue, 31 Aug 2010)
New Revision: 6855

Added:
   trunk/mapbender/http/php/mod_layerISOMetadataWriteToFolder.php
Modified:
   trunk/mapbender/http/classes/class_connector.php
   trunk/mapbender/http/php/mod_layerISOMetadata.php
Log:
Some bugfixing and extensions for inspire metadata generation

Modified: trunk/mapbender/http/classes/class_connector.php
===================================================================
--- trunk/mapbender/http/classes/class_connector.php	2010-08-31 16:32:40 UTC (rev 6854)
+++ trunk/mapbender/http/classes/class_connector.php	2010-08-31 16:45:36 UTC (rev 6855)
@@ -137,7 +137,7 @@
 				break;	
 	
 			case "curlSendCustomHeaders":
-				$this->curlSendHeaders = $value;
+				$this->curlSendCustomHeaders = $value;
 				break;	
 	
 			case "httpContentType":

Modified: trunk/mapbender/http/php/mod_layerISOMetadata.php
===================================================================
--- trunk/mapbender/http/php/mod_layerISOMetadata.php	2010-08-31 16:32:40 UTC (rev 6854)
+++ trunk/mapbender/http/php/mod_layerISOMetadata.php	2010-08-31 16:45:36 UTC (rev 6855)
@@ -78,8 +78,10 @@
 		$sql .= "wms.wms_title, wms.wms_abstract, wms.wms_id, wms.fees, wms.accessconstraints, wms.contactperson, ";
 		$sql .= "wms.contactposition, wms.contactorganization, wms.address, wms.city, wms_timestamp, wms_owner, ";
 		$sql .= "wms.stateorprovince, wms.postcode, wms.contactvoicetelephone, wms.contactfacsimiletelephone, wms.wms_owsproxy,";
-		$sql .= "wms.contactelectronicmailaddress, wms.country ";
-		$sql .= "FROM wms, layer WHERE layer_id = $1 and layer.fkey_wms_id = wms.wms_id";
+		$sql .= "wms.contactelectronicmailaddress, wms.country , ";
+		$sql .= "layer_epsg.minx || ',' || layer_epsg.miny || ',' || layer_epsg.maxx || ',' || layer_epsg.maxy  as bbox ";
+		$sql .= "FROM wms, layer, layer_epsg WHERE layer_id = $1 and layer.fkey_wms_id = wms.wms_id";
+		$sql .= " and layer_epsg.fkey_layer_id=layer.layer_id and layer_epsg.epsg='EPSG:4326'";
 	}
 	$v = array((integer)$recordId);
 	$t = array('i');
@@ -389,6 +391,35 @@
 	$CI_ResponsibleParty->appendChild($role);
 	$pointOfContact->appendChild($CI_ResponsibleParty);
 	$SV_ServiceIdentification->appendChild($pointOfContact);
+	//generate graphical overview part
+	$sql = "SELECT layer_preview.layer_map_preview_filename FROM layer_preview WHERE layer_preview.fkey_layer_id=$1";
+	$v = array((integer)$mapbenderMetadata["layer_id"]);
+	$t = array('i');
+	$res = db_prep_query($sql,$v,$t);
+	$row = db_fetch_array($res);
+	
+	if (isset($row['layer_map_preview_filename']) & $row['layer_map_preview_filename'] != '') {
+		$graphicOverview=$iso19139->createElement("gmd:graphicOverview");
+		$MD_BrowseGraphic=$iso19139->createElement("gmd:MD_BrowseGraphic");
+		$fileName=$iso19139->createElement("gmd:fileName");
+		$fileName_cs=$iso19139->createElement("gco:characterString");
+		$previewFilenameText = $iso19139->createTextNode("http://www.gdi-rp-dienste3.rlp.de/mapbender/x_geoportal/layer_preview/".$row['layer_map_preview_filename']);
+		$fileName_cs->appendChild($previewFilenameText);
+		$fileName->appendChild($fileName_cs);
+		$MD_BrowseGraphic->appendChild($fileName);
+		$graphicOverview->appendChild($MD_BrowseGraphic);
+		$SV_ServiceIdentification->appendChild($graphicOverview);
+	}
+	
+	/*<gmd:graphicOverview>
+  		<gmd:MD_BrowseGraphic>
+   			 <gmd:fileName>
+      				<gco:CharacterString>http://goesr.noaa.gov/browse/datasetIdentifier</gco:CharacterString>
+    			</gmd:fileName>
+  		</gmd:MD_BrowseGraphic>
+	</gmd:graphicOverview>*/
+	
+
 	//generate keyword part - for services the inspire themes are not applicable!!!
 	//read keywords for resource out of the database:
 	$sql = "SELECT keyword.keyword FROM keyword, layer_keyword WHERE layer_keyword.fkey_layer_id=$1 AND layer_keyword.fkey_keyword_id=keyword.keyword_id";
@@ -569,10 +600,10 @@
 	$gmd_URL=$iso19139->createElement("gmd:URL");
 	//Check if anonymous user has rights to access this layer - if not ? which resource should be advertised? TODO
 	if ($hasPermission) {
-		$gmd_URLText=$iso19139->createTextNode(urlencode("http://www.geoportal.rlp.de/mapbender/x_geoportal/wms.php?layer_id=".$mapbenderMetadata['layer_id']."&REQUEST=GetCapabilities&VERSION=1.1.1&SERVICE=WMS"));
+		$gmd_URLText=$iso19139->createTextNode("http://www.geoportal.rlp.de/mapbender/x_geoportal/wms.php?layer_id=".$mapbenderMetadata['layer_id']."");
 	}
 	else {
-		$gmd_URLText=$iso19139->createTextNode(urlencode("https://www.geoportal.rlp.de/http_auth/".$mapbenderMetadata['layer_id']."?REQUEST=GetCapabilities&VERSION=1.1.1&SERVICE=WMS"));
+		$gmd_URLText=$iso19139->createTextNode("https://www.geoportal.rlp.de/http_auth/".$mapbenderMetadata['layer_id']."?");
 	}
 	$gmd_URL->appendChild($gmd_URLText);
 	$gmd_linkage->appendChild($gmd_URL);

Added: trunk/mapbender/http/php/mod_layerISOMetadataWriteToFolder.php
===================================================================
--- trunk/mapbender/http/php/mod_layerISOMetadataWriteToFolder.php	                        (rev 0)
+++ trunk/mapbender/http/php/mod_layerISOMetadataWriteToFolder.php	2010-08-31 16:45:36 UTC (rev 6855)
@@ -0,0 +1,97 @@
+<?php
+#http://www.geoportal.rlp.de/mapbender/php/mod_layerISOMetadata.php?SERVICE=WMS&outputFormat=iso19139&Id=24356
+# $Id: mod_layerISOMetadata.php 235
+# http://www.mapbender.org/index.php/Inspire_Metadata_Editor
+# Copyright (C) 2002 CCGIS 
+#
+# 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__) . "/../../core/globalSettings.php");
+require_once(dirname(__FILE__) . "/../classes/class_connector.php");
+
+$con = db_connect(DBSERVER,OWNER,PW);
+db_select_db(DB,$con);
+
+//define the view or table where to read out the layer ids for which metadatafiles should be generated
+$wmsView = "wms_search_table_test";
+//$wmsView = '';
+//parse request parameter
+//make all parameters available as upper case
+
+foreach($_REQUEST as $key => $val) {
+	$_REQUEST[strtoupper($key)] = $val;
+}
+//validate request params
+
+//
+if (!isset($_REQUEST['TYPE'])) {
+	echo 'GET Parameter Type lacks'; 
+	die();
+}
+
+if (isset($_REQUEST['TYPE']) and $_REQUEST['TYPE'] != "ALL") {
+	//
+	echo 'validate: <b>'.$_REQUEST['TYPE'].'</b> is not valid.<br/>'; 
+	die();
+}
+
+$sql = "SELECT layer_id ";
+$sql .= "FROM ".$wmsView;
+$v = array();
+$t = array();
+$res = db_prep_query($sql,$v,$t);
+
+$generatorScript = '/mapbender/php/mod_layerISOMetadata.php?';
+$generatorBaseUrl = 'http://localhost'.$generatorScript;
+
+echo $generatorBaseUrl."<br>";
+
+while($row = db_fetch_array($res)){
+	$generatorUrl = $generatorBaseUrl."SERVICE=WMS&outputFormat=iso19139&id=".$row['layer_id'];
+	echo "URL requested : ".$generatorUrl."<br>";
+	$generatorInterfaceObject = new connector($generatorUrl);
+	$ISOFile = $generatorInterfaceObject->file;
+	#echo "Returned value: ".$ISOFile."<br>";
+	//generate file identifier:
+	$fileId = guid();
+	echo "File ID ".$fileId." generated<br>";
+	//generate temporary files under tmp
+	if($h = fopen(TMPDIR."/metadata/mapbenderLayerMetadata_".$row['layer_id']."_".$fileId."_iso19139.xml","w")){
+		if(!fwrite($h,$ISOFile)){
+			$e = new mb_exception("mod_layerISOMetadata: cannot write to file: ".TMPDIR."/mapbenderLayerMetadata_".$row['layer_id']."_".$fileId."_iso19139.xml");
+		}
+	echo "File for ID ".$fileId." written to TMP<br>";
+	fclose($h);
+	}
+}
+function guid(){
+    if (function_exists('com_create_guid')){
+        return com_create_guid();
+    }else{
+        mt_srand((double)microtime()*10000);//optional for php 4.2.0 and up.
+        $charid = strtoupper(md5(uniqid(rand(), true)));
+        $hyphen = chr(45);// "-"
+        $uuid = chr(123)// "{"
+                .substr($charid, 0, 8).$hyphen
+                .substr($charid, 8, 4).$hyphen
+                .substr($charid,12, 4).$hyphen
+                .substr($charid,16, 4).$hyphen
+                .substr($charid,20,12)
+                .chr(125);// "}"
+        return $uuid;
+    }
+}
+



More information about the Mapbender_commits mailing list