47
AN OGC API TO GEOSPATIAL DATA AN OGC API TO GEOSPATIAL DATA pygeoapi.io

A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

AN OGC API TO GEOSPATIAL DATAAN OGC API TO GEOSPATIAL DATApygeoapi.io

Page 2: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

TABLE OF CONTENTSTABLE OF CONTENTSGeospatial API evolutionREST/JSON/OpenAPI/SwaggerOGC activitySay hello to pygeoapiHistoryFeaturesInstallationDeployingProduction instancesCommunitySupport

Page 3: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

GEOSPATIAL APIGEOSPATIAL APIEVOLUTIONEVOLUTION

Page 4: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

1990S1990SSpirit of XML-RPC/CORBASOAP/WSDL/UDDIService Oriented Architecture (SOA)Strong concept of RDBMS as the backendOGC WMS (1999)

Page 5: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

2000S2000SWeb 2.0JavaScript/AJAX/Google MapsSlippy maps, tilesOGC WFS (2002), WCS (2003), WPS (2005), CSW(2007)

Page 6: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

REALITIES OF OGC WEBREALITIES OF OGC WEBSERVICESSERVICES

Key Value Parameters (KVP) or XML encodingsRequests using HTTP GET, HTTP POST and SOAPResponses as XML (GML)Error handling as custom ExceptionReport within anHTTP 200 responseExhaustive specifications/requirements

Page 7: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

<wfs:FeatureCollection

xmlns:ms="http://mapserver.gis.umn.edu/mapserver"

xmlns:gml="http://www.opengis.net/gml" [..]>

<gml:boundedBy>

<gml:Envelope srsName="EPSG:32661">[..]

</gml:Envelope>

</gml:boundedBy>

<gml:featureMember>

<ms:north_poles_wfs gml:id="north_poles_wfs.0">

<gml:boundedBy>[..]</gml:boundedBy>

<ms:msGeometry>[..]</ms:msGeometry>

<ms:Id>0</ms:Id>[..]

</gml:featureMember>[..]

</wfs:FeatureCollection>

Page 8: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

MORE REALITIESMORE REALITIES

Page 9: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

Complex machinery/architectures (e.g. ldproxy) forservices to be crawlableChallenging for web developers to implementChallenging for mainstream web integration (searchindexing)

showed OGC world can easily bed l bl d � d

Geonovum testbedLDP

Page 10: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

REST/JSON/OPENAPI/REST/JSON/OPENAPI/SWAGGERSWAGGER

Page 11: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

RESTRESTREpresentational State Transfer (REST)HTTP verbs (GET/PUT/POST/DELETE)HTTP codes (200, 201, 404, etc.)Uses URI to identify resourcesContent negotiation (media types)Stateless

Page 12: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

JSONJSONJavaScript Object NotationEasy to write and understandVery popular among web developersJSON is first class in RESTful web servicesNo rigid standards (for better or worse)

Page 13: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

OPENAPIOPENAPISpecification on how to describe a REST APIDefines endpoints, request parameters, responseProgramming language agnosticFormerly Swagger

Page 14: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

"info": {

"contact": {

"email": "[email protected]",

"name": "pygeoapi Development Team",

"url": "https://pygeoapi.io"

},

"description": "pygeoapi provides an API to geospatial data",

"license": {

"name": "CC-BY 4.0 license",

"url": "https://creativecommons.org/licenses/by/4.0/"

},

"termsOfService": "None",

"title": "pygeoapi Demo instance - running latest GitHub version",

"version": "3.0.2",

"x-keywords": [

"geospatial",

"data",

"api"

]

},

"openapi": "3.0.2",

Page 15: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

SWAGGERSWAGGEROpenAPI client toolingRobust, web developer focusedAutomated documentation, testing, codegeneration

Page 16: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

OGC ACTIVITYOGC ACTIVITY

Page 17: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

W3C SPATIAL DATA ONW3C SPATIAL DATA ONTHE WEB BESTTHE WEB BEST

PRACTICES (2017)PRACTICES (2017)Recommendations on formats, identifiers, access,licensing, provenanceBeing webbyhttps://www.w3.org/TR/sdw-bp/

Page 18: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

DESIGN PATTERNSDESIGN PATTERNSBeing webby (humans, search engines)Developer friendlyLightweight specification developmentRemoving HTTP use as a tunnel

/ows?request=GetFeature&typename=roads&featureid=5/api/collections/roads/items/5

Modular specification developmentCore and extensions

Page 19: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

TIMELINETIMELINE2017: W3C Spatial Data on the Web Best Practices2017: OGC API Whitepaper2018: WFS3 Hackathon, Weather on the Web APIHackathon2019: OGC API Hackathon

Page 20: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

FUTURE OGCFUTURE OGCSTANDARDSSTANDARDS

OGC API - Common (OWS Common)OGC API - Features (WFS)OGC API - Coverages (WCS)OGC API - Maps (WMS)OGC API - Tiles (WMTS)OGC API - Processing (WPS)OGC API - Records (CSW)

Page 21: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

OGC ACTIVITY ONOGC ACTIVITY ONGITHUBGITHUB

