Skip to main content

Definition and tools for Equi7Grid and its tiling system.

Project description

Equi7Grid

tests coverage pypi package docs

The Equi7Grid is a spatial reference system designed to handle efficiently the archiving, processing, and displaying of high resolution raster image data. It supports geo-datacubes holding large volumes of satellite imagery, as it preserves geometric accuracy and minimises data oversampling over global land surfaces to a very low value of 3%.


plot

This package contains:

  • code for working with the Equi7Grid: how to convert to, how to use the tiling system, how to identify coordinates, etc.
  • files defining the contentinal zones, coordinate system, projection parameters, base tilings, etc.

A detailed documentation on the Equi7Grid definition is at

~/docs/doc_files/

and its scientific background is published in this journal article.

The package is a light wrapper around pytileproj, which contains a more generic framework for working with projected tiling systems and grids. Please check out its documention for getting more information on all offered functionalities

Coordinate reference systems

Easiest access to Equi7's seven continental coordinate reference systems (CRSs) is via the EPSG codes:

Africa         EPSG:27701
Antarctica     EPSG:27702
Asia           EPSG:27703
Europe         EPSG:27704
North America  EPSG:27705
Oceania        EPSG:27706
South America  EPSG:27707

For example, when using pyproj>=3.6.1 in python, you can transform coordinates like this:

from pyproj import Transformer
lon, lat = Transformer.from_crs("EPSG:27704", "EPSG:4326", always_xy=True).transform(x, y)

An alternative are PROJ4 strings:

AF: '+proj=aeqd +lat_0=8.5 +lon_0=21.5 +x_0=5621452.01998 +y_0=5990638.42298 +datum=WGS84 +units=m +no_defs'
AN: '+proj=aeqd +lat_0=-90 +lon_0=0 +x_0=3714266.97719 +y_0=3402016.50625 +datum=WGS84 +units=m +no_defs'
AS: '+proj=aeqd +lat_0=47 +lon_0=94 +x_0=4340913.84808 +y_0=4812712.92347 +datum=WGS84 +units=m +no_defs'
EU: '+proj=aeqd +lat_0=53 +lon_0=24 +x_0=5837287.81977 +y_0=2121415.69617 +datum=WGS84 +units=m +no_defs'
NA: '+proj=aeqd +lat_0=52 +lon_0=-97.5 +x_0=8264722.17686 +y_0=4867518.35323 +datum=WGS84 +units=m +no_defs'
OC: '+proj=aeqd +lat_0=-19.5 +lon_0=131.5 +x_0=6988408.5356 +y_0=7654884.53733 +datum=WGS84 +units=m +no_defs'
SA: '+proj=aeqd +lat_0=-14 +lon_0=-60.5 +x_0=7257179.23559 +y_0=5592024.44605 +datum=WGS84 +units=m +no_defs'

Installation

This package can be installed via pip:

pip install equi7grid

If you want to use equi7grid's visualisation features, then you can install the required optional dependencies with:

pip install equi7grid[vis]

If you want to reproject and resample files to the Equi7Grid, then you need to install the warp extension:

pip install equi7grid[warp]

Contribute

We are happy if you want to contribute. Please raise an issue explaining what is missing or if you find a bug. We will also gladly accept pull requests against our master branch for new features or bug fixes.

Development setup

For development you can either use a conda/mamba or uv environment. After that you should be able to run uv run pytest to run the test suite.

uv (recommended)

Here is an example using only uv for creating the environment and managing dependencies.

First, install uv:

wget -qO- https://astral.sh/uv/install.sh | sh

Next, create your virtual environment, e.g.

uv venv --python 3.12

Finally, you can add all required and optional dependencies to it:

uv pip install -r pyproject.toml -e . --all-extras

mamba

Here is an example using mamba together with uv for managing dependencies.

First, install conda and set the path:

wget "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh" -O miniforge.sh
bash miniforge.sh -b -p $HOME/miniforge
export PATH="$HOME/miniforge/bin:$PATH"

Next, create a virtual environment:

conda create -n equi7grid python=3.12 mamba
source activate equi7grid
mamba install -c conda-forge uv

Finally, use uv to install all other dependencies and equi7grid itself, e.g.:

uv pip install -r pyproject.toml -e . --all-extras
uv pip install -e . --no-deps

News

2026 February:

New major release v1.0.0! 🎉🥳

This release contains a complete refactoring of the whole codebase, including pytileproj, which is the main dependency of equi7grid. All requests and issues raised by the user community were considered resulting in flexible, user-defined pixel samplings and grid tilings and new interfaces to create objects for working with the Equi7Grid.

2025 October:

We’re currently preparing a version 2 of the Equi7Grid and its software. For this, we collect user needs and requests, and develop an modular approach for more flexible options for pixel samplings and grid tilings.

Contributions—whether comments, recommendations, or code—are welcome, and are collected here in the Discussion Section section

2024 May:

For the seven continental Equi7 coordinate systems, the newly available EPSG codes EPSG:27701 - EPSG:27707 are available via

  • with proj>=9.4.0 from the generic coordinate transformation software proj (e.g. used within GDAL/OGR>=3.9.0).
  • with EPSG>=v11.002 from the Geodetic Parameter Dataset of EPSG
  • with QGIS>=3.36 and its versatile and open geographic information system (link)

Several updates are in the pipeline of this python package:

  • interface to the EPSG codes
  • updates on the continental zone bordes - streamlining along political delimiters
  • flexible tile extents and grid samplings, allowing also user-defined tile extents
  • updated interfaces to reprojection methods (e.g. to and from UTM, or LonLat)

Guidelines

If you want to contribute please follow these steps:

  • fork the equi7grid repository to your account
  • clone the repository
  • make a new feature branch from the equi7grid master branch
  • add your feature
  • please include tests for your contributions in one of the test directories. We use pytest so a simple function called test_my_feature is enough
  • submit a pull request to our master branch

Citation

citation

If you use the software in a publication then please cite it using the Zenodo DOI. Be aware that this badge links to the latest package version.

Please select your specific version here to get the DOI of that version. You should normally always use the DOI for the specific version of your record in citations. This is to ensure that other researchers can access the exact research artefact you used for reproducibility.

You can find additional information regarding DOI versioning here.

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

equi7grid-1.0.0.tar.gz (5.0 MB view details)

Uploaded Source

Built Distribution

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

equi7grid-1.0.0-py3-none-any.whl (5.0 MB view details)

Uploaded Python 3

File details

Details for the file equi7grid-1.0.0.tar.gz.

File metadata

  • Download URL: equi7grid-1.0.0.tar.gz
  • Upload date:
  • Size: 5.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.8.20

File hashes

Hashes for equi7grid-1.0.0.tar.gz
Algorithm Hash digest
SHA256 56e2b201b0a3c2db5522591f267ca2cf0fe59b2be68230ff0709e181e0b7bbce
MD5 f2551344a076633930a424e06a88ff06
BLAKE2b-256 08b079e9ade995505b29c27f3ee7dd985ff993b993f2d9648955d47376ad58cc

See more details on using hashes here.

File details

Details for the file equi7grid-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: equi7grid-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 5.0 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.8.20

File hashes

Hashes for equi7grid-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7ce57437e445b0f9364cb2f88afa552df7e5b43ca7fbe88c3516a779b87f455b
MD5 4103f11665a50d3900c84de27f4b3318
BLAKE2b-256 76dc92ec8779f80bfb6a844e322ec12957b02248b549cc3e360ac9431870e9ef

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