Skip to main content

swisstopo geospatial Python utilities

Project description

PyPI version fury.io Documentation Status CI/CD pre-commit.ci status codecov GitHub license

swisstopopy

swisstopo geospatial Python utilities.

Features

STAC API utilities

Easily filter swisstopo STAC collections based on geospatial extents, dates, file extensions or data resolutions:

import contextily as cx
import swisstopopy

region = "EPFL"
client = swisstopopy.SwissTopoClient(region)

alti3d_gdf = client.get_collection_gdf(
    swisstopopy.SWISSALTI3D_COLLECTION_ID,
)
ax = alti3d_gdf.plot(alpha=0.1)
cx.add_basemap(ax, crs=alti3d_gdf.crs)

tiles

Filter to get the latest data for each tile:

latest_alti3d_gdf = swisstopopy.get_latest(alti3d_gdf)
latest_alti3d_gdf.head()
id collection ... geometry
0 swissalti3d_2021_2532-1151 ch.swisstopo.swissalti3d ... POLYGON ((6.56572 46.50684, 6.56572 46.51594, ...
1 swissalti3d_2021_2532-1151 ch.swisstopo.swissalti3d ... POLYGON ((6.56572 46.50684, 6.56572 46.51594, ...
2 swissalti3d_2021_2532-1151 ch.swisstopo.swissalti3d ... POLYGON ((6.56572 46.50684, 6.56572 46.51594, ...
3 swissalti3d_2021_2532-1151 ch.swisstopo.swissalti3d ... POLYGON ((6.56572 46.50684, 6.56572 46.51594, ...
4 swissalti3d_2021_2532-1152 ch.swisstopo.swissalti3d ... POLYGON ((6.56558 46.51584, 6.56558 46.52493, ...

or filter by other metadata attributes such as ground resolution and/or file extensions:

alti3d_gdf[
    (alti3d_gdf["assets.eo:gsd"] == 0.5)
    & alti3d_gdf["assets.href"].str.endswith(".tif")
]
id collection ... geometry
0 swissalti3d_2019_2532-1151 ch.swisstopo.swissalti3d ... POLYGON ((6.56572 46.50684, 6.56572 46.51594, ...
4 swissalti3d_2019_2532-1152 ch.swisstopo.swissalti3d ... POLYGON ((6.56558 46.51584, 6.56558 46.52493, ...
8 swissalti3d_2019_2533-1152 ch.swisstopo.swissalti3d ... POLYGON ((6.57861 46.51594, 6.57861 46.52503, ...
12 swissalti3d_2021_2532-1151 ch.swisstopo.swissalti3d ... POLYGON ((6.56572 46.50684, 6.56572 46.51594, ...
16 swissalti3d_2021_2532-1152 ch.swisstopo.swissalti3d ... POLYGON ((6.56558 46.51584, 6.56558 46.52493, ...
20 swissalti3d_2021_2533-1152 ch.swisstopo.swissalti3d ... POLYGON ((6.57861 46.51594, 6.57861 46.52503, ...

STAC data processing

Automated generation of geospatial datasets: building footprints with estimated heights, DEM and tree canopy. For example, a tree canopy raster for any given part of Switzerland can be obtained as in:

import rasterio as rio
from rasterio import plot

dst_filepath = "tree-canopy.tif"
swisstopopy.get_tree_canopy_raster(region, dst_filepath)

with rio.open(dst_filepath) as src:
    plot.show(src)

tree-canopy

See the overview notebook and the API documentation for more details on the geospatial dataset generation functions.

Installation

Like many other geospatial Python packages, swisstopopy requires many base C libraries that cannot be installed with pip. Accordingly, the best way to install swisstopopy is to use conda/mamba, i.e., in a given conda environment, run:

# or mamba install -c conda-forge geopandas
conda install -c conda-forge geopandas

Within the same conda environment, you can then install swisstopopy using pip:

pip install swisstopopy

Note that the get_tree_canopy_raster requires PDAL and its Python bindings, which are not installed by default with swisstopopy. Like with geopandas, the easiest way to install such requirements is using conda/mamba, e.g.: conda install -c conda-forge python-pdal.

Notes

The SwissTopoClient class can be used to process any collection of the swisstopo STAC API, and basic features succh as geospatial and datetime filtering should work out of the box. However, filtering based on further metadata such as the resolution is only fully supported for the following collections:

Acknowledgements

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

swisstopopy-0.3.0.tar.gz (25.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

swisstopopy-0.3.0-py3-none-any.whl (27.6 kB view details)

Uploaded Python 3

File details

Details for the file swisstopopy-0.3.0.tar.gz.

File metadata

  • Download URL: swisstopopy-0.3.0.tar.gz
  • Upload date:
  • Size: 25.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for swisstopopy-0.3.0.tar.gz
Algorithm Hash digest
SHA256 e63f9546329b5a1511b7174b6a125a4f454e8c49a484a8060d5d443cd80e070d
MD5 49da2782603f07acf9570baf3ea48a31
BLAKE2b-256 1e007601f774747e6bd6f61acc22e65a401e89f6f397671657ecd0de0e54388d

See more details on using hashes here.

File details

Details for the file swisstopopy-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: swisstopopy-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 27.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for swisstopopy-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 172815b3a02932865e68f6bf1400a0da0c463af853210ff5fd76d168e8f0b7ef
MD5 9c436f2509b1221e7f89e0a2818ddd6c
BLAKE2b-256 6807d09ce0c00f63d3b8367cfc3928d7ad1e36b3fff242c7328d1e3751c306ed

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page