Skip to main content

EOP Logo

An Earth Observation Platform

Earth Observation made easy.

Report Bug | Request Feature

Downloads Forks Stargazers
Issues License Code style: black mypy

About

eoplatform is a Python package that aims to simplify Remote Sensing Earth Observation by providing actionable information on a wide swath of RS platforms and provide a simple API for downloading and visualizing RS imagery. Made for scientists, educators, and hobbiests alike.

  • Easy access to information on RS platforms
  • metadata module for extracting platform metadata
    • supports .txt and .xml files
  • composites modules for creating and learning about 91 RS band composites

Coming soon:

  • Data downloading
    • Landsat 8
    • Sentinel-2
  • Raster tools
    • Raster IO functions

Installation

eoplatform can be installed by running pip install eoplatform. It requires Python 3.8 or above to run.

eoplatform development is ongoing -

upgrade to the latest version by running: pip install eoplatform -U

Install the latest dev version with: pip install git+https://github.com/mtralka/EOPlatform/eoplatform

Usage

eoplatform is accessible through the command line (CLI) and as a module import.

Querying information

...through CLI

NAME is any supported composite or platform (case-insensitive)

Usage: eoplatform info [OPTIONS] NAME

Arguments:
  NAME  [required]

Options:
  -b, --only-bands
   / -nd, --no-description  [default: True]
  --help                    Show this message and exit.

EX:

Show all information on landsat8

eoplatform info landsat8

EOPlatform Landsat8 info example

Show only landsat8 bands

eoplatform info landsat8 -b

Show information on composite NDVI

eoplatform info ndvi

EOPlatform NDVI info example

...through imports

You can search through the eoplatform module

import eoplatform as eop

eop.info("Landsat8")  # case insensitive
eop.info("NDVI)

Or import your exact platform/composite

from eoplatform.platforms import landsat8
from eoplatform.composites import NDVI

landsat8.info()  # OR print(landsat8)
landsat8.bands.info()
landsat8.bands.RED.info()
NDVI.info()  # or print(NDVI)

Band composites

Importable through eoplatforms.composites or searchable (shown above) from eoplatform.info()

See implemented composite data dir for the exact implemented composites (inspired by awesome spectral indices)

Composite information

from eoplatform.composites import NDVI  # DVI, etc

NDVI.info()

Creating composite

Composites bands must be passed in as keyword arguments assigned to NumPy arrays.

from eoplatform.composites import NDVI

red_array: np.ndarray = ...
nir_array: np.ndarray = ...

ndvi: np.ndarray = NDVI.create(NIR=nir_array, RED=red_array)

Metadata extraction

Supports .txt and .xml files through extract_XML_metadata and extract_TXT_metadata.

from eoplatform.metadata import extract_XML_metadata

file_path: str = ...
target_attributes: List[str] = ...

values: Dict[str, str] = extract_XML_metadata(file_path, target_attributes)

Adding platforms / composites

Platforms and composites are auto-generated from /data/(composites,platforms). To add platforms or composites, simply create a new json file in the desired directory.

Platform

Platforms must have:

abbreviation: str
name: str

Example platform JSON

Standard key with value:

"abbreviation": "L8",
//snip

Key with value and metadata:

"altitude": {
    "meta": {
      "unit": "km"
    },
    "value": 705
  }
//snip

Bands standard for Platform key bands

Platform key for bands must be a list of following the band standard. EX:

"bands": [
    {
      "abbreviation": "CAER",
      "description":"",
      "name": "Coastal Aerosol",
      "number": 1,
      "resolution": "30",
      "sensor": "OLI",
      "wavelength": "0.433-0.453"
    },
  //snip
]

Band standard for el in bands

Each element to bands is a band. Each band must have:

number: int
name: str
abbreviation: str

Composites

Composites must have:

abbreviation: str
formula: str
name: str
reference: str
type: str  # matching CompositeType
bands: List[str]

Example JSON Composite

{
  "abbreviation": "ARI",
  "bands": [
    "GREEN",
    "VRE1"
  ],
  "description": "",
  "formula": "(1 / GREEN) - (1 / VRE1)",
  "name": "Anthocyanin Reflectance Index",
  "reference": "https://doi.org/10.1562/0031-8655(2001)074%3C0038:OPANEO%3E2.0.CO;2",
  "type": "vegetation"
}

Composite Types

Possible values for composite type key

  • VEGETATION
  • BURN
  • WATER
  • SNOW
  • DROUGHT
  • URBAN
  • KERNEL
  • NONE

For both platforms and composites, all other attributes will be dynamically rendered and shown in info

Roadmap

See the open issues for a list of proposed features (and known issues).

  • download support

Contributing

Contributions are welcome. Currently, eoplatform is undergoing rapid development and contribution opportunities may be scarce.

  • If you have suggestions for adding or removing features, feel free to open an issue to discuss it, or directly create a pull request with the proposed changes.
  • Create individual PR for each suggestion.
  • Use pre-commit hooks - pre-commit install
  • Code style is black, mypy --strict

License

Distributed under the GNU GPL-3.0 License. See LICENSE for more information.

Built With

Authors

Metadata

Release files for eoplatform 0.2.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for eoplatform 0.2.4
File Size Uploaded Provenance Actions
eoplatform-0.2.4.tar.gz 60.2 kB Without provenance Details for eoplatform-0.2.4.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for eoplatform 0.2.4
File Interpreter ABI Platform Actions
eoplatform-0.2.4-py3-none-any.whl Python 3 none any Details for eoplatform-0.2.4-py3-none-any.whl

Total release size: 131.5 kB

Release files / eoplatform-0.2.4.tar.gz

Download URL eoplatform-0.2.4.tar.gz
Size 60.2 kB
Tags Source
SHA-256 checksum
How to use checksums
ba2862bcb2732b9725f80dec8a46c87c92020c9fdb931af3626b07fe378adadf
BLAKE2b-256 checksum
How to use checksums
741e2c7777012b50da3022ae3e94448aa74a90ca4e462dd9e9c03273a1ff21d2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.11 CPython/3.8.0 Windows/10

Release files / eoplatform-0.2.4-py3-none-any.whl

Download URL eoplatform-0.2.4-py3-none-any.whl
Size 71.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a88945a1050fdff8c8d2cad98de8fbd8c61e55fdc3e85846a21d5c8d2a52ad3c
BLAKE2b-256 checksum
How to use checksums
c8c3ff3d921e1fa0abb85a0cd5c25034a07520b51b60415d497e6a5d8049122a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.11 CPython/3.8.0 Windows/10

Security for eoplatform 0.2.4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page