project logo OSGeo Project

Guida rapida pycsw

pycsw è un server OGC CSW scritto in Python.

pycsw implementa 10 clausole (HTTP protocol binding (Catalogue Services for the Web, CSW)) delle specifiche di implementazione del OpenGIS Catalogue Service, versione 2.0.2. Sviluppo avviato nel 2010 (formalmente annunciato nel 2011). Il progetto è certificato OGC Compliant, ed è un OGC Reference Implementation.

pycsw permette la pubblicazione e la ricerca di metadati geospaziali. Repository esistenti di metadati geospaziali possono essere esposti attraverso lo standard OGC:CSW 2.0.2.

pycsw è Open Source, rilasciato sotto un licenza MIT, e si può eseguire sulle maggiori piattaforme (Windows, Linux, Mac OS X).

pycsw è installato di default su OSGeo-Live DVD. Questa guida rapida descriverà come:

  • realizzare una nuova installazione di pycsw
  • testare pycsw attraverso l’applicazione di test
  • modificate il documento Capabilities di pycsw e di visualizzare queste informazioni in un browser
  • creare file di metadati ISO 19139 XML (attraverso INSPIRE Metadata Editor o GIMED)
  • caricare i file metadati XML create nel database di pycsw
  • installare QGIS CSW Client plugin
  • eseguire il rilevamento dei dati attraverso il Catalogue Service pycsw con QGIS

Installazione

Requisiti di sistema

pycsw è scritto in Python, e funziona con le versioni (testate) 2.6 e 2.7

pycsw richiede le seguenti librerie:

  • lxml (version >= 2.2.3) per il supporto XML
  • SQLAlchemy (version >= 0.0.5) per interfacciarsi con il database
  • Shapely (version >= 1.2.8) per interrogazioni spaziali / supporto geometrico
  • pyproj (version >= 1.8.9) per le trasformazioni di coordinate

Installazione dalla sorgente

Scaricate l’ultima versione pycsw o clonate da GitHub:

$ git clone https://github.com/geopython/pycsw.git pycsw

