From 45e246155a84b5591941f24f74d23876a68e6e5f Mon Sep 17 00:00:00 2001 From: awarde96 Date: Thu, 25 Jul 2024 13:36:17 +0000 Subject: [PATCH] Update readme --- README.md | 71 +++++++++++++++++- .../images/Logo_Destination_Earth_Colours.png | Bin 0 -> 27762 bytes 2 files changed, 69 insertions(+), 2 deletions(-) create mode 100644 docs/images/Logo_Destination_Earth_Colours.png diff --git a/README.md b/README.md index fcf70a9..d42136f 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,34 @@ | :warning: This project is BETA and will be experimental for the foreseeable future. Interfaces and functionality are likely to change. DO NOT use this software in any project/software that is operational. | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +

+ +
+ # covjsonkit -ECMWF library for encoding and decoding coverageJSON files/objects of meteorlogical features such as vertical profiles and time series. +

+ + ci + + + + +

+

+ Concept • + Installation • + Example • + Testing +

+ +## Concept + +Covjsonkit is an ECMWF library for encoding and decoding coverageJSON files/objects of meteorlogical features such as vertical profiles and time series. * Encodes and decodes CoverageJSON objects * Convert CoverageJSON files to and from xarray +* Works in conjunction with ECMWFs Polytope feature extraction library Current features implemented: @@ -14,4 +36,49 @@ Current features implemented: * Vertical Profile * Bounding Box * Frame -* Path \ No newline at end of file +* Path +* Wkt Polygons +* Shapefiles + +## Installation + +Install the polytope software with Python 3 (>=3.7) from GitHub directly with the command + + python3 -m pip install git+ssh://git@github.com/ecmwf/covjsonkit.git@develop + +or from PyPI with the command + + python3 -m pip install covjsonkit + +## Example + +The library consists of an encoder and a decoder element. The decoder can be used to decode valid coverageJSON files that can be then be edited and accessed via the api. It can also be used to convert to ther formats such as xarray. + +### Decoder + + from covjsonkit.api import Covjsonkit + + decoder = Covjsonkit().decode(coverage.covjson) + + print(decoder.type) + print(decoder.parameters) + print(decoder.get_referencing()) + + ds = decoder.to_xarray() + +### Encoder + +The following example encodes data output from the polytope feature extraction library assuming polytope_output is a valid output from polytope. + + from covjsonkit.api import Covjsonkit + + encoder = Covjsonkit().encode("CoverageCollection", "BoundingBox") + res = encoder.from_polytope(polytope_output) + +## Testing + +Python unit tests can be run with pytest: + + python -m pytest + +When a pull request is merged into develop or main a github actions CI pipeline is triggered to test formatting and unit tests. diff --git a/docs/images/Logo_Destination_Earth_Colours.png b/docs/images/Logo_Destination_Earth_Colours.png new file mode 100644 index 0000000000000000000000000000000000000000..f4ab398eaa3c89aa3711f85cf2f9d386fd0e3fd1 GIT binary patch literal 27762 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

ccF~lqH_I!$)EcsL7EmpbqCOoqq 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 HTKw}ry=uqk literal 0 HcmV?d00001