[Mapbender-commits] r10060 - trunk/mapbender/http/php
svn_mapbender at osgeo.org
svn_mapbender at osgeo.org
Thu Feb 21 07:31:45 PST 2019
Author: armin11
Date: 2019-02-21 07:31:44 -0800 (Thu, 21 Feb 2019)
New Revision: 10060
Modified:
trunk/mapbender/http/php/mod_inspireDownloadFeed.php
Log:
Allow multiple featuretypes for one inspire atom feed - each featuretype is has one dataset feed entry
Modified: trunk/mapbender/http/php/mod_inspireDownloadFeed.php
===================================================================
--- trunk/mapbender/http/php/mod_inspireDownloadFeed.php 2019-02-20 19:19:32 UTC (rev 10059)
+++ trunk/mapbender/http/php/mod_inspireDownloadFeed.php 2019-02-21 15:31:44 UTC (rev 10060)
@@ -55,6 +55,7 @@
$furtherLink = array();
+$featuretypeId = false;
//pull the needed things from tables datalink, md_metadata, layer, wms
//parse request parameter
@@ -255,6 +256,7 @@
}
}
+
if ($generateFrom == "wfs") {
//check if wfsId is set too
if (isset($_REQUEST['WFSID']) & $_REQUEST['WFSID'] != "") {
@@ -271,6 +273,17 @@
echo 'Mandatory request parameter <b>WFSID</b> must be set if download service should be generated by using a Web Feature Service!';
die();
}
+ //check if featuretypeid is set too
+ if (isset($_REQUEST['featuretypeid']) && $_REQUEST['featuretypeid'] != "") {
+ $testMatch = $_REQUEST["featuretypeid"];
+ $pattern = '/^[\d]*$/';
+ if (!preg_match($pattern,$testMatch)){
+ echo 'FEATURETYPEID must be an integer!<br/>';
+ die();
+ }
+ $featuretypeId = $testMatch;
+ $testMatch = NULL;
+ }
}
//Initialize XML document
@@ -279,7 +292,6 @@
$feedDoc->preserveWhiteSpace = false;
$feedDoc->formatOutput = true;
-
/*function addToQuery($paramName,$queryString,$string,$queryList) {
//test if string was part of query before, if so, don't extent the query
//TODO: the strings come from json and so they are urlencoded! maybe we have to decode them to find the commata
@@ -781,7 +793,7 @@
// -
function generateFeed($feedDoc, $recordId, $generateFrom) {
- global $admin, $type, $imageResolution, $maxImageSize, $maxFeatureCount, $mapbenderMetadata, $indexMapbenderMetadata, $layerId, $wfsId, $mapbenderPath, $mapbenderServerUrl, $epsgId, $alterAxisOrder, $departmentMetadata, $userMetadata, $hasPermission, $m, $crs, $crsUpper,$countRessource, $numberOfTiles, $furtherLink;
+ global $admin, $type, $imageResolution, $maxImageSize, $maxFeatureCount, $mapbenderMetadata, $indexMapbenderMetadata, $layerId, $wfsId, $featuretypeId, $mapbenderPath, $mapbenderServerUrl, $epsgId, $alterAxisOrder, $departmentMetadata, $userMetadata, $hasPermission, $m, $crs, $crsUpper,$countRessource, $numberOfTiles, $furtherLink;
//caching feeds in apc cache
//check age of information to allow caching of atom feeds
/*$e = new mb_exception("mod_inspireDownloadFeed.php: wms_timestamp: ".date("Y-m-d H:i:s",$mapbenderMetadata[$m]->wms_timestamp));
@@ -981,6 +993,12 @@
break;
case "wfs":
$selfReference .= "&wfsid=".$mapbenderMetadata[$m]->wfs_id;
+ if ($featuretypeId !== false) {
+//$e = new mb_exception("ft_id: ".$featuretypeId);
+ $selfReference .= "&featuretypeid=".$featuretypeId;
+ } else {
+ $selfReference .= "&featuretypeid=".$mapbenderMetadata[$m]->featuretype_id;
+ }
break;
}
}
@@ -1026,7 +1044,13 @@
$feedLink = $feedDoc->createElement("link");
if ($admin->getWFSOWSstring($mapbenderMetadata[$m]->wfs_id) == false) {
//$wfsGetCapabilitiesUrl = $mapbenderMetadata[$m]->wfs_getcapabilities;
- $wfsGetCapabilitiesUrl = $mapbenderPath."php/wfs.php?INSPIRE=1&FEATURETYPE_ID=".$mapbenderMetadata[$m]->featuretype_id;
+ if (count($mapbenderMetadata) == 1) {
+//$e = new mb_exception(count($mapbenderMetadata));
+ $wfsGetCapabilitiesUrl = $mapbenderPath."php/wfs.php?INSPIRE=1&FEATURETYPE_ID=".$mapbenderMetadata[$m]->featuretype_id;
+ } else {
+ //TODO - set url to wfs proxy - wfs.php has to be adopted to allow more than one featuretype as parameter!
+ $wfsGetCapabilitiesUrl = $mapbenderMetadata[$m]->wfs_getcapabilities;
+ }
} else {
$wfsGetCapabilitiesUrl = $mapbenderServerUrl."/registry/wfs/".$mapbenderMetadata[$m]->wfs_id."?INSPIRE=1";
}
@@ -1073,7 +1097,7 @@
$feedAuthor = $feedDoc->createElement("author");
$feedAuthorName = $feedDoc->createElement("name");
$feedAuthorEmail = $feedDoc->createElement("email");
- //check for department, 1. group, 2. from metadat, 3. dummy
+ //check for department, 1. group, 2. from metadata, 3. dummy
if ($departmentMetadata["mb_group_title"] == "" || empty($departmentMetadata["mb_group_title"])) {
if ($mapbenderMetadata[$m]->ressource_responsible_party == "" || empty($mapbenderMetadata[$m]->ressource_responsible_party)) {
$feedAuthorName->appendChild($feedDoc->createTextNode("No responsible department found!"));
@@ -1202,8 +1226,12 @@
$featureTypeName = array();
$featureTypeBbox = array();
$featureTypeBboxWGS84 = array();
+ $featuretypeIndex = false;
//For each featuretype which was found! Maybe more than one!
for ($i = 0; $i < $countRessource; $i++) {
+//$e = new mb_exception($featuretypeId);
+ if ($featuretypeId !== false && $mapbenderMetadata[$i]->featuretype_id == $featuretypeId) {
+ $featuretypeIndex = $i;
//overwrite feature count with information from database
$maxFeatureCount = (integer)$mapbenderMetadata[$i]->wfs_max_features;
@@ -1222,8 +1250,8 @@
//**************************************************************************************
$e = new mb_notice("Epsg id of featuretype ".$mapbenderMetadata[$i]->featuretype_name." : ".$epsgId);
if (!($mapbenderMetadata[$i]->wfs_version) || $mapbenderMetadata[$i]->wfs_version == '') {
- return "<error>Version of WFS : ".$mapbenderMetadata[$i]->wfs_version." is not supported to generate inspire download services for predefined datasets!</error>";
- }
+ return "<error>Version of WFS : ".$mapbenderMetadata[$i]->wfs_version." is not supported to generate inspire download services for predefined datasets!</error>";
+ }
//check if count is possible - in wfs 1.0.0 it is not possible!
if ($mapbenderMetadata[$i]->wfs_version !== '1.0.0') {
//define request to get number of hits per featuretype
@@ -1468,7 +1496,8 @@
}
//$numberOfTiles = count($bboxWfs[$mapbenderMetadata[$i]->featuretype_name]);
//$e = new mb_exception("Number of tiles for wfs predefined download service: ".$numberOfTiles);
- }
+ } //end for if filter - if some featuretypeid was given via get parameter
+ } //end for each featuretype
} else { //type SERVICE was set - generate one entry for each coupled resource - they are distinguished by names, titles, ids, bbox, type of download!
$numberOfEntries = count($mapbenderMetadata);
@@ -1493,7 +1522,7 @@
$ressourceServiceFeedEntryTitle = $ressourceTitle." - generiert aus WMS Capabilities dataURL Element";
break;
case "wfs":
- $ressourceServiceFeedEntryTitle = $ressourceTitle." - generiert über WFS GetFeature Aufrufe";
+ $ressourceServiceFeedEntryTitle = $ressourceTitle." - Objektart: ".$mapbenderMetadata[$i]->featuretype_title." (".$mapbenderMetadata[$i]->featuretype_name.") - generiert über WFS GetFeature Aufrufe";
break;
case "metadata":
$ressourceServiceFeedEntryTitle = $ressourceTitle." - generiert über Downloadlinks aus Metadatensatz";
@@ -1512,7 +1541,11 @@
$resourceFormat = $mapbenderMetadata[$i]->format;
break;
case "wfs":
- $ressourceDataFeedEntryTitle = $ressourceTitle." - generiert über WFS GetFeature Aufrufe";
+ if ($featuretypeIndex !== false) {
+ $ressourceDataFeedEntryTitle = $ressourceTitle." - Objektart: ".$mapbenderMetadata[$featuretypeIndex]->featuretype_title." (".$mapbenderMetadata[$featuretypeIndex]->featuretype_name.") - generiert über WFS GetFeature Aufrufe";
+ } else {
+ $ressourceDataFeedEntryTitle = $ressourceTitle." - Objektart: ".$mapbenderMetadata[$i]->featuretype_title." (".$mapbenderMetadata[$i]->featuretype_name.") - generiert über WFS GetFeature Aufrufe";
+ }
//$resourceFormat = "application/gml+xml";
//first format from wfs server
$resourceFormat = $mapbenderMetadata[$i]->output_formats[0];
@@ -1546,6 +1579,12 @@
break;
case "wfs":
$datasetFeedLink .= "&wfsid=".$mapbenderMetadata[$i]->wfs_id;
+ if ($featuretypeId !== false) {
+//$e = new mb_exception("ft_id: ".$featuretypeId);
+ $datasetFeedLink .= "&featuretypeid=".$featuretypeId;
+ } else {
+ $datasetFeedLink .= "&featuretypeid=".$mapbenderMetadata[$i]->featuretype_id;
+ }
break;
case "metadata":
//$datasetFeedLink .= "&wfsid=".$mapbenderMetadata[$i]->wfs_id;
More information about the Mapbender_commits
mailing list