[prev in list] [next in list] [prev in thread] [next in thread]
List: mapbender-commits
Subject: [Mapbender-commits] r8386 - trunk/mapbender/http/php
From: svn_mapbender () osgeo ! org
Date: 2012-06-19 15:12:44
Message-ID: 20120619151244.EA831390378 () trac ! osgeo ! org
[Download RAW message or body]
Author: armin11
Date: 2012-06-19 08:12:44 -0700 (Tue, 19 Jun 2012)
New Revision: 8386
Removed:
trunk/mapbender/http/php/mod_inspireWmsDownloadFeed.php
Modified:
trunk/mapbender/http/php/mod_inspireDownloadFeed.php
trunk/mapbender/http/php/mod_showMetadata.php
Log:
Bugfixes for INSPIRE predefined download services for wms/wfs by usage of georss \
feeds - need little further work.
Modified: trunk/mapbender/http/php/mod_inspireDownloadFeed.php
===================================================================
--- trunk/mapbender/http/php/mod_inspireDownloadFeed.php 2012-06-18 20:48:30 UTC (rev \
8385)
+++ trunk/mapbender/http/php/mod_inspireDownloadFeed.php 2012-06-19 15:12:44 UTC (rev \
8386) @@ -339,6 +339,7 @@
$ressourceTitle = "Title of dataset cannot be found!";
}
}
+
//first use metadata abstract then layer abstract
if (isset($mapbenderMetadata[$m]->metadata_abstract) && \
$mapbenderMetadata[$m]->metadata_abstract != '' ) { @@ -357,9 +358,9 @@
$feedTitle = $feedDoc->createElement("title");
//$feedTitle->setAttribute("xml:lang", "de");
if ($type == 'SERVICE') {
- $feedTitleText = $feedDoc->createTextNode("INSPIRE Download Service Feed für \
".$ressourceTitle); + $feedTitleText = $feedDoc->createTextNode("INSPIRE Download \
Service Feed fuer ".$ressourceTitle); } else { //DATASET
- $feedTitleText = $feedDoc->createTextNode("INSPIRE Datensatz Feed für \
".$ressourceTitle); + $feedTitleText = $feedDoc->createTextNode("INSPIRE Datensatz \
Feed fuer ".$ressourceTitle); }
$feedTitle->appendChild($feedTitleText);
$feed->appendChild($feedTitle);
@@ -435,7 +436,7 @@
$feedLink->setAttribute("rel", "describedby");
$feedLink->setAttribute("type", "text/html");
$feedLink->setAttribute("hreflang", "de");
- $feedLink->setAttribute("title", "Nähere Beschreibung des Datensatzes");
+ $feedLink->setAttribute("title", "Naehere Beschreibung des Datensatzes");
$feed->appendChild($feedLink);
}
//5.1.6 - 5.1.7
@@ -668,7 +669,11 @@
//echo "maxyWms: ". $maxyWms .",";
$bboxWfs[$mapbenderMetadata[$i]->featuretype_name][$countBbox] = \
$minxWfs.",".$minyWfs.",".$maxxWfs.",".$maxyWfs; //transform bbox back to geographic \
coordinates
- $featureTypeBboxWGS84[] = \
transformBbox($minxWfs.",".$minyWfs.",".$maxxWfs.",".$maxyWfs,intval($epsgId[1]),4326);
+ $lonLatBbox = \
transformBbox($minxWfs.",".$minyWfs.",".$maxxWfs.",".$maxyWfs,intval($epsgId[1]),4326);
+ $lonLatBbox = explode(',',$lonLatBbox);
+ $featureTypeBboxWGS84[] = \
$lonLatBbox[1].",".$lonLatBbox[0].",".$lonLatBbox[3].",".$lonLatBbox[2]; \
+ //switch bbox to lat/lon cause inspire demands ist +
//$e = new mb_exception($test);
$countBbox++;
@@ -734,10 +739,10 @@
$ressourceServiceFeedEntryTitle = $ressourceTitle." - generiert aus WMS \
Capabilities dataURL Element"; break;
case "wfs":
- $ressourceServiceFeedEntryTitle = $ressourceTitle." - generiert über WFS \
GetFeature Aufrufe"; + $ressourceServiceFeedEntryTitle = $ressourceTitle." - \
generiert ueber WFS GetFeature Aufrufe"; break;
}
- $feedEntryTitle->appendChild($feedDoc->createTextNode("Feed Entry für: \
".$ressourceServiceFeedEntryTitle)); //TODO: maybe add some category? \
+ $feedEntryTitle->appendChild($feedDoc->createTextNode("Feed Entry fuer: \
".$ressourceServiceFeedEntryTitle)); //TODO: maybe add some category? } else {
switch ($mapbenderMetadata[$i]->origin) {
case "wmslayer":
@@ -747,7 +752,7 @@
$ressourceDataFeedEntryTitle = $ressourceTitle." - generiert aus WMS \
Capabilities dataURL Element"; break;
case "wfs":
- $ressourceDataFeedEntryTitle = $ressourceTitle." - generiert über WFS \
GetFeature Aufrufe"; + $ressourceDataFeedEntryTitle = $ressourceTitle." - \
generiert ueber WFS GetFeature Aufrufe"; break;
}
$feedEntryTitle->appendChild($feedDoc->createTextNode($ressourceDataFeedEntryTitle. \
" im CRS ".$mapbenderMetadata[$i]->metadata_ref_system." und Format \
".$mapbenderMetadata[$i]->format)); //TODO: maybe add some category? @@ -901,7 \
+906,7 @@ //<summary>This is the entry for water network ABC Dataset</summary>
if ($type == 'SERVICE') {
$feedEntrySummary = $feedDoc->createElement("summary");
- $feedEntrySummary->appendChild($feedDoc->createTextNode("Nähere Beschreibung des \
Feedinhaltes: ".$ressourceAbstract)); \
+ $feedEntrySummary->appendChild($feedDoc->createTextNode("Naehere Beschreibung des \
Feedinhaltes: ".$ressourceAbstract)); $feedEntry->appendChild($feedEntrySummary);
}
@@ -910,9 +915,12 @@
//<georss:polygon>47.202 5.755 55.183 5.755 55.183 15.253 47.202 15.253 47.202 \
5.755</georss:polygon> //TODO: Get this out of mb_metadata! If not given get it from \
layer bbox - but normally they should be identical! $feedEntryBbox = \
$feedDoc->createElement("georss:polygon");
- $georssPolygon = $mapbenderMetadata[$i]->minx." ".$mapbenderMetadata[$i]->miny." \
".$mapbenderMetadata[$i]->maxx." ".$mapbenderMetadata[$i]->miny." ";
- $georssPolygon .= $mapbenderMetadata[$i]->maxx." ".$mapbenderMetadata[$i]->maxy." \
".$mapbenderMetadata[$i]->minx." ".$mapbenderMetadata[$i]->maxy." ";
- $georssPolygon .= $mapbenderMetadata[$i]->minx." ".$mapbenderMetadata[$i]->miny;
+ $e = new mb_exception('mapbender minx: '.$mapbenderMetadata[$i]->minx);
+ $e = new mb_exception('mapbender i: '.$i);
+ $e = new mb_exception('mapbender origin: '.$mapbenderMetadata[$i]->origin);
+ $georssPolygon = $mapbenderMetadata[$i]->miny." ".$mapbenderMetadata[$i]->minx." \
".$mapbenderMetadata[$i]->maxy." ".$mapbenderMetadata[$i]->minx." "; \
+ $georssPolygon .= $mapbenderMetadata[$i]->maxy." ".$mapbenderMetadata[$i]->maxx." \
".$mapbenderMetadata[$i]->miny." ".$mapbenderMetadata[$i]->maxx." "; \
+ $georssPolygon .= $mapbenderMetadata[$i]->miny." ".$mapbenderMetadata[$i]->minx; \
$feedEntryBbox->appendChild($feedDoc->createTextNode($georssPolygon)); \
$feedEntry->appendChild($feedEntryBbox);
@@ -1052,7 +1060,7 @@
$mapbenderMetadata[$indexMapbenderMetadata]->datasetid_codespace = \
METADATA_DEFAULT_CODESPACE; $mapbenderMetadata[$indexMapbenderMetadata]->datasetid = \
$mapbenderMetadata[$indexMapbenderMetadata]->metadata_uuid; }
- if ($generateFrom == "wfs") {
+ if ($generateFrom == "wfs" or $mapbenderMetadata[$indexMapbenderMetadata]->origin \
== "wfs") { $latlonbbox = \
explode(",",$mapbenderMetadata[$indexMapbenderMetadata]->latlonbbox); \
$mapbenderMetadata[$indexMapbenderMetadata]->minx = $latlonbbox[0]; \
$mapbenderMetadata[$indexMapbenderMetadata]->miny = $latlonbbox[1];
Deleted: trunk/mapbender/http/php/mod_inspireWmsDownloadFeed.php
===================================================================
--- trunk/mapbender/http/php/mod_inspireWmsDownloadFeed.php 2012-06-18 20:48:30 UTC \
(rev 8385)
+++ trunk/mapbender/http/php/mod_inspireWmsDownloadFeed.php 2012-06-19 15:12:44 UTC \
(rev 8386) @@ -1,650 +0,0 @@
-<?php
-//http://www.geoportal.rlp.de/mapbender/php/mod_inspireWmsDownloadFeed.php?ID=20578&type=SERVICE
-//http://www.geoportal.rlp.de/mapbender/php/mod_inspireWmsDownloadFeed.php?ID=20578&type=DATASET
-//http://localhost/mapbender/php/mod_inspireWmsDownloadFeed.php?ID=20578&type=DATASET
-//http://localhost/mapbender/php/mod_inspireWmsDownloadFeed.php?ID=20648&type=SERVICE
-//20648
-// $Id: mod_inspireWmsDownloadFeed.php 235
-// http://www.mapbender.org/index.php/
-// 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.
-
-//Script to generate a feed for a predefined dataset download as it is demanded in \
the INSPIRE Download Service guidance 3.0 from 04.05.2012. It will be generated from \
given wms layers dataurl attributs which are registrated in the mapbender database. \
The other possibility is, that the wms are used to built the download links. \
Therefore the wms must support the generation of image/tiff output format with \
geotiff tags. Many wms do this. These wms must also support a minimum of 1000x1000 \
pixel for a single getmap request. It works as a webservice. The requested id is the \
mapbender layers serial id.
-
-require_once(dirname(__FILE__) . "/../../core/globalSettings.php");
-require_once(dirname(__FILE__) . "/../classes/class_connector.php");
-require_once(dirname(__FILE__) . "/../classes/class_administration.php");
-
-$con = db_connect(DBSERVER,OWNER,PW);
-db_select_db(DB,$con);
-
-$admin = new administration();
-
-$imageResolution = 100;
-
-$maxImageSize = 1000;
-
-//pull the needed things from tables datalink, md_metadata, layer, wms
-
-//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['ID']) & $_REQUEST['ID'] != "") {
- //validate integer
- $testMatch = $_REQUEST["ID"];
- $pattern = '/^[\d]*$/';
- if (!preg_match($pattern,$testMatch)){
- echo 'Id: <b>'.$testMatch.'</b> is not valid.<br/>';
- die();
- }
- $recordId = $testMatch;
- $testMatch = NULL;
-}
-
-if (!isset($_REQUEST['TYPE']) || $_REQUEST['TYPE'] == "") {
- echo '<b>Mandatory parameter type is not set!</b><br>Please set type to \
<b>DATASET</b> or <b>SERVICE</b>';
- die();
-}
-
-//validate request params
-if (isset($_REQUEST['TYPE']) & $_REQUEST['TYPE'] != "") {
- //validate type
- $testMatch = $_REQUEST["TYPE"];
- if ($testMatch != 'SERVICE' && $testMatch != 'DATASET'){
- echo 'type: <b>'.$testMatch.'</b> is not valid.<br/>';
- die();
- }
- $type = $testMatch;
- $testMatch = NULL;
-}
-
-
-//Initialize XML document
-$feedDoc = new DOMDocument('1.0');
-$feedDoc->encoding = 'UTF-8';
-
-
-//Feed Example from the Guidance Paper 3.0 page 33/34
-//
-/*
-<!-- Example "Download Service Feed" -->
-<feed xmlns="http://www.w3.org/2005/Atom" \
xmlns:georss="http://www.georss.org/georss" xml:lang="en"> <!-- feed \
title -->
-<title>XYZ Example INSPIRE Download Service</title>
-<!-- feed subtitle -->
-<subtitle>INSPIRE Download Service of organisation XYZ providing Hydrography \
data</subtitle>
-<!-- link to service ISO 19139 metadata -->
-<link href="http://xyz.org/metadata/iso19139_document.xml" rel="describedby" \
type="application/xml"/>
-<!-- self-referencing link to this feed -->
-<link href="http://xyz.org/download/en.xml" rel="self" type="application/atom+xml" \
hreflang="en" title="This document"/>
-<!-- link to Open Search definition file for this service-->
-<link rel="search" href="http://xyz.org/search/opensearchdescription.xml" \
type="application/opensearchdescription+xml" title="Open Search Description for XYZ \
download service"/>
-<!-- link to this feed in another language -->
-<link href="http://xyz.org/download/de.xml" rel="alternate" \
type="application/atom+xml" hreflang="de" title="The download service information in \
German"/> <!-- link to another representation of this feed (HTML) -->
-<link href="http://xyz.org/download/index.html" rel="alternate" type="text/html" \
hreflang="en" title="An HTML version of this document"/> <!-- link to this feed in \
HTML in another language-->
-<link href="http://xyz.org/download/index.de.html" rel="alternate" type="text/html" \
hreflang="de" title="An HTML version of this document in German"/>
-<!-- identifier -->
-<id>http://xyz.org/download/en.xml</id>
-<!-- rights, access restrictions --> <rights>Copyright (c) 2012, XYZ; all rights \
reserved</rights>
-<!-- date/time this feed was last updated -->
-<updated>2012-03-31T13:45:03Z</updated>
-<!-- author contact information --> <author>
-<name>John Doe</name> <email>doe@xyz.org</email>
-</author>
-<!-- entry for a "Dataset Feed" for a pre-defined dataset -->
-<entry>
-<!-- title for "Dataset Feed" for pre-defined dataset -->
-<title>Water network ABC Dataset Feed</title>
-<!-- link to "Dataset Feed" for pre-defined dataset -->
-<link rel="alternate" href="http://xyz.org/data/waternetwork_feed.xml" \
type="application/atom+xml" hreflang="en" title="Feed containing the pre-defined \
waternetwork dataset (in one or more downloadable formats)"/>
-<!-- identifier for "Dataset Feed" for pre-defined dataset -->
-<id>http://xyz.org/data/waternetwork_feed.xml</id>
-<!-- rights, access info for pre-defined dataset -->
-<rights>Copyright (c) 2002-2011, XYZ; all rights reserved</rights>
-<!-- last date/time this entry was updated -->
-<updated>2012-03-31T13:45:03Z</updated>
-<!-- summary -->
-<summary>This is the entry for water network ABC Dataset</summary>
-<!-- optional GeoRSS-Simple polygon outlining the bounding box of the pre-defined \
dataset described by the entry. Must be lat lon --> <georss:polygon>47.202 5.755 \
55.183 5.755 55.183 15.253 55.183 5.755 47.202 5.755</georss:polygon>
-<!-- CRSs in which the pre-defined Dataset is available -->
-<category term="EPSG:25832" scheme="http://www.opengis.net/def/crs/" \
label="EPSG/0/25832"/>
-<category term="EPSG:4258" scheme="http://www.opengis.net/def/crs/" \
label="EPSG/0/4258"/>
-</entry>
-<!-- Any number of "Dataset Feeds" for different pre-defined datasets may be added \
here as separate entries -->
-</feed>
-*/
-
-//Some needfull functions to pull metadata out of the database.
-//List of data which is needed to build the feed:
-//header part ******
-// - feed title: Generated from dataset name - either mb_metadata.title or \
layer.layer_title
-// - feed subtitle: Generated from dataset name - either mb_metadata.title or \
layer.layer_title, organisation name - mapbender group information (metadata contact) \
- cause it is generated from data of a registrated wms
-// - link to ISO19139 service metadata - this will be created dynamically by given \
layer_id as this script itself
-// - link to opensearch description for this download service - as before the \
layer_id will be used as a parameter
-// - id - link to the script itself
-// - rights - the access constraints of the view service are used - they should also \
give information about the access constraints for the usage of the \
data
-// - updated : last date the feed was updated - use current timestamp of the wms as \
the feed will be generated from dataurl entry of the layer object - \
wms.wms_timestamp
-//datalink.random_id - this is newly created when layers are updated ! - new
-//author - use information from mapbender group - metadata point of contact - \
registrating organization
-//entry part ******
-// - entry title: Generated from dataset name - either mb_metadata.title or \
layer.layer_title - in combination e.g. with "Feed for ..."
-// - link to the dataset feed - invoked by layer id as this is done before
-// - summary - Generated by some infomation: mb_metadata.format, \
mb_metadata.ref_sytem, ...., datalink.datalink_format
-// - updated - timestamp of wms as done before
-// -
-
-function generateFeed($feedDoc, $recordId, $generateFromDataurl = false) {
- global $admin, $type, $imageResolution, $maxImageSize;
-
-
- if ($generateFromDataurl) {
-
- $sql = <<<SQL
-
-select * from (select * from (select * from (select * from (select \
mb_metadata.metadata_id, layer_relation.layer_name, layer_relation.fkey_wms_id, \
layer_relation.layer_id, mb_metadata.uuid as metadata_uuid, \
mb_metadata.format,mb_metadata.title as metadata_title, mb_metadata.abstract as \
metadata_abstract, layer_relation.layer_title, layer_relation.layer_abstract, \
mb_metadata.ref_system as metadata_ref_system, mb_metadata.datasetid, \
mb_metadata.spatial_res_type, mb_metadata.spatial_res_value from (select * from \
layer inner join ows_relation_metadata on layer.layer_id = \
ows_relation_metadata.fkey_layer_id where layer.layer_id = $1) as layer_relation \
inner join mb_metadata on layer_relation.fkey_metadata_id = mb_metadata.metadata_id) \
as layer_metadata inner join ows_relation_data on ows_relation_data.fkey_layer_id = \
layer_metadata.layer_id) as layer_relation_data inner join datalink on \
layer_relation_data.fkey_datalink_id = datalink.datalink_id) as layer_data inner join \
wms on layer_data.fkey_wms_id = wms.wms_id) as layer_wms, layer_epsg where \
layer_wms.layer_id = layer_epsg.fkey_layer_id and layer_epsg.epsg = \
'EPSG:4326';
-
-SQL;
- } else { //dataurl is not given, therefor don't ask for such an entry ;-)
-
- $sql = <<<SQL
-
-select * from (select * from (select mb_metadata.metadata_id, \
layer_relation.layer_name, layer_relation.fkey_wms_id, layer_relation.layer_id, \
mb_metadata.uuid as metadata_uuid, mb_metadata.format,mb_metadata.title as \
metadata_title, mb_metadata.abstract as metadata_abstract, \
layer_relation.layer_title, layer_relation.layer_abstract, mb_metadata.ref_system as \
metadata_ref_system, mb_metadata.datasetid, mb_metadata.spatial_res_type, \
mb_metadata.spatial_res_value from (select * from layer inner join \
ows_relation_metadata on layer.layer_id = ows_relation_metadata.fkey_layer_id where \
layer.layer_id = $1) as layer_relation inner join mb_metadata on \
layer_relation.fkey_metadata_id = mb_metadata.metadata_id) layer_data inner join wms \
on layer_data.fkey_wms_id = wms.wms_id) as layer_wms, layer_epsg where \
layer_wms.layer_id = layer_epsg.fkey_layer_id and layer_epsg.epsg = \
'EPSG:4326';
-
-SQL;
-
- }
-
- $v = array((integer)$recordId);
- $t = array('i');
- $res = db_prep_query($sql,$v,$t);
- $mapbenderMetadata = db_fetch_array($res);
-
-
- if ($generateFromDataurl) {
- //check if layer_id datalink_id and metadata_id are given and not empty!
- if (!isset($mapbenderMetadata['datalink_id']) || $mapbenderMetadata['datalink_id'] \
== '') {
- return "<error>No dataurl element is given for the requested wms layer</error>";
- }
- }
- //TODO - if the wms is a raster based wms and the output format may be geotiff - \
the feed entries can be generated automatically. We need following \
information
- // 1. a raster based wms is given or not - checkbox at metadata editor!
- // 2. geotiff maybe one of the allowed formats! - layer format
- // 3. the maximum of pixel which can be served by the wms - maybe 2000x2000px - \
metadata editor!
- // 4. The scale hints maybe used to control if a special get map request will \
produce a picture or not
- //TODO: In this case we have to generate a feed for every single getmap request. \
This feed have to be called dynamically too! It will be cool to have the bboxes as \
get parameter or give a index of the bbox with which the bbox can be calculated \
again!
-
- if (!isset($mapbenderMetadata['metadata_id']) || $mapbenderMetadata['metadata_id'] \
== '') {
- return "<error>The requested wms layer has no coupled metadataset</error>";
- }
- //if (!isset($mapbenderMetadata['datalink_id'] || $mapbenderMetadata['datalink_id'] \
== '') {
- // return "<error>The requested wms layer has no coupled metadataset</error>";
- //}
- $crs = $mapbenderMetadata['metadata_ref_system'];
- $epsgId = explode(':',$crs);
- //Get other needed information out of mapbender database (if not already defined in \
the select above):
- //service data
- if ($wmsView != '') {
- $sql = "SELECT contactorganization, contactelectronicmailaddress ";
- $sql .= "FROM wms WHERE wms_id = $1";
- $v = array((integer)$mapbenderMetadata['wms_id']);
- $t = array('i');
- $res = db_prep_query($sql,$v,$t);
- $serviceMetadata = db_fetch_array($res);
- }
- //infos about the registrating department, check first if a special metadata point \
of contact is defined in the service table - function from mod_showMetadata - TODO: \
should be defined in admin class
- if (!isset($mapbenderMetadata['fkey_mb_group_id']) or \
is_null($mapbenderMetadata['fkey_mb_group_id']) or \
$mapbenderMetadata['fkey_mb_group_id'] == 0){
- $e = new mb_exception("mod_inspireWmsDownloadFeed.php: fkey_mb_group_id not \
found!");
- //Get information about owning user of the relation mb_user_mb_group - \
alternatively the defined fkey_mb_group_id from the service must be \
used!
- $sqlDep = "SELECT mb_group_name, mb_group_title, mb_group_id, mb_group_logo_path, \
mb_group_address, mb_group_email, mb_group_postcode, mb_group_city, \
mb_group_voicetelephone, mb_group_facsimiletelephone FROM mb_group AS a, mb_user AS \
b, mb_user_mb_group AS c WHERE b.mb_user_id = $1 AND b.mb_user_id = \
c.fkey_mb_user_id AND c.fkey_mb_group_id = a.mb_group_id AND \
c.mb_user_mb_group_type=2 LIMIT 1";
- $vDep = array($mapbenderMetadata['wms_owner']);
- $tDep = array('i');
- $resDep = db_prep_query($sqlDep, $vDep, $tDep);
- $departmentMetadata = db_fetch_array($resDep);
- } else {
- $e = new mb_exception("mod_inspireWmsDownloadFeed.php: fkey_mb_group_id found!");
- $sqlDep = "SELECT mb_group_name , mb_group_title, mb_group_id, mb_group_logo_path \
, mb_group_address, mb_group_email, mb_group_postcode, mb_group_city, \
mb_group_voicetelephone, mb_group_facsimiletelephone FROM mb_group WHERE mb_group_id \
= $1 LIMIT 1";
- $vDep = array($mapbenderMetadata['fkey_mb_group_id']);
- $tDep = array('i');
- $resDep = db_prep_query($sqlDep, $vDep, $tDep);
- $departmentMetadata = db_fetch_array($resDep);
- }
-
- //infos about the owner of the service - he is the man who administrate the \
metadata - register the service
- $sql = "SELECT mb_user_email ";
- $sql .= "FROM mb_user WHERE mb_user_id = $1";
- $v = array((integer)$mapbenderMetadata['wms_owner']);
- $t = array('i');
- $res = db_prep_query($sql,$v,$t);
- $userMetadata = db_fetch_array($res);
- $generateFromDataurl = false;
-
- //check if resource is freely available to anonymous user - which are all users who \
search thru metadata catalogues:
- $hasPermission=$admin->getLayerPermission($mapbenderMetadata['fkey_wms_id'],$mapbenderMetadata['layer_name'],PUBLIC_USER);
-
- $feed = $feedDoc->createElementNS('http://www.w3.org/2005/Atom', 'feed');
- $feed = $feedDoc->appendChild($feed);
- //$feed->setAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
- $feed->setAttribute("xmlns:georss", "http://www.georss.org/georss");
- //echo "<test>".$mapbenderMetadata['fkey_wms_id'].":".$mapbenderMetadata['wms_owner']."</test>";
- //qualifying id of the referenced ressource: Either dataset id or the id of the \
metadata record
- if (isset($mapbenderMetadata["datasetid"]) && $mapbenderMetadata["datasetid"] != '' \
) {
- $ressourceId = $mapbenderMetadata["datasetid"];
- } else {
- if (isset($mapbenderMetadata["metadata_uuid"]) && \
$mapbenderMetadata["metadata_uuid"] != '' ) {
- $ressourceId = $mapbenderMetadata["metadata_uuid"];
- } else {
- $ressourceId = "ID of dataset cannot be found!";
- }
- }
-
- //first use metadata title then layer title
- if (isset($mapbenderMetadata["metadata_title"]) && \
$mapbenderMetadata["metadata_title"] != '' ) {
- $ressourceTitle = $mapbenderMetadata["metadata_title"];
- } else {
- if (isset($mapbenderMetadata["layer_title"]) && $mapbenderMetadata["layer_title"] \
!= '' ) {
- $ressourceTitle = $mapbenderMetadata["layer_title"];
- } else {
- $ressourceTitle = "Title of dataset cannot be found!";
- }
- }
-
- //first use metadata abstract then layer abstract
- if (isset($mapbenderMetadata["metadata_abstract"]) && \
$mapbenderMetadata["metadata_abstract"] != '' ) {
- $ressourceAbstract = $mapbenderMetadata["metadata_abstract"];
- } else {
- if (isset($mapbenderMetadata["layer_abstract"]) && \
$mapbenderMetadata["layer_abstract"] != '' ) {
- $ressourceAbstract = $mapbenderMetadata["layer_abstract"];
- } else {
- $ressourceAbstract = "Abstract of dataset cannot be found!";
- }
- }
-
-
- //feed title - 5.1.1 / 5.2
- //<title>XYZ Example INSPIRE Download Service</title>
- //<title>XYZ Example INSPIRE Dataset ABC Download</title>
- $feedTitle = $feedDoc->createElement("title");
- //$feedTitle->setAttribute("xml:lang", "de");
- //echo "<error>".$type."</error>";
- //return;
- if ($type == 'SERVICE') {
- $feedTitleText = $feedDoc->createTextNode("INSPIRE Download Service: \
".$ressourceTitle);
- } else { //DATASET
- $feedTitleText = $feedDoc->createTextNode("INSPIRE Datensatz Download: \
".$ressourceTitle);
- }
- $feedTitle->appendChild($feedTitleText);
- $feed->appendChild($feedTitle);
-
- //feed subtitle - 5.1.2 / 5.2
- //<subtitle xml:lang="en">INSPIRE Download Service of organisation XYZ providing a \
data set for the Hydrography theme</subtitle>
- //<subtitle>INSPIRE Download Service, of organisation XYZ providing dataset ABC for \
the Hydrography theme</subtitle>
- $feedSubTitle = $feedDoc->createElement("subtitle");
- //$feedSubTitle->setAttribute("xml:lang", "de");
- if ($type == 'SERVICE') {
- $feedSubTitleText = $feedDoc->createTextNode("INSPIRE Download Service von \
".$departmentMetadata['mb_group_title']."");
- } else { //DATASET
- $feedSubTitleText = $feedDoc->createTextNode("INSPIRE Download Service von: \
".$departmentMetadata['mb_group_title']." zur Bereitstellung des Datensatzes: \
".$ressourceTitle);
- }
-
- $feedSubTitle->appendChild($feedSubTitleText);
- $feed->appendChild($feedSubTitle);
-
- //links
-
- //metadata
- //service metadata - 5.1.3 / dataset metadata 5.2.1
- //<link href="http://xyz.org/metadata" rel="describedby" type="application/xml"/>
- $feedLink = $feedDoc->createElement("link");
- if ($type == 'SERVICE') {
- $feedLink->setAttribute("href", \
"http://".$_SERVER['HTTP_HOST']."/mapbender/php/mod_dataLinkDownloadISOMetadata.php?Id=".$recordId."&outputFormat=iso19139");
- } else { //DATASET
- $feedLink->setAttribute("href", \
"http://".$_SERVER['HTTP_HOST']."/mapbender/php/mod_dataISOMetadata.php?id=".$mapbenderMetadata['metadata_uuid']."&outputFormat=iso19139");
- }
- $feedLink->setAttribute("rel", "describedby");
- $feedLink->setAttribute("rel", "application/xml");
- $feedLink->setAttribute("title", "Metadaten");
- $feedLink->setAttribute("hreflang", "de");
- $feed->appendChild($feedLink);
-
- //self reference - 5.1.4 / 5.2
- if ($type == 'SERVICE') {
- $selfReference = "http://".$_SERVER['HTTP_HOST']."/mapbender/php/mod_inspireWmsDownloadFeed.php?ID=".$recordId."&type=SERVICE";
- } else { //DATASET
- $selfReference = "http://".$_SERVER['HTTP_HOST']."/mapbender/php/mod_inspireWmsDownloadFeed.php?ID=".$recordId."&type=DATASET";
- }
-
- //<link href="http://xyz.org/data" rel="self" type="application/atom+xml" \
hreflang="en" title="This document"/>
- $feedLink = $feedDoc->createElement("link");
- $feedLink->setAttribute("href", $selfReference);
- $feedLink->setAttribute("rel", "self");
- $feedLink->setAttribute("type", "application/atom+xml");
- $feedLink->setAttribute("hreflang", "de");
- $feedLink->setAttribute("title", "Selbstreferenz");
- $feed->appendChild($feedLink);
-
- //opensearch descriptionlink 5.1.5
- if ($type == 'SERVICE') {
- $feedLink = $feedDoc->createElement("link");
- $feedLink->setAttribute("href", \
"http://".$_SERVER['HTTP_HOST']."/mapbender/php/mb_datalinkOpensearchDescription.php?ID=".$recordId);
- $feedLink->setAttribute("rel", "search");
- $feedLink->setAttribute("type", "application/opensearchdescription+xml");
- $feedLink->setAttribute("hreflang", "de");
- $feedLink->setAttribute("title", "Open Search Beschreibung des INSPIRE Download \
Dienstes für den Datensatz ".$ressourceTitle);
- $feed->appendChild($feedLink);
- } else { //5.2.2
-
- //description of datatypes - if given??? What todo when there is no description \
available - some html page have to be referenced?
- $feedLink = $feedDoc->createElement("link");
- $feedLink->setAttribute("href", \
"http://".$_SERVER['HTTP_HOST']."/mapbender/php/mod_showMetadata.php?languageCode=de&resource=layer&layout=tabs&id=".$recordId);
- $feedLink->setAttribute("rel", "describedby");
- $feedLink->setAttribute("type", "text/html");
- $feedLink->setAttribute("hreflang", "de");
- $feedLink->setAttribute("title", "Beschreibung des Datensatzes");
- $feed->appendChild($feedLink);
- }
- //5.1.6 - 5.1.7
- //other -- not needed cause only one language is defined
- //<link href="http://xyz.org/data/de" rel="alternate" type="application/atom+xml" \
hreflang="de" title="The download service information in German"/>
- //<link href="http://xyz.org/data/index.html" rel="alternate" type="text/html" \
hreflang="en" title="An HTML version of this document"/>
- //<link href="http://xyz.org/data/index.de.html" rel="alternate" type="text/html" \
hreflang="de" title="An HTML version of this document in German"/>
-
-
- //<!-- identifier -->
- //<id>http://xyz.org/data</id> - also self reference - see 5.1.8 on page 39 of \
INSPIRE GD for Download Services V 3.0
- // and 5.2.1
- $feedId = $feedDoc->createElement("id");
- $feedIdText = $feedDoc->createTextNode($ressourceId);
- $feedId->appendChild($feedIdText);
- $feed->appendChild($feedId);
-
- //<!-- rights, access restrictions -->
- //<rights>Copyright (c) 2011, XYZ; all rights reserved</rights> -- see 5.1.9 on \
page 39 of INSPIRE GD for Download Services V 3.0 - only accessconstraints should be \
used
- $feedRights = $feedDoc->createElement("rights");
- $feedRightsText = $feedDoc->createTextNode($mapbenderMetadata['accessconstraints']);
- $feedRights->appendChild($feedRightsText);
- $feed->appendChild($feedRights);
-
- //<!-- date/time of last update of feed--> -- see 5.1.10 on page 40 of INSPIRE GD \
for Download Services V 3.0 - maybe date of metadata should be used - first we use \
current date!
- //<updated>2011-09-24T13:45:03Z</updated>
- $feedUpdated = $feedDoc->createElement("updated");
- $feedUpdatedText = $feedDoc->createTextNode(date(DATE_ATOM,time()));
- $feedUpdated->appendChild($feedUpdatedText);
- $feed->appendChild($feedUpdated);
-
- //<!-- author info --> 5.1.11
- //<author>
- // <name>John Doe</name>
- // <email>doe@xyz.org</email>
- //</author>
- $feedAuthor = $feedDoc->createElement("author");
- $feedAuthorName = $feedDoc->createElement("name");
- $feedAuthorName->appendChild($feedDoc->createTextNode($departmentMetadata["mb_group_title"]));
- $feedAuthorEmail = $feedDoc->createElement("email");
- $feedAuthorEmail->appendChild($feedDoc->createTextNode($departmentMetadata["mb_group_email"]));
- $feedAuthor->appendChild($feedAuthorName);
- $feedAuthor->appendChild($feedAuthorEmail);
- $feed->appendChild($feedAuthor);
-
- //<!-- pre-defined dataset - a entry for each pre-defined dataset - in the case of \
dataURL only one entry is used! -->
- //if dataurl not given and a raster wms is defined - calculate the number of \
entries
- if ($generateFromDataurl != true && $type == 'DATASET') {
- //calculate number of entries and the bboxes
- if ($mapbenderMetadata['spatial_res_type'] != 'groundDistance' & \
$mapbenderMetadata['spatial_res_type'] != 'scaleDenominator') {
- echo "<error>WMS footprints cannot be calculated, cause kind of resolution is not \
given.</error>";
- } else {
- if (!is_int((integer)$mapbenderMetadata['spatial_res_value'])) {
- echo "<error>WMS footprints cannot be calculated, cause resolution is no \
integer.</error>";
- } else {
- //calculate the bboxes
- //transform layer_bbox to mb_metadata epsg
- /*$georssPolygon = $mapbenderMetadata["minx"]." ".$mapbenderMetadata["miny"]." \
".$mapbenderMetadata["maxx"]." ".$mapbenderMetadata["miny"]." ";
- $georssPolygon .= $mapbenderMetadata["maxx"]." ".$mapbenderMetadata["maxy"]." \
".$mapbenderMetadata["minx"]." ".$mapbenderMetadata["maxy"]." ";
- $georssPolygon .= $mapbenderMetadata["minx"]." ".$mapbenderMetadata["miny"];
- echo $georssPolygon;*/
- //TODO: check if epsg, and bbox are filled correctly!
-
- $sqlMinx = "SELECT \
X(transform(GeometryFromText('POINT(".$mapbenderMetadata["minx"]." \
".$mapbenderMetadata["miny"].")',4326),".$epsgId[1].")) as minx";
- $resMinx = db_query($sqlMinx);
- $minx = floatval(db_result($resMinx,0,"minx"));
-
- $sqlMiny = "SELECT \
Y(transform(GeometryFromText('POINT(".$mapbenderMetadata["minx"]." \
".$mapbenderMetadata["miny"].")',4326),".$epsgId[1].")) as miny";
- $resMiny = db_query($sqlMiny);
- $miny = floatval(db_result($resMiny,0,"miny"));
-
- $sqlMaxx = "SELECT \
X(transform(GeometryFromText('POINT(".$mapbenderMetadata["maxx"]." \
".$mapbenderMetadata["maxy"].")',4326),".$epsgId[1].")) as maxx";
- $resMaxx = db_query($sqlMaxx);
- $maxx = floatval(db_result($resMaxx,0,"maxx"));
-
- $sqlMaxy = "SELECT \
Y(transform(GeometryFromText('POINT(".$mapbenderMetadata["maxx"]." \
".$mapbenderMetadata["maxy"].")',4326),".$epsgId[1].")) as maxy";
- $resMaxy = db_query($sqlMaxy);
- $maxy = floatval(db_result($resMaxy,0,"maxy"));
-
-
- $diffX = $maxx - $minx; //in m
- $diffY = $maxy - $miny; //in m
- //echo $diffX .":". $diffY;
- //calculate target number of pixels for x and y
- switch ($mapbenderMetadata['spatial_res_type']) {
- case "scaleDenominator":
- //transform to pixel
- $diffXPx = $diffX / (float)$mapbenderMetadata['spatial_res_value'] / \
(float)0.0254 * floatval($imageResolution);
- $diffYPx = $diffY / (float)$mapbenderMetadata['spatial_res_value'] / \
(float)0.0254 * floatval($imageResolution);
- break;
- case "groundDistance":
- //transform to pixel
- $diffXPx = $diffX / floatval($mapbenderMetadata['spatial_res_value']);
- $diffYPx = $diffY / floatval($mapbenderMetadata['spatial_res_value']);
-
- break;
- }
- //echo $diffXPx.":".$diffYPx;
-
- $nRows = ceil($diffYPx / floatval($maxImageSize));
- $nCols = ceil($diffXPx / floatval($maxImageSize));
- //echo $nRows.":".$nCols;
- $bboxWms = array();
- /*echo $diffXPx.":".$diffYPx.",";
- echo $nRows.":".$nCols.",";
- echo $minx.":".$miny.",";
- echo $maxx.":".$maxy.",";*/
- $incX = $diffX / ($diffXPx / floatval($maxImageSize));
- $incY = $diffY / ($diffYPx / floatval($maxImageSize));
- for ($j = 0; $j < $nRows; $j++) {
- for ($k = 0; $k < $nCols; $k++) {
- //echo "j: ".$k.",k: ".$j;
- $minxWms = $minx + $k * $incX;
- //echo "minxWms: ". $minxWms .",";
- $minyWms = $miny + $j * $incY;
- //echo "minyWms: ". $minyWms .",";
- $maxxWms = $minx + ($k+1) * $incX;
- //echo "maxxWms: ". $maxxWms .",";
- $maxyWms = $miny + ($j+1) * $incY;
- //echo "maxyWms: ". $maxyWms .",";
- $bboxWms[] = $minxWms.",".$minyWms.",".$maxxWms.",".$maxyWms;
- }
- }
- }
- }
- $numberOfEntries = count($bboxWms);
- } else {
- $numberOfEntries = 1;
- }
-
- for ($i = 0; $i < $numberOfEntries; $i++) {
- //<entry> 5.1.12 / 5.2.3
-
- $feedEntry = $feedDoc->createElement("entry");
-
- //<!-- title for pre-defined dataset -->
- //<title xml:lang="en">Water network ABC</title>
- //<title>Water network in CRS EPSG:4258 (GML)</title>
- $feedEntryTitle = $feedDoc->createElement("title");
- //$feedEntryTitle->setAttribute("xml:lang", "de");
- if ($type == 'SERVICE') {
- $feedEntryTitle->appendChild($feedDoc->createTextNode("Feed Entry für: \
".$ressourceTitle)); //TODO: maybe add some category?
- } else {
- $feedEntryTitle->appendChild($feedDoc->createTextNode($ressourceTitle. " im CRS \
".$mapbenderMetadata['metadata_ref_system']." und Format \
".$mapbenderMetadata['format'])); //TODO: maybe add some category?
- }
- $feedEntry->appendChild($feedEntryTitle);
-
- //<!-- link to a single dataset feed - see 5.1.13 on page 41 of INSPIRE GD for \
Download Services V 3.0 -->
- //<link rel="alternate" href="http://xyz.org/data/waternetwork_feed.xml" \
type="application/atom+xml" hreflang="en" title="Feed containing the pre-defined \
waternetwork dataset (in one or more downloadable formats)"/>
-
- //or link to dataset 5.2.3
-
- //<link rel="alternate" href="http://xyz.org/data/abc/waternetwork_WGS84.shp" \
type="application/x-shp" hreflang="en" title="Water Network encoded as a ShapeFile in \
WGS84geographic coordinates \
(http://www.opengis.net/def/crs/OGC/1.3/CRS84)"/>
-
- $datasetFeedLink = \
"http://".$_SERVER['HTTP_HOST']."/mapbender/php/mod_inspireWmsDownloadFeed.php?id=".$recordId."&type=DATASET";
- $datasetLink = $mapbenderMetadata['datalink_url'];
-
- if ($type == 'SERVICE') {
- $furtherLink = $datasetFeedLink;
- $furtherLinkType = "application/xml";
- $furtherLinkTitle = "Feed für den pre-defined Datensatz ".$ressourceTitle;
- } else {
- if ($generateFromDataurl == true) {
- $furtherLink = $datasetLink;
- $furtherLinkType = $mapbenderMetadata['datalink_format'];
- $furtherLinkTitle = $ressourceTitle." im CRS \
".$mapbenderMetadata['metadata_ref_system']."(".$mapbenderMetadata['format'].")";
- } else {
- $furtherLink = $datasetLink; // dynamic generated links
- //example:
- //http://localhost/cgi-bin/mapserv?map=/data/umn/geoportal/karte_rp/testinspiredo \
wnload.map&VERSION=1.1.1&REQUEST=GetMap&SERVICE=WMS&LAYERS=inspirewms&STYLES=&SRS=EPSG \
:4326&BBOX=6.92134,50.130465,6.93241,50.141535000000005&WIDTH=200&HEIGHT=200&FORMAT=im \
age/png&BGCOLOR=0xffffff&TRANSPARENT=TRUE&EXCEPTIONS=application/vnd.ogc.se_inimage
- $furtherLink = $mapbenderMetadata['wms_getmap']."REQUEST=GetMap&VERSION=".$mapben \
derMetadata['wms_version']."&SERVICE=WMS&LAYERS=".$mapbenderMetadata['layer_name'];
- $furtherLink .= \
"&STYLES=&SRS=".$crs."&BBOX=".$bboxWms[$i]."&WIDTH=".$maxImageSize."&HEIGHT=".$maxImageSize."&FORMAT=image/tiff&";
- $furtherLink .= \
"BGCOLOR=0xffffff&TRANSPARENT=TRUE&EXCEPTIONS=application/vnd.ogc.se_inimage";
- $furtherLinkType = $mapbenderMetadata['datalink_format']; //formats from \
layer_format - geotiff
- $furtherLinkTitle = $ressourceTitle." im CRS \
".$mapbenderMetadata['metadata_ref_system']."(".$mapbenderMetadata['format'].")";
- }
- }
- //In the case of dynamically build entries for a raster based wms - not the \
dataurl but another the dyn ulrs will be used in the next feed
-
- $feedEntryLink = $feedDoc->createElement("link");
- $feedEntryLink->setAttribute("rel", "alternate");
- $feedEntryLink->setAttribute("href", $furtherLink);
- $feedEntryLink->setAttribute("type", $furtherLinkType);
- $feedEntryLink->setAttribute("hreflang", "de");
- $feedEntryLink->setAttribute("title", $furtherLinkTitle);
- $feedEntry->appendChild($feedEntryLink);
-
- //5.1.14 / 5.2
- //<!-- identifier for pre-defined dataset -->
- //<id>http://xyz.org/data/waternetwork.gml/id>
- $feedEntryId = $feedDoc->createElement("id");
- $feedEntryId->appendChild($feedDoc->createTextNode($ressourceId."_tile_".$i));
- $feedEntry->appendChild($feedEntryId);
-
- //5.1.15 /
- //<!-- summary -->
- //<summary>This is the entry for water network ABC Dataset</summary>
- if ($type == 'SERVICE') {
- $feedEntrySummary = $feedDoc->createElement("summary");
- $feedEntrySummary->appendChild($feedDoc->createTextNode("Nähere Beschreibung des \
Feedinhaltes: ".$ressourceAbstract));
- $feedEntry->appendChild($feedEntrySummary);
- }
- //5.1.14 / 5.2 - updated
- //<!-- last date/time pre-defined dataset was updated -->
- //<updated>2011-06-14T12:22:09Z</updated>
- $feedEntryUpdated = $feedDoc->createElement("updated");
- $feedEntryUpdated->appendChild($feedDoc->createTextNode(date(DATE_ATOM,time())));
- $feedEntry->appendChild($feedEntryUpdated);
-
- //5.1.16 / 5.2?
- //<!-- optional GeoRSS-Simple bounding box of the pre-defined dataset. Must be lat \
lon -->
- //<georss:polygon>47.202 5.755 55.183 5.755 55.183 15.253 47.202 15.253 47.202 \
5.755</georss:polygon>
- //TODO: Get this out of mb_metadata! If not given get it from layer bbox - but \
normally they should be identical!
- $feedEntryBbox = $feedDoc->createElement("georss:polygon");
- if ($generateFromDataurl == true) {
- $georssPolygon = $mapbenderMetadata["minx"]." ".$mapbenderMetadata["miny"]." \
".$mapbenderMetadata["maxx"]." ".$mapbenderMetadata["miny"]." ";
- $georssPolygon .= $mapbenderMetadata["maxx"]." ".$mapbenderMetadata["maxy"]." \
".$mapbenderMetadata["minx"]." ".$mapbenderMetadata["maxy"]." ";
- $georssPolygon .= $mapbenderMetadata["minx"]." ".$mapbenderMetadata["miny"];
- } else {
- //dynamically generated bboxes - for the raster wms
- //$georssPolygon = $mapbenderMetadata["minx"]." ".$mapbenderMetadata["miny"]." \
".$mapbenderMetadata["maxx"]." ".$mapbenderMetadata["miny"]." ";
- //$georssPolygon .= $mapbenderMetadata["maxx"]." ".$mapbenderMetadata["maxy"]." \
".$mapbenderMetadata["minx"]." ".$mapbenderMetadata["maxy"]." ";
- //$georssPolygon .= $mapbenderMetadata["minx"]." ".$mapbenderMetadata["miny"];
- //TODO: Transform them to epsg:4326 to be conform to georss polygon
- $corners = $bboxWms[$i];
- $corners = explode(",",$corners);
- $georssPolygon = $corners[1]." ".$corners[0]." ".$corners[3]." ".$corners[0]." ";
- $georssPolygon .= $corners[3]." ".$corners[2]." ".$corners[1]." ".$corners[2]." \
";
- $georssPolygon .= $corners[1]." ".$corners[0];
- }
- $feedEntryBbox->appendChild($feedDoc->createTextNode($georssPolygon));
- $feedEntry->appendChild($feedEntryBbox);
-
- //category entry for crs (from mb_metadata) 5.1.17
- /*<!-- CRSs in which the pre-defined Dataset is available --> <category \
term="EPSG:25832" scheme="http://www.opengis.net/def/crs/" label="EPSG/0/25832"/> \
<category term="EPSG:4258" scheme="http://www.opengis.net/def/crs/" \
label="EPSG/0/4258"/>*/
-
- $feedEntryCategory = $feedDoc->createElement("category");
- $feedEntryCategory->setAttribute("term", $epsgId[1]);
- $feedEntryCategory->setAttribute("scheme", "http://www.opengis.net/def/crs/");
- $feedEntryCategory->setAttribute("label", "EPSG/0/".$epsgId[1]);
- $feedEntry->appendChild($feedEntryCategory);
-
- //<!-- INSPIRE Spatial Object Types contained in the pre-defined dataset -->
- //<category term="Watercourse" \
scheme="http://inspire-registry.jrc.ec.europa.eu/registers/FCD/" label="Watercourse" \
xml:lang="en"/>
- //only applicable for inspire conformant datasets!
- //Generate List of inspire themes of the given layer!
- /*$sql = "SELECT inspire_category.inspire_category_id, \
inspire_category.inspire_category_code_en FROM inspire_category, \
layer_inspire_category WHERE layer_inspire_category.fkey_layer_id=$1 AND \
layer_inspire_category.fkey_inspire_category_id=inspire_category.inspire_category_id";
- $v = array((integer)$mapbenderMetadata['layer_id']);
- $t = array('i');
- $res = db_prep_query($sql,$v,$t);
- while ($row = db_fetch_array($res)) {
- //part for the name of the inspire category
- $feedEntryCategory = $feedDoc->createElement("category");
- $feedEntryCategory->setAttribute("term", $row['inspire_category_code_en']);
- $feedEntryCategory->setAttribute("scheme", \
"http://www.eionet.europa.eu/gemet/theme_concepts?langcode=en&ns=5&th=".$row['inspire_category_id']);
- $feedEntryCategory->setAttribute("label", $row['inspire_category_code_en']);
- $feedEntryCategory->setAttribute("xml:lang", "en");
- $feedEntry->appendChild($feedEntryCategory);
- }
- */
- /*$feedEntryCategory = $feedDoc->createElement("category");
- $feedEntryCategory->setAttribute("term", "Watercourse");
- $feedEntryCategory->setAttribute("scheme", \
"http://inspire-registry.jrc.ec.europa.eu/registers/FCD/");
- $feedEntryCategory->setAttribute("label", "Watercourse");
- $feedEntryCategory->setAttribute("xml:lang", "en");
- $feedEntry->appendChild($feedEntryCategory);
- //<category term="StandingWater" \
scheme="http://inspire-registry.jrc.ec.europa.eu/registers/FCD/" label="Standing \
Water" xml:lang="en"/>
- $feedEntryCategory = $feedDoc->createElement("category");
- $feedEntryCategory->setAttribute("term", "StandingWater");
- $feedEntryCategory->setAttribute("scheme", \
"http://inspire-registry.jrc.ec.europa.eu/registers/FCD/");
- $feedEntryCategory->setAttribute("label", "Standing Water");
- $feedEntryCategory->setAttribute("xml:lang", "en");
- $feedEntry->appendChild($feedEntryCategory);*/
- //</entry>
-
- $feed->appendChild($feedEntry);
- }
- return $feedDoc->saveXML();
-}
-
-//function to give away the xml data
-function pushFeed($feedDoc, $recordId) {
- header("Content-type: application/xhtml+xml; charset=UTF-8");
- $xml = generateFeed($feedDoc, $recordId);
- echo $xml;
- die();
-}
-
-//do all the other things which had to be done ;-)
-pushFeed($feedDoc, $recordId); //throw it out to world!
-
-?>
-
Modified: trunk/mapbender/http/php/mod_showMetadata.php
===================================================================
--- trunk/mapbender/http/php/mod_showMetadata.php 2012-06-18 20:48:30 UTC (rev 8385)
+++ trunk/mapbender/http/php/mod_showMetadata.php 2012-06-19 15:12:44 UTC (rev 8386)
@@ -1062,6 +1062,23 @@
$i = 0;
$metadataList = "";
while ($row = db_fetch_assoc($res)) {
+ //check for existing download options
+ $sqlDownload = <<<SQL
+ select count(*) from (select metadata_id as data from (select metadata_id, \
layer_id from (select fkey_metadata_id, layer_id from layer inner join \
ows_relation_metadata on layer.layer_id = ows_relation_metadata.fkey_layer_id) as \
layer_relation + inner join mb_metadata on layer_relation.fkey_metadata_id = \
mb_metadata.metadata_id where mb_metadata.uuid = $1) as layer_metadata inner join \
ows_relation_data on ows_relation_data.fkey_layer_id = layer_metadata.layer_id union \
select mb_metadata.metadata_id as data from mb_metadata right join \
ows_relation_metadata on mb_metadata.metadata_id = \
ows_relation_metadata.fkey_metadata_id where mb_metadata.uuid = $1) as foo +SQL;
+ /*$sqlDownload = <<<SQL
+ select count(*) from (select mb_metadata.metadata_id as data from mb_metadata \
right join ows_relation_metadata on mb_metadata.metadata_id = \
ows_relation_metadata.fkey_metadata_id where mb_metadata.uuid = $1) as foo +SQL;*/
+ //TODO: INSPIRE Download: It must be tested, if inspire_download is set to 1!!
+
+ $v = array($row["uuid"]);
+ $t = array('s');
+ $resDownload = db_prep_query($sqlDownload,$v,$t);
+ $rowDownload = db_fetch_assoc($resDownload);
+ $e = new mb_notice($rowDownload['count']);
+ $e = new mb_notice($row['uuid']);
+
//$html .= "<li>";
switch ($row["origin"]) {
case "capabilities" :
@@ -1079,7 +1096,11 @@
default:
break;
}
- $metadataList .= "<a \
href='../php/mod_dataISOMetadata.php?outputFormat=iso19139&id=".$row["uuid"]."'>".$row["uuid"]."</a> \
<a href='../php/mod_dataISOMetadata.php?outputFormat=iso19139&id=".$row["uuid"]."&validate=true'>".$translation['validate']."</a><br>";
+ $metadataList .= "<a \
href='../php/mod_dataISOMetadata.php?outputFormat=iso19139&id=".$row["uuid"]."'>".$row["uuid"]."</a> \
<a href='../php/mod_dataISOMetadata.php?outputFormat=iso19139&id=".$row["uuid"]."&validate=true'>".$translation['validate']."</a>";
+ if (intval($rowDownload['count']) > 0) {
+ $metadataList .= "<br><a \
href='../php/mod_inspireDownloadFeed.php?id=".$row["uuid"]."&type=SERVICE&generateFrom=all'>INSPIRE \
Download Feed</a>"; + }
+ $metadataList .= "<br>";
$i++;
}
if ($i != 0) {
_______________________________________________
Mapbender_commits mailing list
Mapbender_commits@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapbender_commits
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic