-
-
Notifications
You must be signed in to change notification settings - Fork 270
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
support STAC specification #221
Comments
I'm curious to see how stac, ogcapi-coverage and ogcapi-records operate together on a single endpoint, what aspects they can share and where are the challenges, would be good input for the upcoming sprint |
Are you considering external libraries for marshalling? Or we need to implement our own?
|
Good point. I'm guessing a STAC backend could provided via one of the sat-utils tools (for example) and a STAC backend's mission would be to provide Python |
Ok that makes sense, thanks @tomkralidis. |
@tomkralidis Should |
Would this depend on how we describe in configuration? Like, is STAC a dataset in config? Other options? |
Any guidance from the stac team? Is stac intended to run along side ogc api’s in a single ogc-api endpoint, or does it require it’s own endpoint, in that case maybe deploy a second instance of pygeoapi in a ‘stac’ modus? |
@pvgenuchten I would consider its own endpoint as suggested in the bullet above from @tomkralidis (cc @matthewhanson) |
Configuration could be something like: catalogs:
sat-api:
provider:
name: STAC
data: https://sat-api-dev.developmentseed.org/stac |
@francbartoli is the thought that STAC catalog providers would be their own provider architecture (i.e. separate from dataproviders), or that STAC would be a quality of existing data providers? If an elasticsearch backend, for instance, was loaded with STAC Items (perhaps marked in the To comment on the above comment:
My understanding (which is a bit weaker, since I mostly work with static STACs) is that STAC API contains some additional endpoints:
The idea would be that eventually, with the convergence of the Query/Filter extensions into OAF, the second endpoint would go away. @matthewhanson could provide more info as I'm basically summarizing what I heard from him yesterday at the STAC sprint. |
There is currently a PR up to change those endpoints: radiantearth/stac-spec#632 The
|
Thanks @matthewhanson, so in the meantime, we could adopt |
Right, not sure when it will land, but now it's agreed it's going to be |
@lossyrob do you mean something like this below (looking at earth-search)? datasets:
cbers4-awfi:
title: CBERS 4 AWFI Imagery
description: CBERS 4 AWFI Imagery
keywords:
- stac
- stac-api
- assets
links:
- type: application/json
rel: collection
title: information
href: https://earth-search.aws.element84.com/collections/cbers4-awfi
hreflang: en-US
extents:
spatial:
bbox: [-180,-90,180,90]
crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84
temporal:
begin: null
end: null # or empty (either means open ended)
provider:
name: STAC
data: # borrow data architecture from OGR provider
source_type: ES
source: ES:http://localhost:9200/cbers4-awfi we are then implicitly saying that On the other hand, we could have a dedicated architecture like: catalogues:
hello-catalogue:
type: OAPIC (CAT4)???
sat-api:
type: STAC
provider:
name: STAC
datasets:
cbers4-awfi:
title: CBERS 4 AWFI Imagery
description: CBERS 4 AWFI Imagery
keywords:
- stac
- stac-api
- assets
links:
- type: application/json
rel: collection
title: information
href: https://earth-search.aws.element84.com/collections/cbers4-awfi
hreflang: en-US
extents:
spatial:
bbox: [-180,-90,180,90]
crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84
temporal:
begin: null
end: null # or empty (either means open ended)
provider:
name: STAC
data: # borrow data architecture from OGR provider
source_type: ES
source: ES:http://localhost:9200/cbers4-awfi Here the concept of collection is nested in the specific provider type. Other options @tomkralidis @pvgenuchten ?
|
Perhaps catalogues:
landsat8-aws:
type: STAC
title: Landsat 8 AWS catalog
description: Landsat 8 AWS catalog
keywords:
- landsat
links:
- type: text/html
rel: canonical
title: information
href: https://registry.opendata.aws/landsat-8/
hreflang: en-US
extents:
spatial:
bbox: [-180,-90,180,90]
crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84
temporal:
begin: 2013-03-18
end: null # or empty (either means open ended)
provider:
name: Elasticsearch
data: http://localhost:9200/landsat-aws/FeatureCollection
id_field: ID and then Thoughts? |
Considering radiantearth/stac-spec#632 (comment), i imagine this method will search/browse through a server in a google type of way: a list of 3 datasets, 5 catalogrecords and 2 grids. I like it. From the current discussion I get the feeling that the stac team actually wants to see stac being made available embedded in a/the OAPI endpoint (and not separately). Sorry of my unawareness about stac, am i getting it correctly that stac exposes a queryable series of metadata records of sensor observations (imagery) at a given time/location? A client will then be able to extract the relevant fraction of a cloud-optimised-geotiff (or alternative source)? To me these cases seem quite similar to what others are designing in OAPI-records, sensorthings and/or OAPI-coverage, so either very likely to collide (separate endpoint +1) or on the other hand this could be an opportunity to engage with those teams and design a shared model (embedded +1) looking forward to hear your thoughts/ideas |
WIP in https://github.com/geopython/pygeoapi/tree/stac . Notes:
Note the STAC example here is based on Landsat 8 AWS (tooling hacked together at https://gist.github.com/tomkralidis/3b6263ec9fbd84e6b50d79527dda149f |
In geonetwork we deploy a specific instance of elastic search for this use case; metadata records, as well as content from WFS's is indexed in that instance to facilitate cross CSW/WFS search. An administrator indicates which WFS's to crawl. This approach could also be a relevant for pygeoapi. In the case of csv/shapefiles pygeoapi could operate against the index for many operations, which would benefit performance. If an index like elastic would become such an essential component, it would be good to facilitate an abstraction layer, so a user could select his favourite index (or database) to provide such functionality (SOLR, Noise, PostGIS) |
@francbartoli I'm a bit unclear what the best path is on the configuration side, but I think that's due to my lack of familiarity of pygeoapi. Tom's WIP branch looks like it's on the right track though! |
Update: current work in https://github.com/geopython/pygeoapi/tree/stac |
FYI functionality merged in #389. Keeping open for STAC API implementation. |
@tomkralidis the |
@ricardogsilva in the |
Hi All, I hate to dig up an old post -- but has any /search feature been added (i.e. like https://stacspec.org/STAC-api.html#operation/getSearchSTAC)? We have just setup pygeoapi, and it seems to still not be available. Thanks! |
@gnosys-tmiller I have a pending branch/PR to implement STAC API, which should be completed in the next 2 weeks or so. cc @cholmes. |
Hey @tomkralidis is your WIP allowing an existing STAC API to be browsed from with pygeoapi, or for pygeoapi itself to act as a STAC API? Also, this is labeled "help wanted" - what can be done to help? 😉 |
I to am interested in the intersection of STAC and pygeoapi - any links to what support can be offered? Happy to dig in and help. |
Any progress here @tomkralidis -- can we lend a hand getting this over the finish line? |
As per RFC4, this Issue has been inactive for 90 days. In order to manage maintenance burden, it will be automatically closed in 7 days. |
As per RFC4, this Issue has been closed due to there being no activity for more than 90 days. |
Implement the STAC API specification to support search/discovery of geospatial assets. Notes for implementation based on initial discussions with @matthewhanson :
/stac/search
)pygeoapi.api
to address request handlingThe text was updated successfully, but these errors were encountered: