Difference between revisions of "New Virtual Raster Data Provider for Raster Calculator in QGIS"

From OSGeo
Jump to navigation Jump to search
Line 59: Line 59:
  
 
'''Taks'''
 
'''Taks'''
* Update with mentors: I received advices and some help;
+
* Update with mentors;
 +
* Add a method to the test class in order to call the virtualrasterprovider class I created;
 +
* Develop the raster calculator functionalities in my provider in the block() method, using some hardcoded data;
 +
* Debug my code to check where it fails in returning the raster block with the hardcoded data;
  
 
'''Plans for next week:'''
 
'''Plans for next week:'''
* Add some methods to the test class;
+
* Adjust the code to return the correct computed data from the block method;
 +
* Start to look at and design the methods for taking the uri with all the parameters;
  
 
== GSoC 2021 Final Report ==
 
== GSoC 2021 Final Report ==

Revision as of 04:08, 19 June 2021

Introduction

QGIS and Tasks

QGIS is a powerful Free and Open Source GIS software, you can work with everything that has some spatial characteristics. The aim of this project is to add some tool to the existing raster calculator to facilitate some workflows.

Project proposal

The proposal for GSoC 2021 that I submitted can be found here.

Abstract

QGIS already has an integrated raster calculator, where user can enter an expression that will apply raster algebra functions to one or more input rasters and produce a new raster file. This project aim is to develop a new virtual raster data provider that can help to use the raster calculator without creating a lot of files on a disk. It will be possible to perform the computation on the fly when map gets rendered. It will be therefore possible for the users to see the results of raster algebra expression that has been typed without the creation of derived raster files. For example, it should be possible to compute the NDVI index on-the-fly.

Link to Github repository: Repository

Timeline

17th May - 6th June

Community bonding period:

Taks

17th May - 30th May

  • Get in contact with mentors, try to code something and look for some small bugfix I can work on;
  • Join Slack channel created by mentors and plan the weekly meeting as they suggested;
  • Set up of the development environment for QGIS (build the code from source, fork the official Repository and create a new branch, set Qt creator environment as it's described in the documentation for the developers );
  • Start to dive into the code base by studying the existing QgsRasterDataProvider;
  • Introduce myself over the channel and shared my proposal on the mailing list for suggestions and feedbacks;
  • Create a wiki page for the project and my User page;

1st June - 6th June

  • Sumbit a PR for simple bugfix to the official repository;
  • Update of the proposal and share the updates with the community;
  • Study the codebase, start to study and implement some simple unit test;
  • Prototype the new virtual raster data provider with some basic methods, add the new provider to the provider registry class, start to write some unit test in c++, study the raster calculator class: I've done several commit on the forked repository so everyone can see what I am doing: it's possible to find the new provider and the test I added.

Plans for next week:

  • Have a meeting and confront with mentors;
  • Work and add methods to the prototyped class I've created;
  • Add some methods to the unit test I wrote accordingly to the new provider class;
  • Study the raster calculator classes.

7th June - 13th June

Coding Period:

Taks

  • Update with mentors: I received advices and some help;
  • Move the provider I created from QGIS/src/core/providers/ to QGIS/src/providers/;
  • I write a CMakeLists.txt to include the class I created and to target the libraries I will use in my class;
  • Add, under mentors advice, a function to add the provider to the provider registry dynamically;
  • Study the raster calculator and add some functionalities of the raster calculator to the new provider;
  • Work on the test part, study the other existing tests and adding minor changes to the my test class;
  • create a PR to my personal main repo from the branch in which I'm committing the changes, in this way it will be easier to check the changes and add comments or advices [1];

[1] https://github.com/Franc-Brs/QGIS/pull/3

Plans for next week:

  • Add some methods to the test class;
  • Refining the prototyped class and add some checks in the methods I added;
  • Have the meetings with mentors.

14th June - 20th June

Coding Period:

Taks

  • Update with mentors;
  • Add a method to the test class in order to call the virtualrasterprovider class I created;
  • Develop the raster calculator functionalities in my provider in the block() method, using some hardcoded data;
  • Debug my code to check where it fails in returning the raster block with the hardcoded data;

Plans for next week:

  • Adjust the code to return the correct computed data from the block method;
  • Start to look at and design the methods for taking the uri with all the parameters;

GSoC 2021 Final Report

Student's Biography

I am Francesco Bursi and I’m currently enrolled at Advanced Master on "GIScience and Unmanned System for the integrated management of the territory and the natural resources - with majors" with specialization in GISCIENCE and GEOINFORMATICS (Level 8 EQF) at the University of Padua, in Italy. I took my master’s degree in civil engineering attending the Polytechnic of Turin in 2017. I'm passionate about informatics and GIS, and I really love OS environment. Some more information about me can be found on Linkedln and on Github

Mentors

Martin Dobias

Peter Petrik