Demystifing OGC APIs with GeoServer: introduction and status of implementation
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Title of Series | ||
Number of Parts | 156 | |
Author | ||
License | CC Attribution 3.0 Unported: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor. | |
Identifiers | 10.5446/68452 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
| |
Keywords |
00:00
Source codeOffice suiteOpen sourceNumberSoftware developerProjective planeStandard deviationOpen setLecture/ConferenceComputer animation
00:32
SoftwareSource codeCore dumpGamma functionRepresentation (politics)Extension (kinesiology)Social classTelecommunicationKnowledge representation and reasoningQuery languageFile formatAxiom of choiceParameter (computer programming)Link (knot theory)Point (geometry)Conformal mapExtension (kinesiology)Service (economics)Maxima and minimaMultiplication signView (database)Modul <Datentyp>Inheritance (object-oriented programming)Slide ruleServer (computing)Presentation of a groupElement (mathematics)MultilaterationDemo (music)Representation (politics)Exterior algebraLatent heatQR codeWeb pageTesselationLanding pageHome pageCore dumpGeometryDescriptive statisticsOpen setBitTerm (mathematics)Declarative programmingMappingSocial classImplementationVirtual machineValidity (statistics)Computer animation
04:34
Point cloudWeb serviceRepresentation (politics)Source codeAuthorizationFunction (mathematics)AuthenticationKnowledge representation and reasoningService (economics)Control flowClassical physicsFunctional (mathematics)Representation (politics)Extension (kinesiology)Link (knot theory)1 (number)ImplementationCorrespondence (mathematics)OSI modelFile formatServer (computing)Template (C++)Computer animation
06:39
Computer-generated imagerySource codeSoftwareFormal languageAttribute grammarQuery languageType theoryDatabase transactionComplex (psychology)Computer reservations systemAxonometric projectionMereologySingle-precision floating-point formatSpacetimeNormed vector spaceCone penetration testTime domainSynchronization9K33 OsaPhysical systemAxiom of choiceGeometrySequelMereologyLengthLatent heatParameter (computer programming)Term (mathematics)Multiplication signGoodness of fitMathematicsVirtual machineComputer reservations systemRevision controlTelecommunicationAttribute grammarFormal languageOpen setString (computer science)Functional (mathematics)ImplementationPairwise comparisonServer (computing)Equaliser (mathematics)Point (geometry)View (database)SpacetimeCoordinate systemSequenceCuboidNumberOrder (biology)SubsetCartesian coordinate systemQuery languageStandard deviationVariable (mathematics)Core dumpCategory of beingRepresentation (politics)Row (database)Database transactionLink (knot theory)WebsiteMechanism designSlide ruleDefault (computer science)Classical physicsHeegaard splittingRaster graphicsSoftware testingEquivalence relationCASE <Informatik>Expected valueHome pageLanding pageExtension (kinesiology)Data structureSearch engine (computing)SatelliteQuicksortStack (abstract data type)Temporal logicWeb pageComputer fileConformal mapSet (mathematics)Text editorMassOnline helpProduct (business)Library catalogLimit (category theory)Human migrationEnumerated typeComputer animation
13:55
BuildingInformationImplementationMappingBuildingBlock (periodic table)Equivalence relationLatent heatCuboidCodeComputer animation
14:19
Maxima and minimaSource codeGroup actionState of matterServer (computing)Moment (mathematics)InformationFigurate numberReflection (mathematics)Parameter (computer programming)MappingFile formatComputer reservations systemMereologyLevel (video gaming)Classical physicsCuboidClique-widthBitCASE <Informatik>TesselationExtension (kinesiology)Core dumpBlock (periodic table)Source codeLimit (category theory)Computer animation
15:55
BuildingBlock (periodic table)ArmGroup actionSource codeSoftwareGame theoryState of matterEquals signBlock (periodic table)MappingTessellationTesselationImplementationMetadataBuildingService (economics)Link (knot theory)Uniform resource locatorMatrix (mathematics)Data structureLibrary catalogWordFunction (mathematics)Web 2.0Level (video gaming)CuboidPhysical systemClosed setVector spaceData managementSet (mathematics)ResultantProcess (computing)MereologyFood energyServer (computing)GeometryComputer animation
18:26
Classical physicsSpacetimeModule (mathematics)Client (computing)Multiplication signLatent heatRow (database)Software developerServer (computing)Category of beingMappingSelectivity (electronic)Extension (kinesiology)Database transactionWordService (economics)Process (computing)Tesselation1 (number)Hybrid computerImplementationSequelInternet service providerMaxima and minimaPartial derivative
20:04
Computer-assisted translationComputer animation
Transcript: English(auto-generated)
00:00
Thank you everyone for joining So first of all, thanks to my company just solutions. We are based in Italy with offices in the US and soon in Dubai we provide support development and Solutions around a number of open source projects and we are core developers of most of them
00:21
we believe in open source in open standards and We are ready to support you in any endeavor that involves this kind of topic Okay, so a brief introduction about OGC APIs if you have been here for the last two or three presentations you probably already know this but I
00:41
Saw some people joining in later. So quick introduction Common elements of OGC APIs. Well, first of all, if you want to just play with them just follow that QR code it's gonna link you to a demo server That we have with the bleeding edge of a geo server providing OGC services
01:01
but also OGC APIs and I highlighted in a home page the links that you can follow to go to each and every OGC API that we deploy there like features tiles maps and coverages That server is a bleeding edge server. It's occasionally broken. It redeploys like three times a day
01:20
So don't rely on it But if you just you know want to explore and play that's good starting point If you didn't manage to follow the the QR code, I replicated it also in this slide So what is the APIs fresh take on spatial data interoperability based on restful? principles HTTP verbs The the specification are not a massive 200 300 pages long
01:45
Documents that you have to read the end-to-end to make sense of it They are split into a small core that can be implemented literally in a couple of days plus a bunch of extra Compatible conformance classes that can be implemented if you want or not
02:03
So what you see API common is the base you can find it at that URL it basically defines two resources The landing page which is your entry point. It's kind of the equivalent to a capabilities document to some extent In that well, that's where you start exploring your your API
02:21
There is the conformance declaration that contains all the conformance classes that you might have implemented in your server If your service is exposing data Not all services do you have collections and a way to enter into a particular collection? And an OPI an open API definition of the service
02:42
Describing how to interact with it from a machine-to-machine communication point of view is provided in a link with the relationship service desk Everything is linked, you know just API's so We have parent child links. We have alternative representation links. We got
03:02
description links providing schemas metadata, whatever you can link to whatever you like and so You can follow links and that's very nice in terms of providing at the same time an HTML representation for your resources because people can just point and click and go around the API and
03:22
Without even realizing it learning about how it works and how it's built So resources representations or GC API Commons recommends HTML for humans Which as I say before is very good for a didactical purposes and just learning your way around it And you can actually use an OGC API just that way or JSON for machine-to-machine communication
03:45
Choosing a format can be done in many many ways the accept header an extension at the end of a your path a custom query Parameter there are multiple choices. The thing is you are not forced into Using one of them because there are links that you can just follow
04:02
Extension and conformance as I said the tiny core bare minimum for a working service like Show you with OGC API features how tiny you can get and Modular extensions for everything else and you go to the conformance declaration to find out what else has been Implemented to give you an idea. Even the JSON representation is as far as I remember
04:23
Optional you could make an OGC API that just returns XML and it's still valid Okay, just server implementations. What are the common bits of all the OGC API implementations? One service per API In just over we already have the engine to do
04:41
Anything that OGC API's do or at least the ones that we implemented? And it's the engine that's sitting below the corresponding OGC service So for OGC API features, we have the engine of OGC of WFS that does Well, whatever we needed fetching data
05:01
filtering it Reprojecting and so on and so the thing is we have one common engine in the in in the middle and a protocol layer that does features or WFS which is different, but the bottom end is shared. It's the same
05:21
It also means that basically all capabilities provided by the OGC Sorry by the classic WFS engine is also available through OGC API's So for example, we have the same output formats We have the same vendor extensions and we integrated the same basic functionality
05:40
So the same authorization and authentication the same ability to perform flow of control monitoring and so on The HTML resource representations are available in every service. We don't have services that only do JSON we took The path of having always an HTML representation that you can
06:04
use interactively and The HTML representation is driven by templates So you can go and customize it changing logo styles and even the functionality to some extent if you want All the links or not all the links but a bunch of links in the resources are customizable so you can add your own
06:23
So for example for inspired compliance, you need an extra link you can add it if you have any Country mandatory extension you can just go and configure it Okay, so let's have a look at the OGC API features specifically OGC API features part one and part two. They are complete standard. So they reached one zero. They have been voted that they are
06:49
Reliable in terms of specification What does it do in in terms of adding on top of the OGC API common It has items items are the way to access the single features of a collection
07:03
core Supports only CRS 84 and CRS 84 H. So only one coordinate reference system Other coordinate reference systems are supported through part two of the specification Schemas are not required unlike the in WFS in WFS everything was schema driven in OGC API features
07:23
Features can be schema less. Although well our underlying engine is still schema oriented We have the open API definition which is well what you would expect landing page conformance collections and items In terms of items you can do basic filtering by
07:43
Space and time and it would be possible to also add an extra parameter in the query string that the server has to advertise for Comparison by equality that's kind of a weak filtering in our point of view We decided to just skip it and wait for sequel to to be available since we always add sequel to start with in
08:05
in the blue face paging paging is available Out of the box in OGC API features you have to follow links the implementation of geo server uses the classic Offset and limit, but that's just an implementation detail any OGC API features can perform these links back and forth
08:26
With whatever mechanism they like token based or whatever it is site compliance just over 224 plus builds are passing the OGC API features compliance test for both core and I'm gonna end for CRS by reference
08:43
We got to this point to thanks to the funding by genome So what is CRS by reference? It's the ability to support a multiple coordinate reference systems. So advertising what coordinate reference system your data is actually stored in and Request it in that coordinate reference system or have it reprojected into other coordinate reference system
09:05
So basically matching what we had since WFS 1-1 the ability to reproject and to filter by other By bounding boxes in order coordinate reference systems Part three is filtering draft at 2020 40 704 the date is important because they are about to go out of the raft and become finalized
09:28
Filtering introduces the notion of variables which are the properties you can use to to filter Normally, they are just the attributes of your data, but I can make up a query ball, which is not part of my data Let's call it any text and I could do full search full text search for example
09:44
And then it has a few query parameters like filter filter language filter CRS To express the filter to indicate in which language I'm writing the filter and to indicate in which coordinate reference system The geometries are expressed Common choices are sequel to text and sequel to JSON
10:03
So I can write the filter like this and filter length sequel to text and say oh my cloud cover should be between this And that and and a few other Parameters or I can write it as sequel to JSON expressing the same thing for machine to machine communication
10:21
I don't know if that the JSON version is Current regarding to the specification, but it shouldn't be that far away if it isn't Sorting sorting isn't part of WFS, but it's not part of OGC API features I linked to the ticket that is discussing it in geo server. It is implemented
10:41
Borrowing the syntax from OGC API records. It has been contributed by an external contributor And well, it's useful and it provides the same functionality as WFS Transaction simple transactions are covered by part for create replace update and delete These are very chatty API because you would add and remove one feature at a time
11:04
So it's good for a point-and-click editors, but it's not good for anything that requires must changes to to your data This is not yet implemented by geoserver functional comparison with WFS comparing WFS 2.0 with OGC API features
11:22
OGC API features basically adds schema less on top of what the WFS 2 could do and It's missing a few things like a buck changes sort by and so on So Yeah, the functionality is more or less the same once you put together all the optional extensions that OGC API features has to offer
11:47
Accepted that some are still in draft and some are definitely missing transactions Stack API stack API is implemented in geo server has a stack API 1.0 stack API is the spatial temporal asset
12:01
catalog, which in its API version is compatible with OGC API features a Search engine that allows to search for assets in space and time typical asset is your satellite imagery, but it could be anything else The structure is more or less the same We have the collection the collection contains an item an item points to a set of assets
12:22
Which are basically the files making up your product? We have here some slides showing the HTML representation of the stack API customized by the German space agency So this representation with all the little tags for keywords and the the preview and so on
12:44
It's not the default representation by geo server. They did it by themselves. We didn't help any OGC API coverages OGC API coverages is the equivalent of WCS. We can think of it as the simplest the WCS ever to be fair in this case WCS 2.0 was very very close to the principles and
13:05
implementation of an OGC API to start with WCS 2.0 was already splitting to a small core and a lot of extensions and So it was relatively easy to migrate But yeah, OGC API coverages allows me to enumerate raster data describe it download it and so on
13:28
We can perform a coverage destruction by by bounding box or by subset being clear about the axis order, which is one nice thing about WCS 2.0 one thing that I really like about to WCS 2.0 is that
13:42
You don't have a bounding box and you're left wondering what's latitude and what's longitude in that sequence of numbers You can say a latitude between this and that longitude between between those two and then it's clear We have an implementation of OGC API maps OGC API maps is the equivalent of WMS, of course
14:04
We have a partial implementation out of a code sprint OGC API maps is one of those specification that has been designed out of the box to be a building block What's the idea of a building block? Let me see if I have no I don't sorry
14:20
I'm making that I'm making a mess Coming back I'll show you with tiles. I have a good example of building block with tiles in any case The idea is that I can take any resource in my API and make maps out of it If I attach the map resources at the end of the path
14:41
In the Maps API we have a notion of style just like we had it in WMS and We have a map source that we can use to fetch a map The nice thing about the map resource is that everything is optional So I not forced to specify the CRS and the bounding box and the width and the height and so on and so on
15:01
I just Limit myself to specify the bit that I am interested in too so I can say the format I can say The CRS and left the server figure out to the rest Little Known information geoserver has added this behavior since 2006
15:21
As part of the WMS reflector, which was exactly this Give me only part a part of the parameters that are needed for WMS and I'll figure out to the rest Geoserver implements an info resource, which is not part of the Maps API So get feature info classic is not part of the the core Maps API. I
15:45
Don't see it either in In any extension for the moment, but regardless in geoserver We have a an info resource that can act as a get feature info OGC API tiles Tiles building block anything can can be tiled in general. So the tiles tiles building block allows me to attach
16:07
Tiling resources at the end of the path so I can Tyler a set of data I can tile a set of maps I can tile the result of a process and so on and so on So anything that can be split into parts can be given to an OGC API tiles energy
16:23
API tiles is literally defined as a building block not as a Standalone service even if in geoserver it is implemented as a standalone service One nice thing about OGC API tiles, I told you that everything is linked, you know, you see API's Well, you cannot link to all the tiles. They are millions or billions
16:44
So what do you do? You have a URL template that allows you to have a method to specify a single method to build the URLs That you will need based on your tile matrix structure We have a metadata resource that describes the the tile set and in particular in the geoserver implementation
17:03
This resource has a tile JSON output so you can go to it Take the tile JSON give it to any tool that is native to the map box ecosystem and it would work out of the box with the OGC API tiles from geoserver if you are using Webmercator, of course, or if your tool is smart enough to realize that there is more than web webmercator to cartography
17:25
Or the API's we have OGC API styles, which is one that I personally like a lot Because it feels a gap that wasn't Something that wasn't available with OGC services. It describes
17:40
Styles as their own catalog you can enumerate them Fetch them and so think I think about a word when where we have vector tiles I fetch the vector tiles and then I I still have to write a style or I have to Fetch it somewhere else, but there is nothing linking to it, you know, just API styles I have my catalog of styles ready to use
18:02
eventually linked to layers so that the collection can link to the style and the style can link to the Example the collection you can you can use with so pretty nice in my opinion We have DGGS support. I'm not gonna bore you with all the details news new way of
18:20
managing coordinate reference systems and Closing words So Next steps what we still need to do. Well a bunch of stuff We would like to have OGC API's move out of community modules community modules are available only in nightly builds and
18:42
Have the ones that have been finalized specification wise to move to extension For OGC API features, for example We are waiting for sequel to to be finalized because we want at the very least to be able to fear the filter data Not just by space and time We would like to complete the outdated or partial implementations such as tiles coverages and maps
19:06
Add more extensions for example property selection and bulk transactions to features and to implement also OGC API processes and records since we already have a WPS and CSW
19:21
Hopefully the OGC API modules and the OGC API in general will get more uptake right now We have a few deployments. They are mostly Research institutions or institutions which are public and related to research. I hope to see more and more hybrid developments Deployments, sorry providing both classical GC services and OGC API's at the same time to provide
19:45
maximum coverage of clients and more front-end support and Hopefully overall more business around it since well the G server development is literally very much business driven We we get customers. They tell us what they want to have implemented and we do it and that's it