Map geometries to environmental semantics
Project description
geoenv
Map geometries to environmental semantics
geoenv is a Python library that maps geospatial geometries, such as points and polygons, to environmental terms in vocabularies/ontologies (e.g. ENVO). It’s like reverse geocoding, but for environments.
Features
- Broad scale environmental context: Provides consistent broad scale environmental context supplementing local scale environmental descriptions.
- Global Coverage: Provides worldwide resolution of terrestrial, coastal, and marine environments.
- GeoJSON Output: Outputs data as a GeoJSON Feature, for integration with other tools and libraries.
- Concurrent Data Resolution: Leverages
asyncioto query multiple geospatial data sources concurrently, providing fast results. - Modular and Extensible: Designed with a modular architecture to facilitate integration of new data sources and vocabularies.
Quick Start
Install from PyPI:
$ pip install geoenv
Resolve a point location to environmental descriptions:
import asyncio
from geoenv.geometry import Geometry
from geoenv.resolver import Resolver
from geoenv.data_sources import (WorldTerrestrialEcosystems,
EcologicalMarineUnits,
EcologicalCoastalUnits)
# Define a geometry in GeoJSON format (Point or Polygon)
geometry = Geometry(
{
"type": "Point",
"coordinates": [
-122.622364,
37.905931
]
}
)
# Set up the resolver. When the location's environment is not known,
# multiple data sources are included to cover potential environment
# types.
resolver = Resolver(
data_source=[
WorldTerrestrialEcosystems(),
EcologicalMarineUnits(),
EcologicalCoastalUnits(),
]
)
# Resolve the geometry to environmental descriptions. The resolver
# queries multiple data sources concurrently using `asyncio`.
response = asyncio.run(resolver.resolve(geometry))
# Access response data.
print(response.data)
The response is a GeoJSON Feature with environmental terms mapped to ENVO (by default). Only resolved environments are included:
{
"type": "Feature",
"identifier": null,
"geometry": {
"type": "Point",
"coordinates": [
-122.622364,
37.905931
]
},
"properties": {
"description": null,
"environment": [
{
"type": "Environment",
"dataSource": {
"identifier": "https://doi.org/10.5066/P9DO61LP",
"name": "WorldTerrestrialEcosystems"
},
"dateCreated": "2025-03-07 15:53:09",
"properties": {
"temperature": "Warm Temperate",
"moisture": "Moist",
"landCover": "Cropland",
"landForm": "Mountains",
"climate": "Warm Temperate Moist",
"ecosystem": "Warm Temperate Moist Cropland on Mountains"
},
"mappedProperties": [
{
"label": "temperate",
"uri": "http://purl.obolibrary.org/obo/ENVO_01000206"
},
{
"label": "humid air",
"uri": "http://purl.obolibrary.org/obo/ENVO_01000828"
},
{
"label": "area of cropland",
"uri": "http://purl.obolibrary.org/obo/ENVO_01000892"
},
{
"label": "mountain range",
"uri": "http://purl.obolibrary.org/obo/ENVO_00000080"
}
]
}
]
}
}
Motivation
Finding datasets based on their environmental context is a challenge in data synthesis. The process often relies on vague or inconsistent metadata. This variability presents a barrier to reliable, large-scale analysis due to time lost in data discovery and incomplete search results.
geoenv helps address this challenge by using a dataset’s originating location as a consistent and objective starting point. It can programmatically map the geometry of this location to standardized environmental terms, providing a scalable and repeatable method for generating interoperable metadata. This approach aims to enrich datasets with uniform, semantic metadata, making them potentially easier to discover, query, and integrate at scale.
Related Projects
The Global Ecosystems Atlas is a project that provides a comprehensive, harmonized open resource on the world's ecosystems. It standardizes diverse geospatial datasets by mapping them to the IUCN Global Ecosystem Typology, a hierarchical classification of environments.
Contributing
We welcome contributions! If you know of a useful data source or vocabulary, and have ideas for new features, or find a bug, please open an issue to start a discussion.
License
This project is licensed under the terms of the MIT license.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file geoenv-0.4.1.tar.gz.
File metadata
- Download URL: geoenv-0.4.1.tar.gz
- Upload date:
- Size: 37.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e718dbc02183db2d0409f011ce59e33858249b990650cdfa62d58003c7520644
|
|
| MD5 |
beab494956830dfc36009b4b600cc728
|
|
| BLAKE2b-256 |
7ea86803c5c316a749c9c85c8018dea5aa9860e39e4280d36ec1d8ac4137eee5
|
File details
Details for the file geoenv-0.4.1-py3-none-any.whl.
File metadata
- Download URL: geoenv-0.4.1-py3-none-any.whl
- Upload date:
- Size: 48.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
557013e1999b4c6a161dda2539c1435503f5de19c4218698dbefd699ba748e1b
|
|
| MD5 |
add3e3b8d90119774294c8e2d0829dcb
|
|
| BLAKE2b-256 |
5f22568d0418dda61ec846ce9c56031ee22d83746e87df8daf5ab94cd5ac6ae5
|