Lightweight Python client to interact with GeoServer Cloud REST API, GeoServer ACL and OGC services
Project description
python-geoservercloud
Installation
From PyPI:
pip install geoservercloud
From git repository:
git clone https://github.com/camptocamp/python-geoservercloud
cd python-geoservercloud
python3 -m venv .venv
source .venv/bin/activate
poetry install
Quick start
from geoservercloud import GeoServerCloud
geoserver = GeoServerCloud(
url="http://localhost:9090/geoserver/cloud/",
user="admin",
password="geoserver",
)
geoserver.create_workspace("newworkspace")
About
Lightweight Python client to interact with GeoServer Cloud REST API, GeoServer ACL and OGC services. Intended use cases are listed below.
Programmatic setup of a GeoServer catalog
For example, creating a workspace, connecting to a PostGIS datastore and publishing a PG layer:
geoserver.create_workspace("example")
geoserver.create_pg_datastore(
workspace_name="example",
datastore_name="example_store",
pg_host="localhost",
pg_port=5432,
pg_db="database",
pg_user="user",
pg_password="password"
)
geoserver.create_feature_type(
layer_name="layer_example",
workspace_name="example",
datastore_name="example_store",
title={
"en":"Layer title",
"fr": "Titre de la couche",
"default": "Default title",
},
)
Testing
Automatic tests of GeoServer functionalities with pytest
, for example before upgrading.
The example below tests the fallback mechanism for internationalized layer titles in the GetCapabilities document.
@pytest.mark.parametrize(
"language,expected_title",
[
(
"en",
"Layer title",
),
(
"fr",
"Titre de la couche",
),
(
"de,en",
"Layer title",
),
(
None,
"Default title",
),
],
)
def test_i18n_layer_title(geoserver, language, expected_title):
capabilities = geoserver.get_wms_layers(
workspace="example",
accept_languages=language,
)
layer = capabilities.get("Layer")
assert layer.get("Title") == expected_title
Syncing
Copying a workspace from one GeoServer instance to another, including PG datastores, layers, styles and style images.
In a Python console or script
from geoservercloud import GeoServerCloudSync
geoserversync = GeoServerCloudSync(
src_url="http://localhost:8080/geoserver",
src_user="admin",
src_password="geoserver",
dst_url="http://localhost:9099/geoserver",
dst_user="admin",
dst_password="geoserver",
)
geoserversync.copy_workspace("workspace_name", deep_copy=True)
In a shell terminal or script
First install the package in your current virtual environment (see Installation), then run the script with:
copy-workspace --src_url "http://localhost:8080/geoserver" --src_user admin --src_password geoserver --dst_url "http://localhost:9099/geoserver" --dst_user admin --dst_password geoserver --workspace workspace_name
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file geoservercloud-0.3.1.dev29.tar.gz
.
File metadata
- Download URL: geoservercloud-0.3.1.dev29.tar.gz
- Upload date:
- Size: 25.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6e6e94415d623900cffa3c7fdfbdf9ce4c4d67e6b215667267e543bfac3a9915 |
|
MD5 | 835d8736758bb31e1b6140fd4274f490 |
|
BLAKE2b-256 | 610a97f7d830f8c60c2511dfbb7b9d5fecff5327c13ca196e0cce61af2e70832 |
File details
Details for the file geoservercloud-0.3.1.dev29-py3-none-any.whl
.
File metadata
- Download URL: geoservercloud-0.3.1.dev29-py3-none-any.whl
- Upload date:
- Size: 34.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 897242d58e626910beeee906f0b1c04687b6642f4430fef9d69b822c2eb59d49 |
|
MD5 | acc3910cfe08859e90394528e003b837 |
|
BLAKE2b-256 | 1b617c733fd60e6cd54050d359e6128986ac1b59389b1e2f220c15921d7b908e |