goat-community / goat

This is the home of Geo Open Accessibility Tool (GOAT)
GNU General Public License v3.0
90 stars 47 forks source link

Geoapi v2 #2419

Open EPajares opened 1 year ago

EPajares commented 1 year ago

Context

There are the well-know Open-Source Geoservers such as Mapserver or Geoserver (confusing as it is same as the generic term). We are favoring at the moment a solution that can be integrated in Python (FastAPI). The main purpose of the Geoserver would be serving our geospatial data in different (OGC-compliant) formats. The following formats we would like to support at the moment:

At the moment we are not sure if the Geoprocessing should also be realized using standardized procedures like OGC API Processes. Solutions we were finding are pygeoapi and tipg.

What I understand at the moment is that pygeoapi is reading the different services from a YAML config and has adapters to different data stores. For us most important is PostgreSQL/PostGIS. It seems that they are not having an own OGC API Tile or OGC API Maps service but instead only allows you to add your own services in the YAML.

Task

Overall, we need to know if we can use pygeoapi as our Geoserver solution. Currently, it might make most sense to see this as a separate microservice which is protected by the authz layer.

### Tasks
- [ ] https://github.com/goat-community/goat/issues/2492
- [ ] https://github.com/goat-community/goat/issues/2493
- [ ] https://github.com/goat-community/goat/issues/2495
- [ ] https://github.com/goat-community/goat/issues/2496
- [ ] https://github.com/goat-community/goat/issues/2517
- [ ] https://github.com/goat-community/goat/issues/2527
- [ ] https://github.com/goat-community/goat/issues/2532
- [ ] https://github.com/goat-community/goat/issues/2771
- [ ] https://github.com/goat-community/goat/issues/2878
- [ ] https://github.com/goat-community/goat/issues/2925
- [ ] https://github.com/goat-community/goat/issues/2924
EPajares commented 1 year ago

In more recent discussion we concluded that it might be better at the moment to use tipg. One thing we would have to extend here though is Create, Update and Delete for features

EPajares commented 1 year ago

WIP

EPajares commented 1 year ago

We concluded using tipg (https://github.com/developmentseed/tipg) due to its high flexibility and smooth integration with FastAPI. We are having bit specific requirements as our geocatalog is saved in a database table and to avoid having potential several 100k of tables in our DB, we aim for a flattened DB schema in which one user will have a table per geometry type. So several layer for the user will be stored in one table.

We aim not to fork the project but instead make use of its modular nature and use the existing components wherever possible. For the following we might need custom implementations:

This is a preliminary conclusion and we need further detailing.