Exercício 7 - Dados ambientais via OGC API - Environmental Data Retrieval
OGC API - Environmental Data Retrieval fornece uma Web API para aceder a dados ambientais usando padrões de consulta bem definidos:
A OGC API - Environmental Data Retrieval utiliza a OGC API - Features como bloco de construção, permitindo assim integração simplificada para clientes e utilizadores. A EDR pode ser considerada uma API de conveniência que não requer conhecimento aprofundado sobre o armazenamento/modelo de dados subjacente.
Suporte na pygeoapi
A pygeoapi suporta a especificação OGC API - Environmental Data Retrieval aproveitando tanto plugins de fornecedor de funcionalidades como de cobertura.
Note
Consulte a documentação oficial para mais informações sobre backends EDR suportados
Publicar dados ambientais na pygeoapi
Vamos publicar alguns dados ICOADS através do plugin EDR xarray. Os dados ICOADS do exemplo podem ser encontrados em workshop/exercises/data/coads_sst.nc
:
Atualizar a configuração da pygeoapi
Abra o ficheiro de configuração da pygeoapi num editor de texto. Adicione uma nova secção de conjunto de dados da seguinte forma:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
|
Guarde a configuração e reinicie o Docker Compose. Navegue para http://localhost:5000/collections para avaliar se o novo conjunto de dados foi publicado.
À primeira vista, a coleção icoads-sst
aparece como uma coleção normal OGC API - Coverages. Olhe um pouco mais de perto para a descrição da coleção, e note
que há uma chave 'parameter_names' que descreve os nomes dos parâmetros EDR para as consultas da coleção.
OWSLib - Avançado
OWSLib é uma biblioteca Python para interagir com Serviços Web OGC e suporta várias OGC APIs incluindo OGC API - Environmental Data Retrieval.
Interagir com OGC API - Environmental Data Retrieval via OWSLib
Se não tem Python instalado, considere executar este exercício num contentor Docker. Consulte o Capítulo de Configuração.
pip3 install owslib
pip3 install owslib
Depois, inicie uma sessão de consola Python com python3
(pare a sessão escrevendo exit()
).
>>> from owslib.ogcapi.edr import EnvironmentalDataRetrieval
>>> w = EnvironmentalDataRetrieval('https://demo.pygeoapi.io/master')
>>> w.url
'https://demo.pygeoapi.io/master'
>>> api = w.api() # documento OpenAPI
>>> collections = w.collections()
>>> len(collections['collections'])
13
>>> icoads_sst = w.collection('icoads-sst')
>>> icoads_sst['parameter-names'].keys()
dict_keys(['SST', 'AIRT', 'UWND', 'VWND'])
>>> data = w.query_data('icoads_sst', 'position', coords='POINT(-75 45)', parameter_names=['SST', 'AIRT'])
>>> data # dados CoverageJSON
>>> from owslib.ogcapi.edr import EnvironmentalDataRetrieval
>>> w = EnvironmentalDataRetrieval('https://demo.pygeoapi.io/master')
>>> w.url
'https://demo.pygeoapi.io/master'
>>> api = w.api() # documento OpenAPI
>>> collections = w.collections()
>>> len(collections['collections'])
13
>>> icoads_sst = w.collection('icoads-sst')
>>> icoads_sst['parameter-names'].keys()
dict_keys(['SST', 'AIRT', 'UWND', 'VWND'])
>>> data = w.query_data('icoads_sst', 'position', coords='POINT(-75 45)', parameter_names=['SST', 'AIRT'])
>>> data # dados CoverageJSON
Note
Consulte a documentação oficial da OWSLib para mais exemplos.
Resumo
Parabéns! Agora é capaz de publicar dados ambientais na pygeoapi.