summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--python-eoplatform.spec963
-rw-r--r--sources1
3 files changed, 965 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..1424b3c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/eoplatform-0.2.4.tar.gz
diff --git a/python-eoplatform.spec b/python-eoplatform.spec
new file mode 100644
index 0000000..406124b
--- /dev/null
+++ b/python-eoplatform.spec
@@ -0,0 +1,963 @@
+%global _empty_manifest_terminate_build 0
+Name: python-eoplatform
+Version: 0.2.4
+Release: 1
+Summary: Earth Observation made easy.
+License: GPL-3.0-only
+URL: https://github.com/mtralka/EOPlatform
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/74/1e/2c7777012b50da3022ae3e94448aa74a90ca4e462dd9e9c03273a1ff21d2/eoplatform-0.2.4.tar.gz
+BuildArch: noarch
+
+Requires: python3-rich
+Requires: python3-typer[all]
+Requires: python3-numpy
+
+%description
+<br/>
+<p align="center">
+ <a href="https://github.com/mtralka/EOPlatform">
+ <img src="images/logo.jpg" alt="EOP Logo" width="300" height="300">
+ </a>
+
+ <h3 align="center">An Earth Observation Platform</h3>
+
+ <p align="center">
+ Earth Observation made easy.
+ <br/>
+ <br/>
+ <a href="https://github.com/mtralka/EOPlatform/issues">Report Bug</a>
+ |
+ <a href="https://github.com/mtralka/EOPlatform/issues">Request Feature</a>
+ </p>
+</p>
+
+![Downloads](https://img.shields.io/github/downloads/mtralka/EOPlatform/total) ![Forks](https://img.shields.io/github/forks/mtralka/EOPlatform?style=social) ![Stargazers](https://img.shields.io/github/stars/mtralka/EOPlatform?style=social) <br/> ![Issues](https://img.shields.io/github/issues/mtralka/EOPlatform) ![License](https://img.shields.io/github/license/mtralka/EOPlatform) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) ![mypy](https://img.shields.io/badge/mypy-checked-brightgreen)
+
+## 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)
+
+```sh
+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`**
+
+```sh
+eoplatform info landsat8
+```
+
+![EOPlatform Landsat8 info example](images/eoplatform-info-landsat8.PNG)
+
+**Show only `landsat8` bands**
+
+```sh
+eoplatform info landsat8 -b
+```
+
+**Show information on composite `NDVI`**
+
+```sh
+eoplatform info ndvi
+```
+
+![EOPlatform NDVI info example](images/eoplatform-composite-info-ndvi.PNG)
+
+#### ...through imports
+
+You can search through the `eoplatform` module
+
+```python
+import eoplatform as eop
+
+eop.info("Landsat8") # case insensitive
+eop.info("NDVI)
+```
+
+Or import your exact platform/composite
+
+```python
+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](/eoplatform/data/composites) for the exact implemented composites (inspired by [awesome spectral indices](https://github.com/davemlz/awesome-spectral-indices))
+
+#### Composite information
+
+```python
+from eoplatform.composites import NDVI # DVI, etc
+
+NDVI.info()
+```
+
+#### Creating composite
+
+Composites bands must be passed in as keyword arguments assigned to NumPy arrays.
+
+```python
+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`.
+
+```python
+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:
+
+```python
+abbreviation: str
+name: str
+```
+
+#### Example platform JSON
+
+Standard key with value:
+
+```json
+"abbreviation": "L8",
+//snip
+```
+
+Key with value and metadata:
+
+```json
+"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:
+
+```json
+"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:
+
+```python
+number: int
+name: str
+abbreviation: str
+```
+
+### Composites
+
+Composites must have:
+
+```python
+abbreviation: str
+formula: str
+name: str
+reference: str
+type: str # matching CompositeType
+bands: List[str]
+```
+
+#### Example JSON Composite
+
+```json
+{
+ "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](https://github.com/mtralka/EOPlatform/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](https://github.com/mtralka/EOPlatform/issues/new) 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](https://github.com/mtralka/EOPlatform/blob/main/LICENSE.md) for more information.
+
+## Built With
+
+* [Rich](https://github.com/willmcgugan/rich)
+* [Typer](https://github.com/tiangolo/typer)
+* [Numpy](https://numpy.org/)
+* [awesome spectral indices](https://github.com/davemlz/awesome-spectral-indices)
+
+## Authors
+
+* [**Matthew Tralka**](https://github.com/mtralka/)
+
+
+%package -n python3-eoplatform
+Summary: Earth Observation made easy.
+Provides: python-eoplatform
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-eoplatform
+<br/>
+<p align="center">
+ <a href="https://github.com/mtralka/EOPlatform">
+ <img src="images/logo.jpg" alt="EOP Logo" width="300" height="300">
+ </a>
+
+ <h3 align="center">An Earth Observation Platform</h3>
+
+ <p align="center">
+ Earth Observation made easy.
+ <br/>
+ <br/>
+ <a href="https://github.com/mtralka/EOPlatform/issues">Report Bug</a>
+ |
+ <a href="https://github.com/mtralka/EOPlatform/issues">Request Feature</a>
+ </p>
+</p>
+
+![Downloads](https://img.shields.io/github/downloads/mtralka/EOPlatform/total) ![Forks](https://img.shields.io/github/forks/mtralka/EOPlatform?style=social) ![Stargazers](https://img.shields.io/github/stars/mtralka/EOPlatform?style=social) <br/> ![Issues](https://img.shields.io/github/issues/mtralka/EOPlatform) ![License](https://img.shields.io/github/license/mtralka/EOPlatform) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) ![mypy](https://img.shields.io/badge/mypy-checked-brightgreen)
+
+## 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)
+
+```sh
+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`**
+
+```sh
+eoplatform info landsat8
+```
+
+![EOPlatform Landsat8 info example](images/eoplatform-info-landsat8.PNG)
+
+**Show only `landsat8` bands**
+
+```sh
+eoplatform info landsat8 -b
+```
+
+**Show information on composite `NDVI`**
+
+```sh
+eoplatform info ndvi
+```
+
+![EOPlatform NDVI info example](images/eoplatform-composite-info-ndvi.PNG)
+
+#### ...through imports
+
+You can search through the `eoplatform` module
+
+```python
+import eoplatform as eop
+
+eop.info("Landsat8") # case insensitive
+eop.info("NDVI)
+```
+
+Or import your exact platform/composite
+
+```python
+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](/eoplatform/data/composites) for the exact implemented composites (inspired by [awesome spectral indices](https://github.com/davemlz/awesome-spectral-indices))
+
+#### Composite information
+
+```python
+from eoplatform.composites import NDVI # DVI, etc
+
+NDVI.info()
+```
+
+#### Creating composite
+
+Composites bands must be passed in as keyword arguments assigned to NumPy arrays.
+
+```python
+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`.
+
+```python
+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:
+
+```python
+abbreviation: str
+name: str
+```
+
+#### Example platform JSON
+
+Standard key with value:
+
+```json
+"abbreviation": "L8",
+//snip
+```
+
+Key with value and metadata:
+
+```json
+"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:
+
+```json
+"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:
+
+```python
+number: int
+name: str
+abbreviation: str
+```
+
+### Composites
+
+Composites must have:
+
+```python
+abbreviation: str
+formula: str
+name: str
+reference: str
+type: str # matching CompositeType
+bands: List[str]
+```
+
+#### Example JSON Composite
+
+```json
+{
+ "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](https://github.com/mtralka/EOPlatform/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](https://github.com/mtralka/EOPlatform/issues/new) 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](https://github.com/mtralka/EOPlatform/blob/main/LICENSE.md) for more information.
+
+## Built With
+
+* [Rich](https://github.com/willmcgugan/rich)
+* [Typer](https://github.com/tiangolo/typer)
+* [Numpy](https://numpy.org/)
+* [awesome spectral indices](https://github.com/davemlz/awesome-spectral-indices)
+
+## Authors
+
+* [**Matthew Tralka**](https://github.com/mtralka/)
+
+
+%package help
+Summary: Development documents and examples for eoplatform
+Provides: python3-eoplatform-doc
+%description help
+<br/>
+<p align="center">
+ <a href="https://github.com/mtralka/EOPlatform">
+ <img src="images/logo.jpg" alt="EOP Logo" width="300" height="300">
+ </a>
+
+ <h3 align="center">An Earth Observation Platform</h3>
+
+ <p align="center">
+ Earth Observation made easy.
+ <br/>
+ <br/>
+ <a href="https://github.com/mtralka/EOPlatform/issues">Report Bug</a>
+ |
+ <a href="https://github.com/mtralka/EOPlatform/issues">Request Feature</a>
+ </p>
+</p>
+
+![Downloads](https://img.shields.io/github/downloads/mtralka/EOPlatform/total) ![Forks](https://img.shields.io/github/forks/mtralka/EOPlatform?style=social) ![Stargazers](https://img.shields.io/github/stars/mtralka/EOPlatform?style=social) <br/> ![Issues](https://img.shields.io/github/issues/mtralka/EOPlatform) ![License](https://img.shields.io/github/license/mtralka/EOPlatform) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) ![mypy](https://img.shields.io/badge/mypy-checked-brightgreen)
+
+## 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)
+
+```sh
+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`**
+
+```sh
+eoplatform info landsat8
+```
+
+![EOPlatform Landsat8 info example](images/eoplatform-info-landsat8.PNG)
+
+**Show only `landsat8` bands**
+
+```sh
+eoplatform info landsat8 -b
+```
+
+**Show information on composite `NDVI`**
+
+```sh
+eoplatform info ndvi
+```
+
+![EOPlatform NDVI info example](images/eoplatform-composite-info-ndvi.PNG)
+
+#### ...through imports
+
+You can search through the `eoplatform` module
+
+```python
+import eoplatform as eop
+
+eop.info("Landsat8") # case insensitive
+eop.info("NDVI)
+```
+
+Or import your exact platform/composite
+
+```python
+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](/eoplatform/data/composites) for the exact implemented composites (inspired by [awesome spectral indices](https://github.com/davemlz/awesome-spectral-indices))
+
+#### Composite information
+
+```python
+from eoplatform.composites import NDVI # DVI, etc
+
+NDVI.info()
+```
+
+#### Creating composite
+
+Composites bands must be passed in as keyword arguments assigned to NumPy arrays.
+
+```python
+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`.
+
+```python
+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:
+
+```python
+abbreviation: str
+name: str
+```
+
+#### Example platform JSON
+
+Standard key with value:
+
+```json
+"abbreviation": "L8",
+//snip
+```
+
+Key with value and metadata:
+
+```json
+"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:
+
+```json
+"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:
+
+```python
+number: int
+name: str
+abbreviation: str
+```
+
+### Composites
+
+Composites must have:
+
+```python
+abbreviation: str
+formula: str
+name: str
+reference: str
+type: str # matching CompositeType
+bands: List[str]
+```
+
+#### Example JSON Composite
+
+```json
+{
+ "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](https://github.com/mtralka/EOPlatform/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](https://github.com/mtralka/EOPlatform/issues/new) 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](https://github.com/mtralka/EOPlatform/blob/main/LICENSE.md) for more information.
+
+## Built With
+
+* [Rich](https://github.com/willmcgugan/rich)
+* [Typer](https://github.com/tiangolo/typer)
+* [Numpy](https://numpy.org/)
+* [awesome spectral indices](https://github.com/davemlz/awesome-spectral-indices)
+
+## Authors
+
+* [**Matthew Tralka**](https://github.com/mtralka/)
+
+
+%prep
+%autosetup -n eoplatform-0.2.4
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-eoplatform -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Mon May 29 2023 Python_Bot <Python_Bot@openeuler.org> - 0.2.4-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..cdb7c5a
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+dfa702f85e777184bd516ae4f9631f29 eoplatform-0.2.4.tar.gz