metoffice / edr_server Goto Github PK
View Code? Open in Web Editor NEWAn EDR (Environmental Data Retrieval) Server written in Python.
License: BSD 3-Clause "New" or "Revised" License
An EDR (Environmental Data Retrieval) Server written in Python.
License: BSD 3-Clause "New" or "Revised" License
Fetching a specific collection by its ID currently returns the response for /collections
, not /collections/{coll_id}
. This also means that fetching a nonexistent collection ID does not raise an error.
Unit handling to build a buffered point of a certain specific radius is not working correctly with any combinations of units and projections. Ideally:
Some invalid EDR queries are currently incorrectly being handled by the collections
route. For example, this URL:
http://localhost:8808/collections/00002/Parameter 2_{t}
is invalid as an individual item request because:
/items
element in the URL, andt
parameter hasn't been templated out.Despite this, the server responds with the generic collections
response, when a 404 should be being raised. Suspect this is due to an overly greedy regular expression for matching collections
queries.
The service links (to the description, license and T&C) in a collection are all set to point to another resource on the server, but these might wish to be set to a custom value (or a different value for different collections), which isn't currently possible.
The Cube query is the other outstanding query type not yet supported by the server (see also #24). It might be a bit more different to the other queries like Area, Radius, ... - this needs to be confirmed - but it probably also needs to either return Domain type JSON or FeatureCollection type JSON.
Corridor and Trajectory queries are some of the few query types not yet supported by the EDR Server. I think they need to exactly follow the pattern used by Radius and Position queries - they should inherit from the Area query type and be able to return either FeatureCollection or Domain type JSON responses.
The EDR OpenAPI schema identifies some elements as required and/or nullable
We haven't been particularly rigorous in adhering to these restrictions in our initial implementation.
The implications for the core.models
data models:
None
None
if not explicitly setThe implications for serialisation are:
None
values are serialised as JSON null
valuesNone
None
would be an error, and ought not to be possible if our core.models
are correctly implementedI believe the possible options are something like
nullable=False | nullable=True | |
---|---|---|
required=True | None not allowed in data models; always included in serialisation |
None allowed in data models; always included in serialisation |
required=False | None allowed in data models; not included in serialisation if set to None |
None allowed in data models; Element omitted from serialisation if set to None |
(https://github.com/opengeospatial/ogcapi-environmental-data-retrieval/blob/master/standard/openapi/schemas/extent.yaml)[ogcapi-environmental-data-retrieval/standard/openapi/schemas/extent.yaml] declares that extent.bbox
is an array with a minimum of one item. It describes it as:
One or more bounding boxes that describe the spatial extent of the dataset. In the Core only a single bounding box is supported. Extensions may support additional areas. If multiple areas are provided, the union of the bounding boxes describes the spatial extent.
Each item is an array of 4 or 6 items, giving the minimum and maximum coordinates for 2D and 3D bounding boxes respectively.
The items are described as:
Each bounding box is provided as four or six numbers, depending on whether the coordinate reference system includes a vertical axis (height or depth):
- Lower left corner, coordinate axis 1
- Lower left corner, coordinate axis 2
- Minimum value, coordinate axis 3 (optional)
- Upper right corner, coordinate axis 1
- Upper right corner, coordinate axis 2
- Maximum value, coordinate axis 3 (optional)
The coordinate reference system of the values is WGS 84 longitude/latitude (http://www.opengis.net/def/crs/OGC/1.3/CRS84) unless a different coordinate reference system is specified in
crs
.For WGS 84 longitude/latitude the values are in most cases the sequence of minimum longitude, minimum latitude, maximum longitude and maximum latitude. However, in cases where the box spans the antimeridian the first value (west-most box edge) is larger than the third value (east-most box edge).
If the vertical axis is included, the third and the sixth number are the bottom and the top of the 3-dimensional bounding box.
If a feature has multiple spatial geometry properties, it is the decision of the server whether only a single spatial geometry property is used to determine the extent or all relevant geometries.
Currently, our implementation only allows a single bounding box (as modelled by edr_server.core.models.extent.SpatialExtent
)
We should:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.