[Mapbender-commits] r8570 - in trunk/mapbender: conf http/php

svn_mapbender at osgeo.org svn_mapbender at osgeo.org
Sun Feb 24 03:34:34 PST 2013


Author: armin11
Date: 2013-02-24 03:34:34 -0800 (Sun, 24 Feb 2013)
New Revision: 8570

Modified:
   trunk/mapbender/conf/ckan.conf-dist
   trunk/mapbender/http/php/mod_exportMapbenderLayer2CkanObjects.php
   trunk/mapbender/http/php/mod_syncCkan.php
Log:
Some enhancements for ckan interface - added category mapping and some further things

Modified: trunk/mapbender/conf/ckan.conf-dist
===================================================================
--- trunk/mapbender/conf/ckan.conf-dist	2013-02-23 20:53:14 UTC (rev 8569)
+++ trunk/mapbender/conf/ckan.conf-dist	2013-02-24 11:34:34 UTC (rev 8570)
@@ -2,8 +2,32 @@
 DEFINE('API_KEY','2d0a9ff9-9538-4b9a-8ceb-c975208986cf');
 DEFINE('CKAN_SERVER_IP','127.0.0.1');
 DEFINE('CKAN_GROUP_NAME','gdi-rp-neu');
+DEFINE('CKAN_GROUP_SYMBOL','http://www.geoportal.rlp.de/portal/fileadmin/design/logo_gdi-rp.png');
+DEFINE('CKAN_GROUP_TITLE','GDI-RP');
 DEFINE('CKAN_API_UPDATE',1);
 DEFINE('CKAN_API_CREATE',3);
+DEFINE('OPEN_LICENCES','2,3,4,5');
+$topicCkanCategoryMap = array(
+	"1" => "farming",
+	"2" => "biota",
+	"3" => "boundaries",
+	"4" => "climatologyMeteorologyAtmosphere",
+	"5" => "economy",
+	"6" => "elevation",
+	"7" => "environment",
+	"8" => "geoscientificInformation",
+	"9" => "health",
+	"10" => "imageryBaseMapsEarthCover",
+	"11" => "intelligenceMilitary",
+	"12" => "inlandWaters",
+	"13" => "location",
+	"14" => "oceans",
+	"15" => "planningCadastre",
+	"16" => "society",
+	"17" => "structure",
+	"18" => "transportation",
+	"19" => "utilitiesCommunication"
+);
 //testrp
 //'1083d169-73d7-4472-831a-edd901a550b1';
 //'83.243.48.195';

Modified: trunk/mapbender/http/php/mod_exportMapbenderLayer2CkanObjects.php
===================================================================
--- trunk/mapbender/http/php/mod_exportMapbenderLayer2CkanObjects.php	2013-02-23 20:53:14 UTC (rev 8569)
+++ trunk/mapbender/http/php/mod_exportMapbenderLayer2CkanObjects.php	2013-02-24 11:34:34 UTC (rev 8570)
@@ -11,11 +11,11 @@
 postcode
 contactvoicetelephone
 contactelectronicmailaddress*/
-
+$openLicences = OPEN_LICENCES;
 //select open data information from mapbenders database
 $sql = <<<SQL
 
-select wms_id, layer_id, layer.uuid as uuid, wms_title || ':' || layer_title as title, wms_abstract || ':' || layer_abstract as notes, tou_licence_title, tou_licence_url, tou_licence_id, isopen, to_timestamp(wms_timestamp) as wms_timestamp, to_timestamp(wms_timestamp_create) as wms_timestamp_create, wms_owner as service_owner, fkey_mb_group_id as service_group, contactperson, address, city, postcode, contactvoicetelephone, contactelectronicmailaddress from (select termsofuse_id, description as tou_licence_title, descriptionlink as tou_licence_url, wms_tou.name as tou_licence_id, wms_tou.isopen as isopen, wms_id, wms_title, wms_timestamp, wms_timestamp_create, wms.wms_abstract, wms.wms_owner, wms.fkey_mb_group_id, contactperson, address, city, postcode, contactvoicetelephone, contactelectronicmailaddress from (select * from termsofuse inner join wms_termsofuse on termsofuse.termsofuse_id = wms_termsofuse.fkey_termsofuse_id and termsofuse.termsofuse_id in (2,3,4,5)) as wms_tou
  inner join wms on wms_tou.fkey_wms_id = wms.wms_id) as wms_tou2 inner join layer on wms_tou2.wms_id = layer.fkey_wms_id and layer_searchable=1; 
