[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