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:
pycsw è scritto in Python, e funziona con le versioni (testate) 2.6 e 2.7
pycsw richiede le seguenti librerie:
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>
# easy_install or pip will do the trick
$ easy_install pycsw
# or
$ pip install pycsw
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.
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.
Per testare pycsw, usare il launcher pycsw dal gruppo Web Services, o aprire Firefox e andate all’indirizzo http://localhost/pycsw/tester/index.html:
Selezionando la lista drop-down a sinistra, l’utente può vedere diverse richieste POST predefinite, codificate come XML, che possono essere spedire a pycsw:
Per esempio, selezionando “apiso/DescribeRecord”, e cliccando il pulsante “Send”, una descrizione del ISO Application Profile record è visualizzato nel pannello di destra:
Selezionandog “GetCapabilities-SOAP” e cliccando il pulsante “Send”, una richiesta SOAP è spedita al server e ritorna le capacità del servizio web:
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:
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.
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.
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.
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.
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.
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.
pycsw supporta i seguenti database:
Nel OSGeo-Live, un semplice SQLite è stato utilizzato. Il database può essere trovato in /var/www/pycsw/tests/suites/cite/data/records.db
Al fine di creare un nuovo database SQLite dovrete:
[repository]
$ 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
$ 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.
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
Avviate QGIS dal gruppo Desktop GIS e andate in “Manage Plugins”
Attivate il plugin CSW dalla lista
Quindi selezionate il bottone CSW dalla barra degli strumenti e lanciate CSW Client
Aggiungetr il server pycsw premendo il bottone “New” e digitate http://localhost/pycsw/csw.py
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”
Eseguire la ricerca utilizzando il catalogo, o tramite valore stringa o con un rettangolo di selezione
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:
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
Per maggiori informazioni su pycsw, guardare la documentazione sul sito di pycsw.