pycsw
2017
The OGC reference implementation for its CSW standard. I am part of the core developer team, having been most active in 2018, where I mostly helped improving pycsw's automated test suite.
https://pycsw.org/I am an experienced software engineer with a strong GIS background.
My main area of expertise is in building backend solutions for web-based systems that deal with spatial data.
This is a brief sample of past projects where I have worked.
Wherever possible I include some extra links for more information.
I love talking about this stuff, so feel free to contact me for further details on any of these entries.
Innometeo is a system for the generation and visualization of weather related data. It is targeted at meteorologists and other technical staff of the portuguese weather (IPMA) and civil protection (ANEPC) national authorities.
While working at Likeno, I was part of the team that developed Innometeo. The system gathers a set of meteorological data products from multiple sources, processes this data into a common format and makes the data products available as a set of collections.
My role on the project was the design and implementation of the backend components, which consist of:
A set of processing lines that deal with multiple input raster data and its tranformation into output multidimensional netcdf files for various collections of meteorological products. Processing lines were implemented with airflow and the system is distributed over several worker nodes by leveraging rabbitmq as a message broker
A geospatial server that is able to serve all generated products according to OGC WMS standard. This is implemented with geospaca (more on that below), which is based on MapServer and adds an API layer on top of it.
A service that provides historical information on each collection for sampled points by inspecting data on-the-fly.
While working at GeoSolutions I was part of the team that developed the Traffic Density Mapping Service (TDMS) for the European Maritime Safety Agency (EMSA). This service generated traffic density maps for the european seas in a fully automated and periodic schedule.
My role on this project was the design and implementation of the processing and visualization components, which consisted of
A set of automated processing lines implemented with apache airflow and running on a distributed cluster of worker nodes.
A set of algorithms to
Distributing of the final products via WMS using GeoServer, by using its REST API.
The SaveMyBike system constitutes a set of interacting services provided to citizens to improve the usage of bicycle transport and of the other connected sustainable transport modes.
While working at GeoSolutions I was part of the team that developed the SaveMyBike portal, REST API and the backend processing services.
The portal is a standard django project that allows both endusers and admins to act upon their respective bike-related items.
Backend services are responsible for post-processing collected waypoint data uploaded by user's mobile app. These include:
These backend services are implemented as a set of Python modules and run on the AWS platform.
In this project I was the main backend engineer, which means I implemented most of the backend code. This included:
The portal's backend logic, including business rules, data modelling and django-related stuff
REST API's endpoints
Integration with keycloak in order to leverage authentication with OpenID Connect
Orchestrating AWS services and ensuring timely feedback supplied to mobile apps
Business logic for processing uploaded waypoint data. This includes:
I worked at IPMA, the portuguese weather authority, on its remote sensing team in the Copernicus Global Land project and its percursor projects (Geoland-2, GMES).
The Copernicus Global Land Service is a component of Copernicus, the European flagship programme on Earth Observation.
IPMA's role in this project was:
To generate radiation products from geostationary satellites in order to obtain global coverage
Make these products available to end users by providing the necessary interfaces in order for them to appear at centralized product navigation portals, together with other remote sensing products
My contribution to project was:
Designed and implemented processing lines for product generation and distribution - these were implemented with Python and ECMWF's ecFlow scheduler.
The system operated continouously, in near realtime, and most products were generated with an hourly frequency.
Setup metadata catalog for generated products according to OGC CSW standard. This was implemented with pycsw and it eventually led to my involvment with the pycsw project.
The metadata schema itself was based on the ISO 19115 standard and compliant with the INSPIRE directive guidelines.
Designed and implemented a product ordering service compliant with OGC OSEO standard - This was implemented as a reusable django application and was the first (probably still the only one today) open source implementation of this (rather obscure) OGC standard
Designed and implemented a quality monitoring service that extracted multiple statistical indicators for each generated product and made them available via a REST API
The OGC reference implementation for its CSW standard. I am part of the core developer team, having been most active in 2018, where I mostly helped improving pycsw's automated test suite.
https://pycsw.org/Over the years I had the opportunity to work on several projects that used GeoNode. Whenever possible, I took the opportunity to upstream some of the improvements that were made internally. This eventually to me being given commit rights to the main GeoNode repository. My main contribution to the project has been on some overall bug fixing.
https://geonode.org/I developed and regularly teach a three-day training course on QGIS programming with Python. This training course is taught in partnership with naturalgis, a portuguese company that provides GIS services around QGIS.
It covers a range of topics, going from basic Python syntax to GUI concepts and Qt5 to QGIS API.
While most of my professional experience so far has been in the backend, I am also keen to work on the frontend's shiny things.
The website is implemented with gatsbyjs and styled with bulma. Most content pages are written in MDX, a subset of Markdown that allows using JSX components together with content. It is deployed on netlify using its continuous deployment integration with gitlab.
https://gitlab.com/ricardogsilva/ricardogsilva.gitlab.io/I participated in the 2nd Ubuntu scopes showdown competition for the previously upcoming Ubuntu Touch project. It was a fun side-project. I implemented a scope to interact with the freesound catalogue, a collaborative online database of Creative Commons licensed sounds. This made it possible to search and preview sounds straight from the scope, without neeeding a dedicated app.
I ended up winning second place in the competition!
https://github.com/ricardogsilva/unity-freesound-scopeI implemented a QGIS plugin to integrate the Conefor landscape ecology software package. The plugin features both a custom GUI dialog and also exposes all its core funcionality as QGIS Processing algorithms.
This work was done under contract for a third party, and it is, unfortunately, not compatible with the latest QGIS version anymore. Maybe I will be able to update it someday.
https://github.com/ricardogsilva/qgisconefor