diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-eoplatform.spec | 963 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 965 insertions, 0 deletions
@@ -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> + +   <br/>   [](https://github.com/psf/black)  + +## 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 +``` + + + +**Show only `landsat8` bands** + +```sh +eoplatform info landsat8 -b +``` + +**Show information on composite `NDVI`** + +```sh +eoplatform info ndvi +``` + + + +#### ...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> + +   <br/>   [](https://github.com/psf/black)  + +## 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 +``` + + + +**Show only `landsat8` bands** + +```sh +eoplatform info landsat8 -b +``` + +**Show information on composite `NDVI`** + +```sh +eoplatform info ndvi +``` + + + +#### ...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> + +   <br/>   [](https://github.com/psf/black)  + +## 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 +``` + + + +**Show only `landsat8` bands** + +```sh +eoplatform info landsat8 -b +``` + +**Show information on composite `NDVI`** + +```sh +eoplatform info ndvi +``` + + + +#### ...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 @@ -0,0 +1 @@ +dfa702f85e777184bd516ae4f9631f29 eoplatform-0.2.4.tar.gz |