Earth Observation made easy.
Report Bug
|
Request Feature
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
- supports
composites
modules for creating and learning about 91 RS band composites
Coming soon:
- Data downloading
- Landsat 8
- Sentinel-2
- Raster tools
- Raster IO functions
eoplatform can be installed by running pip install eoplatform
. It requires Python 3.8 or above to run.
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
eoplatform is accessible through the command line (CLI) and as a module import.
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
Show only landsat8
bands
eoplatform info landsat8 -b
Show information on composite NDVI
eoplatform info ndvi
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)
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)
from eoplatform.composites import NDVI # DVI, etc
NDVI.info()
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)
Currently supports .txt
and .xml
files through extract_XML_metadata
and extract_TXT_metadata
.
extract_metadata
control function detects filetype and implements the required metadata extractor.
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)
or
detect filetype based on file_path
file extension
from eoplatform.metadata import extract_metadata
file_path: str = "....xml"
target_attributes: List[str] = ...
values: Dict[str, str] = extract_metadata(file_path, target_attributes) # detects .xml and return `extract_XML_metadata`
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.
Platforms must have:
abbreviation: str
name: str
Standard key with value:
"abbreviation": "L8",
//snip
Key with value and metadata:
"altitude": {
"meta": {
"unit": "km"
},
"value": 705
}
//snip
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
]
Each element to bands
is a band
. Each band must have:
number: int
name: str
abbreviation: str
Composites must have:
abbreviation: str
formula: str
name: str
reference: str
type: str # matching CompositeType
bands: List[str]
{
"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"
}
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
See the open issues for a list of proposed features (and known issues).
- download support
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
Distributed under the GNU GPL-3.0 License. See LICENSE for more information.