Assicuratevi che CGI sia abilitato per la vostra cartella d’installazione. Per esempio, su Apache, se voi impostate pycsw in /srv/www/htdocs/pycsw (dove il vostro URL sarà http://host/pycsw/csw.py), aggiungete il seguente codice in httpd.conf:

<Location /pycsw/>
 Options FollowSymLinks +ExecCGI
 Allow from all
 AddHandler cgi-script .py
</Location>

Installare dal Python Package Index (PyPi)

# easy_install or pip will do the trick
$ easy_install pycsw
# or
$ pip install pycsw

Installare su Ubuntu/Lubuntu/Kubuntu

Al fine di installare pycsw su una distribuzione basata su Ubuntu, potete usare lo script d’installazione di OSGeo-Live situato in pycsw/etc/dist:

$ cd pycsw/etc/dist
$ sudo ./install_pycsw.sh

Lo script installa le dipendenze (Apache, lxml, sqlalchemy, shapely, pyproj) e poi pycsw in /var/www.

Installare su openSUSE

Al fine di installare il pacchetto OBS in openSUSE 12.3, potete eseguire i seguenti comandi come utente root:

$ zypper -ar http://download.opensuse.org/repositories/Application:/Geo/openSUSE_12.1/ GEO
$ zypper -ar http://download.opensuse.org/repositories/devel:/languages:/python/openSUSE_12.1/ python
$ zypper refresh
$ zypper install pycsw

Per le versioni precedenti di openSUSE cambiare 12.3 con 12.2. Per le versioni future di openSUSE usare Factory. La versione Rolling Tumbleweed è anch’essa supportata. pycsw è inclusa nel repository ufficiale Application::Geo del OpenSUSE Build Service.

Testare l’applicazione

Per testare pycsw, usare il launcher pycsw dal gruppo Web Services, o aprire Firefox e andate all’indirizzo http://localhost/pycsw/tester/index.html:

../../_images/pycsw_tester_startup8.png

Selezionando la lista drop-down a sinistra, l’utente può vedere diverse richieste POST predefinite, codificate come XML, che possono essere spedire a pycsw:

../../_images/pycsw_tester_selection8.png

Per esempio, selezionando “apiso/DescribeRecord”, e cliccando il pulsante “Send”, una descrizione del ISO Application Profile record è visualizzato nel pannello di destra:

../../_images/pycsw_tester_describe_apiso_record8.png

Selezionandog “GetCapabilities-SOAP” e cliccando il pulsante “Send”, una richiesta SOAP è spedita al server e ritorna le capacità del servizio web:

../../_images/pycsw_tester_soap_capabillities8.png

Inoltre, l’utente può cercare i dati, effettuando un’interrogazione spaziale attraverso una bounding box, selezionando “GetRecords-filter-bbox” e modificando le coordinate nella richiesta XML:

../../_images/pycsw_tester_getrecords_bbox_filter8.png

L’utente può andare attraverso tutte le richieste disponibili ed eseguire diverse richieste per questa applicazione di test. Una via più robuste e grafica per eseguire queste richieste è descritta in un capitolo seguente di questo tutorial.

Funzionalità Document e Configurazione

Le funzionalità dell’installazione di pycsw può essere trovate all’indirizzo http://localhost/pycsw/csw.py?service=CSW&version=2.0.2&request=GetCapabilities.

Per modificare il servizio web dei metadati, inclusi nel documento delle capabilities, l’utente può modificare il file /var/www/pycsw/default.cfg sotto il tag [metadata:main].

Se l’utente vuole abilitare il supporto INSPIRE Discovery Service, i metadati sotto il tag [metadata:inspire] dev’essere riempito con la proprietà enabled dev’essere impostata a true.

Per le piene funzionalità e le opzioni di configurazione, per favore consultate documentazione nel sito internet pycsw.

Creazione dei metadati

Utilizzando European Open Source Metadata Editor (EUOSME)

I file dei Metadati per un set di dati spaziali o un servizio we spaziale può essere creato attraverso le implementazioni open source della direttiva INSPIRE per i metadati, European Open Source Metadata Editor (EUOSME). Questo software può essere trovato http://inspire-geoportal.ec.europa.eu/editor/. Il codice sorgente è disponibile https://joinup.ec.europa.eu/svn/euosme/trunk

L’utente compila i campi dei metadati obbligatori, attraverso le tabelle dell’applicazione, aggiungendo informazioni come il nome del proprietario dei dati, parole chiavi, la posizione della risorsa del web, la posizione geografica (usando una bounding box o il nome di uno stato) etc.

../../_images/pycsw_euosme_metadata_input8.png

Dopo che l’utente ha aggiunto tutte le informazioni disponibili, bisogna spingere il pulsante di validazione in alto della pagina, questo controllo può essere eseguito per consistenza con la direttiva INSPIRE.

../../_images/pycsw_euosme_save_metadata8.png

Dopo una validazione andata a buon fine, il file XML può essere salvato nel disco locale e visto attraverso une editor testuale o un browser.

Usando GIMED

GIMED è un Software Libero per creare e gestire file XML per metadati compatibili con INSPIRE. Per installare l’applicazione, usare i seguenti comandi da un terminale:

$ wget http://downloads.sourceforge.net/project/gimed/GIMED_v1.3.0.tar.gz
$ tar zxvf GIMED_v1.3.0.tar.gz
$ mono ./GIMED_v1.3.0/bin/GIMED.exe

L’utente può seguire la stessa procedura come per EUOSME per agiungere o modificate metadata, senza il bisogna di una connessione internet.

../../_images/pycsw_gimed8.png

Caricare Metadata

Impostare il repository dei Metadata

pycsw supporta i seguenti database:

  • SQLite3
  • PostgreSQL
  • MySQL

Nel OSGeo-Live, un semplice SQLite è stato utilizzato. Il database può essere trovato in /var/www/pycsw/tests/suites/cite/data/records.db

Creare un nuovo database

Al fine di creare un nuovo database SQLite dovrete:

  1. Editare default.cfg:

[repository]

  1. Impostare il database:
$ cd /var/www/pycsw
$ export PYTHONPATH=`pwd`
$ sudo python ./sbin/pycsw-admin.py -c setup_db -f default.cfg

Questo creerà le tabelle necessarie e i valori per il repository.

Il database creato è conforme a OGC SFSQL, e può essere usato con qualsiasi altro software implementi lo stesso standard. Per esempio lo potete usare con OGR:

$ ogrinfo /path/to/records.db
INFO: Open of 'records.db'
using driver 'SQLite' successful.
1: records (Polygon)
$ ogrinfo -al /path/to/records.db
# lots of output

Importare Metadata

$ cd /path/to/pycsw
$ export PYTHONPATH=`pwd`
$ python ./sbin/pycsw-admin.py -c load_records -f default.cfg -p /path/to/records -r

Questo importerà tutti i file *.xml da /path/to/records nel nuovo database e configura il repository per essere interrogabile come per Table 53 di OGC:CSW.

Installazione del client CSW di QGIS

Il meccanismo di richiesta/risposta HTTP non è abbastanza amichevole per l’utente finale al fine di eseguire le interrogazioni al Catalogue Service. Per questa ragione, ci sono molti Clients CSW nel form di applicazioni web come INSPIRE Geoportal o GeoNetwork. Per questo tutorial, noi useremo il plugin per QGIS OGC Catalogue Service Client.

Per installare il plugin:

$ cd ~
$ cd .qgis/python/plugins
$ svn co https://qgiscommunitypl.svn.sourceforge.net/svnroot/qgiscommunitypl/python/plugins/qgcsw/trunk qgcsw

Scoprire dati

QGIS CSW Plugin

Avviate QGIS dal gruppo Desktop GIS e andate in “Manage Plugins”

../../_images/pycsw_qgis_plugin8.png

Attivate il plugin CSW dalla lista

../../_images/pycsw_qgis_plugin_enable8.png

Quindi selezionate il bottone CSW dalla barra degli strumenti e lanciate CSW Client

../../_images/pycsw_qgis_csw_plugin_open8.png

Aggiungetr il server pycsw premendo il bottone “New” e digitate http://localhost/pycsw/csw.py

../../_images/pycsw_qgis_csw_plugin_add_server8.png

L’utente può aggiungere alcuni server di default usando il bottone “Add default servers” e anche ottenere le capabilities del server usando il bottone “Server info”

../../_images/pycsw_qgis_csw_plugin_server_info8.png

Eseguire la ricerca utilizzando il catalogo, o tramite valore stringa o con un rettangolo di selezione

../../_images/pycsw_qgis_csw_plugin_search8.png

Scoperta dati attraverso GeoExt

Un’altra possibilità di usare il server pycsw è attraverso un’applicazione web, agendo come clientCSW. Questa funzionalità è disponibile attraverso le librerie Javascript OpenLayers e GeoExt.

Per questo tutorial abbiamo creato una piccola dimostrazione in GeoExt (grazie Bart van den Eijnden) usando un’installazione demo di pycsw in http://demo.pycsw.org/services/csw:

  • Andare http://demo.pycsw.org/viewer/index2.html
  • Cliccare l’icona “find layers”
  • Inserire “airports” (senza doppie virgolette)
  • Cliccare “search” o premente Enter
  • Vedere i risultati
  • Cliccare l’icona “add to map” vicino l’ultimo risultato in quel set di risultati (“1 Million Scale - Airports”)
  • Vedere il layer aggiunto alla mappa
../../_images/pycsw_client_gxp7.png

Test dell’applicazione

Per scoprire i dati può essere anche eseguita tramite l’applicazione Tester impostando le appropriate richieste per esempio qualsiasi ricerca di testo con la stringa “imagery” scoprendo i dati XML creato in precedenza dal EUOSME

../../_images/pycsw_tester_discovery8.png

Per maggiori informazioni su pycsw, guardare la documentazione sul sito di pycsw.