+select wms_id, layer_id, f_collect_topic_cat_layer(layer_id) as category, layer.uuid as uuid, wms_title || ':' || layer_title as title, wms_abstract || ':' || layer_abstract as notes, tou_licence_title, tou_licence_url, tou_licence_id, isopen, to_timestamp(wms_timestamp) as wms_timestamp, to_timestamp(wms_timestamp_create) as wms_timestamp_create, wms_owner as service_owner,fees,accessconstraints, fkey_mb_group_id as service_group, contactperson, address, city, postcode, contactvoicetelephone, contactelectronicmailaddress from (select termsofuse_id, description as tou_licence_title, descriptionlink as tou_licence_url, wms_tou.name as tou_licence_id, wms_tou.isopen as isopen, wms_id, wms_title, wms_timestamp, wms_timestamp_create, wms.wms_abstract, wms.wms_owner,fees,accessconstraints,wms.fkey_mb_group_id, contactperson, address, city, postcode, contactvoicetelephone, contactelectronicmailaddress from (select * from termsofuse inner join wms_termsofuse on termsofuse.termsofus
 e_id = wms_termsofuse.fkey_termsofuse_id and termsofuse.termsofuse_id in ($openLicences)) as wms_tou inner join wms on wms_tou.fkey_wms_id = wms.wms_id) as wms_tou2 inner join layer on wms_tou2.wms_id = layer.fkey_wms_id and layer_searchable=1; 
 
 SQL;
 $result = db_query($sql);
@@ -37,12 +37,28 @@
 	$sqlTable['service_phone'][] = $row['contactvoicetelephone'];
 	$sqlTable['service_email'][] = $row['contactelectronicmailaddress'];
 	$sqlTable['notes'][] = $row['notes'];
+	$sqlTable['service_fees'][] = $row['fees'];
+	$sqlTable['service_accessconstraints'][] = $row['accessconstraints'];
 	$sqlTable['tou_licence_title'][] = $row['tou_licence_title'];
 	$sqlTable['tou_licence_id'][] = $row['tou_licence_id'];
 	$sqlTable['tou_licence_url'][] = $row['tou_licence_url'];
 	$sqlTable['isopen'][] = $row['isopen'];
 	$sqlTable['temporal_coverage_to'][] = $row['wms_timestamp'];
 	$sqlTable['temporal_coverage_from'][] = $row['wms_timestamp_create'];
+	//build categories array
+	if (isset($row['category']) && $row['category'] != '') {
+		$categories = explode(",",str_replace("{","",str_replace("}","",str_replace("}{",",",$row['category']))));
+		//exchange ids with ckan categories from ckan.conf
+		for ($i=0; $i < count($categories); $i++){
+			if (array_key_exists($categories[$i],$topicCkanCategoryMap)) {
+				$categories[$i] = $topicCkanCategoryMap[$categories[$i]];
+			}
+		}
+		$e = new mb_exception('mod_exportMapbenderLayer2CkanObjects.php: categories from db: '.$categories[1]);
+		$sqlTable['categories'][] = $categories;
+	} else {
+		$sqlTable['categories'][] = false;
+	}
 }
 $groupOwnerArray = array();
 $groupOwnerArray[0] = $sqlTable['service_group'];
@@ -87,7 +103,7 @@
 	//example package and mapping
 	$package->maintainer = $mbArray['group_title']; //mb_group.mb_group_name
 	$package->point_of_contact = $mbArray['group_title'];//"Andreas Becker"; //mb_user.mb_user_name - owner
-	$package->point_of_contact_free_address = $mbArray['group_address']."- test - ". $mbArray['group_postcode']." ".$mbArray['group_city']."\n".$mbArray['group_telephone'];//"Ferdinand-Sauerbruch-Straße 15"; //mb_group.mb_group_address
+	$package->point_of_contact_free_address = $mbArray['group_address']."\r\n". $mbArray['group_postcode']." ".$mbArray['group_city']."\r\n".$mbArray['group_telephone'];//"Ferdinand-Sauerbruch-Straße 15"; //mb_group.mb_group_address
 	$package->point_of_contact_email = $mbArray['group_email'];//"poststelle at lvermgeo.rlp"; //mb_group.mb_group_email
 	$package->license = $mbArray['tou_licence_title'];//"Datenlizenz Deutschland – Namensnennung – nicht kommerziell"; // termsofuse.description
 	$package->author = $mbArray['mb_user_id'];//""; //mb_group.mb_group_name
@@ -98,15 +114,22 @@
 	//$package->groups[0] = CKAN_GROUP_NAME;
 	//for v3:
 	$package->groups[0]->name = CKAN_GROUP_NAME; //constant
