Suite

Accéder à l'API Rest de Geoserver à l'aide de python

Accéder à l'API Rest de Geoserver à l'aide de python


existe-t-il de toute façon pour accéder à Rest Api de Geoserver en utilisant python autre que gsconfig. car il ne prend pas en charge pour moi. j'utilise python3.4 Comme créer un espace de travail, ajouter des couches par programme à Geoserver


Comme déjà mentionné légèrement par Slslam, vous pouvez utiliser le module de requêtes de Python pour envoyer les mêmes requêtes POST à ​​l'API REST de GeoServer que vous pourriez le faire à partir de la ligne de commande avec cUrl.

Il s'agit d'un exemple que j'ai récemment utilisé pour activer une couche encore inconnue de GeoServer mais déjà disponible dans le DataStore connecté de l'espace de travail donné (une base de données PostGIS dans mon cas), y compris l'activation de la dimension TIME.

En fait, la seule chose qui diffère des exemples donnés sur la page cUrl ci-dessus est de savoir comment lancer la requête POST. En dehors de cela, le XML que vous envoyez à l'API REST peut contenir tout ce que vous voulez tant qu'il est valide (sinon, vous recevrez un message d'erreur du serveur dans votre variable de requêtes).

Pour utiliser le module, soit l'installer viademandes d'installation de pipou, de préférence sur les systèmes Windows, en téléchargeant ce binaire et en l'installant viapip chemin d'installationverslefichier.whl.

demandes d'importation # définissez vos paramètres url = 'http://localhost:8080/geoserver/rest/workspaces/my_workspace/datastores/my_datastore/featuretypes' headers = {'Content-Type': 'text/xml'} auth = (' admin', 'geoserver') # définissez votre chaîne XML que vous souhaitez envoyer au serveur data = """  my_layer_name EPSG : 4326 vrai    vrai dateheure CONTINUOUS_INTERVAL ISO8601 MAXIMUM  mon_magasin de données """ # lancer la requête r = request.post(url, headers=headers, auth=auth, data=data) # inspecter la réponse print(r.text)

Je pense qu'on y répond ici mais j'ajouterai un module python nommé gisconfig, les détails sont ci-dessous. Il existe des bibliothèques prenant en charge les capacités HTTP, par ex. Demande. De plus, vous pouvez regarder ici, bien qu'il soit en phase de développement. Le dépôt Github est ici.

par exemple. pour créer une couche sur localhost-details se trouve dans le référentiel github précédent.

à partir de geoserver.catalog import Catalogue cat = Catalog("http://localhost:8080/geoserver/") topp = self.cat.get_workspace("topp") shapefile_plus_sidecars = shapefile_and_friends("states") # shapefile_and_friends devrait regarder sur le système de fichiers pour trouver un fichier de formes # et les fichiers associés en fonction du chemin de base passé dans # # shapefile_plus_sidecars == { # 'shp': 'states.shp', # 'shx': 'states.shx', # 'prj': 'states .prj', # 'dbf': 'states.dbf' # } # 'data' est requis (il peut y avoir une alternative 'schema' plus tard, pour créer des featuretypes vides) # 'workspace' est facultatif (l'espace de travail par défaut de GeoServer est utilisé par… par défaut) # 'name' est requis ft = self.cat.create_featuretype(name, workspace=topp, data=shapefile_plus_sidecars)

La nouvelle version s'appelle - geoserver-config dans le référentiel GitHub.

Je vois que cela facilite l'accès aux API GeoServer REST-Config, par exemple :

de geoserver.catalog import Catalogue # cat = Catalog("http://localhost:8080/geoserver/rest/", "admin", "geoserver") cat.get_workspaces(names="geosolutions,topp") # ou : cat .get_workspaces(names=["geosolutions", "topp"]) # ou : cat.get_stores(names=["sf", "mosaic"], workspaces=["nurc", "topp", "sf"])


Vous pouvez essayer la version plus récente d'une autre bibliothèque nommée geoserver-rest(pip installer geoserver-rest). Cette bibliothèque est très facile à utiliser et prend en charge le style dynamique des cartes GeoServer. Vous pouvez consulter la documentation de la bibliothèque ici. Certains des exemples sympas de cette bibliothèque sont expliqués ci-dessous,

#importer et initialiser la bibliothèque depuis geo.Geoserver import Geoserver geo = Geoserver('http://localhost:8080/geoserver', username="admin", password="geoserver") # télécharger le fichier raster geo.create_coveragestore(lyr_name=' layer1' path=r'path	o
asterfile.tif', workspace="demo") #créer un fichier de style dynamiquement geo.create_coveragestyle(raster_path=r'path	o
asterfile.tiff', style_name=" style_1", workspace="demo", color_ramp="RdYiGn") geo.publish_style(layer_name='geoserver_layer_name', style_name="raster_file_name", workspace="demo")