Utilisation importlayers importer des données dans GeoNode¶
Le geonode.layers application comprend 2 commandes de gestion que vous pouvez utiliser pour charger ou configurer des données dans votre GeoNode. Ces deux sont invoquées en utilisant le script manage.py. Cette section vous guidera à travers la façon d’utiliser la commande de gestion des importlayers et la section suivante vous guidera à travers le processus d’utilisation updatelayers.
La première chose à faire est d’utiliser l’option –help pour les importlayers commande pour enquêter sur les options de cette commande de gestion. Vous pouvez afficher l’aide en exécutant la commande suivante
$ python manage.py importlayers --help
Cela va produire une sortie qui ressemble à ce qui suit
Usage: manage.py importlayers [options] path [path...]
Brings a data file or a directory full of data files into aGeoNode site. Layers are added to the Django database, theGeoServer configuration, and the GeoNetwork metadata index.
Options:
-v VERBOSITY, --verbosity=VERBOSITY
Verbosity level; 0=minimal output, 1=normal output,
2=verbose output, 3=very verbose output
--settings=SETTINGS The Python path to a settings module, e.g.
"myproject.settings.main". If this isn't provided, the
DJANGO_SETTINGS_MODULE environment variable will be
used.
--pythonpath=PYTHONPATH
A directory to add to the Python path, e.g.
"/home/djangoprojects/myproject".
--traceback Print traceback on exception
-u USER, --user=USER Name of the user account which should own the imported
layers
-i, --ignore-errors Stop after any errors are encountered.
-o, --overwrite Overwrite existing layers if discovered (defaults
False)
-k KEYWORDS, --keywords=KEYWORDS
The default keywords for the imported layer(s). Will
be the same for all imported layers if multiple
imports are done in one command
--version show program's version number and exit
-h, --help show this help message and exit
Bien que la description de la plupart des options devrait être compréhensible en soi, sa valeur en revue certaines des options clés d’un peu plus de détails.
L’option -i va forcer la commande d’arrêter quand il rencontre d’abord une erreur. Sans cette option spécifiée, le processus sauter erreurs qui ont couches et continuer à charger les autres couches.
L’option -o indique que les couches avec le même nom que le nom de base seront chargés et écrasent la couche existante.
L’option -u indique qui sera l’utilisateur qui possède les couches importées. Le même utilisateur sera le point de contact et l’auteur de métadonnées ainsi que pour la couche
L’option -k est utilisé pour ajouter des mots clés pour l’ensemble des couches importées.
La commande de gestion des couches d’importation est invoquée en spécifiant les options comme décrit ci-dessus et en spécifiant le chemin d’un fichier à une seule couche ou à un répertoire qui contient plusieurs fichiers. Aux fins de cet exercice, vous permet d’utiliser l’ensemble de test des couches qui sont fournis avec geonode par défaut. Vous pouvez remplacer ce chemin avec le répertoire pour vos propres fichiers de formes
$ python manage.py importlayers -v 3 /var/lib/geonode/lib/python2.7/site-packages/gisdata/data/good/vector/
Cette commande va produire la sortie suivante à votre terminal
Verifying that GeoNode is running ...
Found 8 potential layers.
No handlers could be found for logger "pycsw"
[created] Layer for '/Users/jjohnson/.venvs/geonode/lib/python2.7/site-packages/gisdata/data/good/vector/san_andres_y_providencia_administrative.shp' (1/8)
[created] Layer for '/Users/jjohnson/.venvs/geonode/lib/python2.7/site-packages/gisdata/data/good/vector/san_andres_y_providencia_coastline.shp' (2/8)
[created] Layer for '/Users/jjohnson/.venvs/geonode/lib/python2.7/site-packages/gisdata/data/good/vector/san_andres_y_providencia_highway.shp' (3/8)
[created] Layer for '/Users/jjohnson/.venvs/geonode/lib/python2.7/site-packages/gisdata/data/good/vector/san_andres_y_providencia_location.shp' (4/8)
[created] Layer for '/Users/jjohnson/.venvs/geonode/lib/python2.7/site-packages/gisdata/data/good/vector/san_andres_y_providencia_natural.shp' (5/8)
[created] Layer for '/Users/jjohnson/.venvs/geonode/lib/python2.7/site-packages/gisdata/data/good/vector/san_andres_y_providencia_poi.shp' (6/8)
[created] Layer for '/Users/jjohnson/.venvs/geonode/lib/python2.7/site-packages/gisdata/data/good/vector/san_andres_y_providencia_water.shp' (7/8)
[created] Layer for '/Users/jjohnson/.venvs/geonode/lib/python2.7/site-packages/gisdata/data/good/vector/single_point.shp' (8/8)
Detailed report of failures:
Finished processing 8 layers in 30.0 seconds.
8 Created layers
0 Updated layers
0 Skipped layers
0 Failed layers
3.750000 seconds per layer
Si vous rencontrez des erreurs lors de l’exécution de cette commande, vous pouvez utiliser l’option -v pour augmenter la verbosité de la sortie de sorte que vous pouvez déboguer le problème. Le niveau de détail peut être réglé de 0-3, 0 étant la valeur par défaut. Un exemple de ce que la sortie ressemble quand une erreur est détectée et la verbosité est fixé à 3 est représenté ci-dessous
Verifying that GeoNode is running ...
Found 8 potential layers.
[failed] Layer for '/Users/jjohnson/.venvs/geonode/lib/python2.7/site-packages/gisdata/data/good/vector/san_andres_y_providencia_administrative.shp' (1/8)
[failed] Layer for '/Users/jjohnson/.venvs/geonode/lib/python2.7/site-packages/gisdata/data/good/vector/san_andres_y_providencia_coastline.shp' (2/8)
[failed] Layer for '/Users/jjohnson/.venvs/geonode/lib/python2.7/site-packages/gisdata/data/good/vector/san_andres_y_providencia_highway.shp' (3/8)
[failed] Layer for '/Users/jjohnson/.venvs/geonode/lib/python2.7/site-packages/gisdata/data/good/vector/san_andres_y_providencia_location.shp' (4/8)
[failed] Layer for '/Users/jjohnson/.venvs/geonode/lib/python2.7/site-packages/gisdata/data/good/vector/san_andres_y_providencia_natural.shp' (5/8)
[failed] Layer for '/Users/jjohnson/.venvs/geonode/lib/python2.7/site-packages/gisdata/data/good/vector/san_andres_y_providencia_poi.shp' (6/8)
[failed] Layer for '/Users/jjohnson/.venvs/geonode/lib/python2.7/site-packages/gisdata/data/good/vector/san_andres_y_providencia_water.shp' (7/8)
[failed] Layer for '/Users/jjohnson/.venvs/geonode/lib/python2.7/site-packages/gisdata/data/good/vector/single_point.shp' (8/8)
Detailed report of failures:
/Users/jjohnson/.venvs/geonode/lib/python2.7/site-packages/gisdata/data/good/vector/san_andres_y_providencia_administrative.shp
================
Traceback (most recent call last):
File "/Users/jjohnson/projects/geonode/geonode/layers/utils.py", line 682, in upload
keywords=keywords,
File "/Users/jjohnson/projects/geonode/geonode/layers/utils.py", line 602, in file_upload
keywords=keywords, title=title)
File "/Users/jjohnson/projects/geonode/geonode/layers/utils.py", line 305, in save
store = cat.get_store(name)
File "/Users/jjohnson/.venvs/geonode/lib/python2.7/site-packages/geoserver/catalog.py", line 176, in get_store
for ws in self.get_workspaces():
File "/Users/jjohnson/.venvs/geonode/lib/python2.7/site-packages/geoserver/catalog.py", line 489, in get_workspaces
description = self.get_xml("%s/workspaces.xml" % self.service_url)
File "/Users/jjohnson/.venvs/geonode/lib/python2.7/site-packages/geoserver/catalog.py", line 136, in get_xml
response, content = self.http.request(rest_url)
File "/Library/Python/2.7/site-packages/httplib2/__init__.py", line 1445, in request
(response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
File "/Library/Python/2.7/site-packages/httplib2/__init__.py", line 1197, in _request
(response, content) = self._conn_request(conn, request_uri, method, body, headers)
File "/Library/Python/2.7/site-packages/httplib2/__init__.py", line 1133, in _conn_request
conn.connect()
File "/Library/Python/2.7/site-packages/httplib2/__init__.py", line 799, in connect
raise socket.error, msg
error: [Errno 61] Connection refused
Note
Cette dernière section de sortie sera répétée pour toutes les couches, et seul le premier est de montrer ci-dessus.
Cette erreur indique que GeoNode était incapable de se connecter à GeoServer pour charger les couches. Pour résoudre ce problème, vous devez vous assurer GeoServer est en marche et ré-exécutez la commande.
Si vous rencontrez des erreurs avec cette commande que vous ne pouvez pas résoudre, vous devriez le faire monter sur les utilisateurs de geonode liste de diffusion.
Vous devriez maintenant avoir les connaissances nécessaires pour importer des couches dans votre projet de GeoNode partir d’un répertoire sur le système de fichiers et serveurs pouvez l’utiliser pour charger plusieurs couches dans votre GeoNode à la fois.
Note
Si vous ne l’utilisez l’option -u de commande, la propriété des couches importées sera affecté à la super-primaire dans votre système. Vous pouvez utiliser l’interface GeoNodes Django Admin pour modifier cette après le fait, si vous voulez qu’ils soient détenus par un autre utilisateur.