+	if ($mbArray['categories']) {
+		//add categories as groups
+		for ($i=0; $i < count($mbArray['categories']); $i++){
+			$package->groups[$i + 1]->name = $mbArray['categories'][$i];
+		}
+	}
 	$package->name = $mbArray['name'];// $datasetName; //layer.uuid
 	$package->notes = $mbArray['notes'];//"Die (Digitale) Topographische Karte 1:100 000 ermöglicht aufgrund der abgebildeten Fläche die Darstellung großräumige Gebiete."; //wms.wms_abstract || layer.layer_abstract
 	$package->title = $mbArray['title'];//"Topographische Karte Rheinland-Pfalz 1:100.000"; //wms.wms_title || layer.layer_title - OK
+	//TODO: really needed?
 	$package->other_terms_of_use = "other terms of use";//$mbArray['mb_user_id'];// "test tou"; //null or ""
 	//TODO: problem date format
-	//$package->temporal_coverage_to = $mbArray['temporal_coverage_to'];// "2012-01-01"; // last update ? wms.wms_timestamp - OK
-	//$package->temporal_coverage_from = $mbArray['temporal_coverage_from'];// "2011-01-01"; // last update ? wms.wms_timestamp_create - OK
-	$package->temporal_coverage_to = "2012-01-01"; // last update ? wms.wms_timestamp - OK
-	$package->temporal_coverage_from = "2011-01-01"; // last update ? wms.wms_timestamp_create - OK
+	$package->temporal_coverage_to = substr($mbArray['temporal_coverage_to'],0,10);// "2012-01-01"; // last update ? wms.wms_timestamp - OK
+	$package->temporal_coverage_from = substr($mbArray['temporal_coverage_from'],0,10);// "2011-01-01"; // last update ? wms.wms_timestamp_create - OK
+	//$package->temporal_coverage_to = "2012-01-01"; // last update ? wms.wms_timestamp - OK
+	//$package->temporal_coverage_from = "2011-01-01"; // last update ? wms.wms_timestamp_create - OK
 
 	$package->content_type = $mbArray['resource_type'];// "testcontenttype"; //constant: Service
 	if ($mbArray['isopen'] == 1) {
@@ -118,7 +141,7 @@
 
 	$package->resources[0]->description = "Anzeige im GeoPortal.rlp";//$mbArray['mb_user_id'];// "Link zur WMS-Darstellung im GeoPortal.rlp, die Darstellung erfolgt ab einem Maßstab 1:500.000"; //fix: "".id.id?
 	$package->resources[0]->format = "Kartenviewer"; //constant
-	$package->resources[0]->url = "http://www.geoportal.rlp.de/mapbender/php/wms.php?layer_id=".$mbArray['resource_id']."&REQUEST=GetCapabilities&VERSION=1.1.1&SERVICE=WMS";// "http://www.geoportal.rlp.de/portal/karten.html?LAYER[zoom]=1&LAYER[id]=36699"; //constant .. ids
+	$package->resources[0]->url = "http://www.geoportal.rlp.de/portal/karten.html?LAYER[zoom]=1&LAYER[id]=".$mbArray['resource_id'];// "http://www.geoportal.rlp.de/portal/karten.html?LAYER[zoom]=1&LAYER[id]=36699"; //constant .. ids
 	$package->resources[0]->resource_type = "visualization"; //constant
 
 	$package->resources[1]->description = "WMS Capabilities Link zur Integration in GIS oder Webapplikationen";//$mbArray['mb_user_id'];// "Link zur WMS-Darstellung im GeoPortal.rlp, die Darstellung erfolgt ab einem Maßstab 1:500.000"; //fix: "".id.id?
@@ -135,11 +158,15 @@
 	$package->author_address->email = $mbArray['mb_user_id'];// ""; // ""
 	$package->maintainer_address->url = $mbArray['group_homepage'];//$mbArray['service_address'];// null; //mb_group.mb_group_homepage
 	$package->maintainer_address->email = $mbArray['service_email'];// ""; //mb_group.mb_group_email
-	$package->maintainer_address->free_address = $mbArray['service_address'].'\n'.$mbArray['service_postcode'];// null; //mb_group.mb_group_address - more things with \r\n mb_group_voicetelephone, ...
+	$package->maintainer_address->free_address = $mbArray['service_address']."\r\n".$mbArray['service_postcode']." ".$mbArray['service_city'];// null; //mb_group.mb_group_address - more things with \r\n mb_group_voicetelephone, ...
 	$package->terms_of_use->license_id = $mbArray['tou_licence_id'];// "ger-name-nc"; //termsofuse.name - OK
 	$package->terms_of_use->license_title = $mbArray['tou_licence_title'];// "Datenlizenz Deutschland – Namensnennung – nicht kommerziell"; //termsofuse.description OK
 	$package->terms_of_use->license_url = $mbArray['tou_licence_url'];// null; //termsofuse.descriptionlink OK
-	$package->terms_of_use->other = "test licence";//$mbArray['mb_user_id'];// null; // null?
+	if ($mbArray['service_fees'] != "") {
+		$package->terms_of_use->other = $mbArray['service_fees'];//$mbArray['mb_user_id'];// null; // null?
+	} else {
+		//$package->terms_of_use->other = "Keine";
+	}
 	/*
 	$package->extras->sector = "Öffentlicher Sektor";
 	$package->extras->is_free_of_charge = false;

Modified: trunk/mapbender/http/php/mod_syncCkan.php
===================================================================
--- trunk/mapbender/http/php/mod_syncCkan.php	2013-02-23 20:53:14 UTC (rev 8569)
+++ trunk/mapbender/http/php/mod_syncCkan.php	2013-02-24 11:34:34 UTC (rev 8570)
@@ -413,14 +413,21 @@
 						$existingPackage->groups[$i] = $existingPackage->groups[$i]->name;
 						$error = new mb_exception('mod_syncCkan.php: groups['.$i.'] new:'.$existingPackage->groups[$i]);
 					}
+					$package->point_of_contact = "dummy";
+					$package->content_type = "dummy";
+					$package->point_of_contact_free_address = "dummy";
+					$package->point_of_contact_email = "dummy at dummy.de";
+					$package->point_of_contact_url = "http://test.de";
+					$package->other_terms_of_use = "dummy";
+					//$package->extras = null;
 					//update the name and status of package to delete:
-					$existingPackage->state = "deleted";
-					$existingPackage->name = $existingPackage->name."_".time();
+					$package->state = "deleted";
+					$package->name = $existingPackage->name."_".time();
 					//update it with api v2 ;-)
 					$ckan = new ckanApi(API_KEY,CKAN_SERVER_IP);
 					$ckan->base_url='http://'.CKAN_SERVER_IP.':5000/api/2/';
 					try {
-						$result = $ckan->post_package_register($existingPackage->id,json_encode($existingPackage));
+						$result = $ckan->post_package_register($existingPackage->id,json_encode($package));
 					}
 					catch (Exception $e) {
 						$error = new mb_exception('mod_syncCkan.php: update dataset http_code:'.$e->getMessage());
@@ -438,20 +445,23 @@
 					}
 					//some rp specials for deleting non conformant datasets - which maybe generated by hand!
 					/*2013-02-23 21:37:57,704 ERROR [ckan.controllers.api] Validation error: "{'point_of_contact': [u'Missing value'], 'content_type': [u'Missing value'], 'point_of_contact_free_address': [u'At least one value must be specified'], 'point_of_contact_email': [u'At least one value must be specified'], 'point_of_contact_url': [u'At least one value must be specified']}"*/
+
+					//create complete dummy object:
 					
-					$existingPackage->point_of_contact = "dummy";
-					$existingPackage->content_type = "dummy";
-					$existingPackage->point_of_contact_free_address = "dummy";
-					$existingPackage->point_of_contact_email = "dummy at dummy.de";
-					$existingPackage->point_of_contact_url = "http://test.de";
-					
+					$package->point_of_contact = "dummy";
+					$package->content_type = "dummy";
+					$package->point_of_contact_free_address = "dummy";
+					$package->point_of_contact_email = "dummy at dummy.de";
+					$package->point_of_contact_url = "http://test.de";
+					$package->other_terms_of_use = "dummy";
+					//$package->extras = null;
 					//update the name and status of package to delete:
-					$existingPackage->state = "deleted";
-					$existingPackage->name = $existingPackage->name."_".time();
+					$package->state = "deleted";
+					$package->name = $existingPackage->name."_".time();
 					$ckan = new ckanApi(API_KEY,CKAN_SERVER_IP);
 					$ckan->base_url='http://'.CKAN_SERVER_IP.':5000/api/1/';
 					try {
-						$result = $ckan->put_package_entity($packageName,json_encode($existingPackage));
+						$result = $ckan->put_package_entity($packageName,json_encode($package));
 					}
 					catch (Exception $e) {
 						$error = new mb_exception('mod_syncCkan.php: update dataset http_code:'.$e->getMessage());
@@ -466,5 +476,8 @@
 		return true;
 	}
 }
+function create_dummy_object() {
 
+	return $dummyObject;
+}
 ?>



More information about the Mapbender_commits mailing list