Page 22: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

SAY HELLO TO PYGEOAPISAY HELLO TO PYGEOAPI

A projectCreated by in 2018 on Valentine's Daywith ❤

GeopythonTom Kralidis

Page 23: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

PROJECT OVERVIEWPROJECT OVERVIEWGeospatial data API frameworkOGC Compliant (already!)OSGeo Community ProjectInternational team (Canada, Netherlands, Greece,New Zealand)

13 core 21000 upstream contributors (dependencies)

contributors

Page 24: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

TECHNICAL OVERVIEWTECHNICAL OVERVIEWPublishing (leaves data pristine/alone)

Fits to the data (not the inverse)Leverages powerful ecosystem of Python packages

Page 25: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

TECHNICAL OVERVIEWTECHNICAL OVERVIEWCore abstract API; web framework agnostic (defaultFlask)YAML configuration (metadata, dataset connectionsAutomated OpenAPI document generation (databinding)Robust plugin framework (data connections,formats, processing)Easy deployment (pip install, Docker)Minimal dependencies

Page 26: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI
Page 27: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

DATA PROVIDERSDATA PROVIDERS

Elasticsearch CSV Spatialite* GeoJSON*

* also via GDAL-OGR Provider

Page 28: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

DATA PROVIDERS - GDAL/OGRDATA PROVIDERS - GDAL/OGR

Via OGR-Python bindingsUnleashes (WFS 1/2,GeoPackage, Shapefile, GeoJSON, PostGIS, ...)Paging, reprojection, spatial/attribute queryUnlock existing WFS 1/2s!

~100 Vector Formats!

Page 29: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

SCHEMA.ORGSCHEMA.ORG

Lower the barrier to data searchHTML encoding is annotated as schema.org/Datasetto facilitate search engines

locates pygeoapi datasetsGoogle dataset search

Page 30: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

LINKED DATA - JSON-LDLINKED DATA - JSON-LDJSON-LD provided as additional representationDefault out of the box functionality for mostpygeoapi resources / endpointsAdditional configuration

Page 31: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

DEPLOYINGDEPLOYING

Page 32: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

PACKAGINGPACKAGINGNumerous deployment options

Coming to OSGeoLiveDocker

UbuntuGIS

Page 33: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

OVERVIEWOVERVIEW

pygeoapi on DockerHubImages create Linux containers running contentUse Docker Images to test locally or deploy in server

Docker Images

Page 34: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

# Painless deployment

# pull from DockerHub

docker pull geopython/pygeoapi:latest

# run (default config)

docker run -p 5000:80 -it geopython/pygeoapi:latest

# test

curl http://localhost:5000

curl http://localhost:5000/collections

curl http://localhost:5000/collections/lakes/items?limit=2

curl http://localhost:5000/collections/lakes/items?f=html

Page 35: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

DOCKERDOCKERCustom config via Docker Volume MappingRun with Docker ComposeSubpath running via Flask SCRIPT_NAME environmentvariableExamples

Page 36: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

SCALING PYGEOAPISCALING PYGEOAPI

Cloud clustering with high availability

Page 37: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

PRODUCTIONPRODUCTIONINSTANCESINSTANCES

Page 38: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

CANADACANADAMETEOROLOGICAL SERVICE OFMETEOROLOGICAL SERVICE OF

CANADA CANADA PLATFORM PLATFORMOGC web services platform of Canadian weather,climate and water dataRealtime weatherNumerical weather predictionHydrometric and Climate archives

GEOMETGEOMET

Page 39: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

MSC PYGEOAPIMSC PYGEOAPIIMPLEMENTATIONIMPLEMENTATION

Climate services data portalclimatedata.cahttps://geo.weather.gc.ca/geomet/features

Page 40: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

GLOSIS - GLOBAL SOILGLOSIS - GLOBAL SOILINFORMATIONINFORMATION

under developmentby FAO and ISRICUsing pygeoapi as an external API providing OGC API- FeaturesTestbed for JSON-LD for soil data distribution

Global soil information system

https://glosis.isric.org/ogc

Page 41: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

ROADMAPROADMAPMore data providersContent negotiation (e.g. Response as GeoPackage,GML,...)Advanced filters (CQL)TransactionsMore OGC APIs: Maps, Tiles, Coverages, Processes

Page 42: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

SUPPORTSUPPORT

Page 43: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

Need support for WFS3.0???

can help youGeoCat

Page 46: A N O GC A P I TO G E O S PAT I A L DATA · OGC API - Maps (WMS) OGC API - Tiles (WMTS) OGC API - Processing (WPS) OGC API - Records (CSW) OGC ACTIVIT Y ON GITHUB. SAY HELLO TO PYGEOAPI

LINKSLINKSHome: Docs: Demo: GitHub: Docker:

Chat: Mail:

https://pygeoapi.iohttps://docs.pygeoapi.io

https://demo.pygeoapi.iohttps://github.com/geopython/pygeoapi

https://hub.docker.com/r/geopython/pygeoapihttps://gitter.im/geopython/pygeoapi

https://lists.osgeo.org/mailman/listinfo/pygeoapi