<div dir="ltr"><div><b><span style="font-size:12.8px;font-weight:400;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">Hello everyone,</span><br style="font-size:12.8px;font-weight:400;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><span style="font-size:12.8px;font-weight:400;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">my final report is listed bellow.</span><br></b></div><div><b><br></b></div><div><b>Abstract</b></div><div>The main goal of this project is extend a basic filtering tool that was developed as a part of my final thesis. Originaly it is focused on spatio-temporal vector data filtering only with simple animation that was implemented as a proof of concept. This project focuses on support for general spatio-temporal both vector and raster data and adds more functionality into Gisquick web client that makes map features selection more powerful with various of options.</div><div><br></div><div>Another important part of this project was focused on Gisquick plugin for QGIS. Before any QGIS project may be used in Gisquick map platform, it has to be published using Gisquick plugin for QGIS. This project add more options for publishing raster and vector layers. Publication with new functionality in Gisquick plugin gives user real time data validation with various option and in the same time keeps process simple and easy to handle.</div><div><br></div><div><b>State of Gisquick spatio-temporal support before GSoC 2018</b></div><div>There was already simple tool implemented in Gisquick before the work on GSoC 2018 begun. It was made during my final thesis mostly as a proof of concept focused only on vector filtration without many functions or design that corresponded to other platform components. Web client offered double range slider and time pickers with animation button. It allowed used to filter data using slider or exact range and make simple animation without any advanced settings.</div><div><br></div><div>In Gisquick plugin for QGIS, setting of time layers had just two basic functions. There were two como-boxes for each vector layer. First one defined layer attribute that contained time values. Second was used for setting of time format that displayed date and time in web client. Once time layers were set, other needed parameters were computed but in case of error user would not notice that any error occurred and what was a reason.</div><div><br></div><div><b>What this project brought to the Gisquick</b></div><div>As mentioned before all the work done within this project might be split into two independent parts. Gisquick web client and Gisquick plugin for QGIS.</div><div><br></div><div><b>Web client:</b></div><div>- general settings was made. It allows user to edit animation speed, animation time step and  activate cumulative mode. This may be used to handle different kinds of data in different way. Other settings change behavior of double range slider and whole time tool. For example filtered results might be kept in the map even when another tool is used.</div><div>- option of filtering all layers consists different attributes. This may be activated only if option 'select all visible vector layers' is selected.</div><div>- previous double range slider was replaced by double range slider used in Vuetify material components framework. There was not double range slider available in Vuetify components at the time of creating proof of concept during my final thesis.</div><div>- whole new component that contains interface for raster data filtering was made. It has same design as vector one but functionality is different. There is not double range slider and settings provides different options.</div><div>- all the code that was related to time tool was refactored in separate branch. Solutions implemented before refactoring did not have any common data structure or concept. The main reason was that no-one know how should final time tool looks and what exact functionality it should has. That is why my development was always consulted with my mentor and main developer in the same person. Code refactoring also removed many duplicity and split one giant component into various of small one that will make future development easier and code more readable.</div><div>- deployment into docker image was made in the beginning of GSoC 2018. This images were kept updated and running instance of docker container in server provided by my university was done. This allowes everyone to see the actual state of web client without need of any extra effort. Current demo application contains two sample projects with raster and vector layers.</div><div><b>QGIS plugin:</b></div><div>- validation of selected time attribute for vector layers. This was long and complicated process that involved many discussions with my mentors before the optimal solution was found. It required many changes that were not used in the final solution. Time validation is optional. When it is activated, it check selected attribute for each vector layer right after it is selected. In case that it does not contain valid date the error message is displayed and user can not continue into another page of publication wizard.</div><div>- process of variables computation needed for time tool in web client was simplified. Solution made douring final thesis development was robust but too complicated. Especially in big project with lot of data, it cost a lot of time for computation of all variables.</div><div>- update from Python2 to Python3 and Qt4 to Qt5. For this purpose qgis2to3 and pyrcc5 were used. There were also big manual changes in the code that had to be done.</div><div>- plugin was extended by options that allows user easily define all the variables needed for raster filtration on web client. Raster layers does not contain time stamp by default, that is why it has to be set during publication process. Gisquick plugin offers three possibilities. Manual and interval time definition for each raster layer or time recognition from layer name.</div><div><br></div><div>There were also many bugs fixed and small changes made. They are not included in general overview but all changes and corresponding commits may be tracked using issues or official timeline</div><div><br></div><div><b>Gisquick spatio-temporal support after GSoC 2018</b></div><div>After discussion with my mentors we agreed on future cooperation on Gisquick map platform. Development that was made during GSoC 2018 will be merged into official Gisquick repository for Gisquick client and Gisquick plugin for QGIS. After that time tool will be tested together with other tools that are being migrated from Angular into Vue framework at the time. Once both QGIS plugin and web client will be merged, the official documentation will be extended by new time tool functionality.</div><div><br></div><div>Development on the time tool on web client and plugin for QGIS will continue in the future, but there will not be new features. Development will consist mostly testing and fix of bugs.</div><div><br></div><div><b>Sample projects</b></div><div>Links mentioned in this section may not be active in the future.</div><div><br></div><div>Sample project with raster layers. Project contains raster layers containing thermal photos of Jockey's Ridge State Park in Virginia</div><div><a href="http://geo102.fsv.cvut.cz:8001/?PROJECT=demo/street">http://geo102.fsv.cvut.cz:8001/?PROJECT=demo/street</a><br></div><div><br></div><div>Sample project with vector layers. Project contains Prague districts with parcels selected by their date of change in cadastre</div><div><a href="http://geo102.fsv.cvut.cz:8001/?PROJECT=praha/praha-parcely">http://geo102.fsv.cvut.cz:8001/?PROJECT=praha/praha-parcely</a><br></div><div><br></div><div><b>Permanent links</b></div><div><b><br></b></div><div>Project timeline:</div><div><a href="https://github.com/davidtethal/gisquick-gsoc2018/wiki/GSoC-2018-Extension-of-Gisquick-platform">https://github.com/davidtethal/gisquick-gsoc2018/wiki/GSoC-2018-Extension-of-Gisquick-platform</a><br></div><div><br></div><div>Working repositories:</div><div>- Gisquick plugin for QGIS</div><div><a href="https://github.com/davidtethal/gisquick-qgis-plugin-gsoc2018">https://github.com/davidtethal/gisquick-qgis-plugin-gsoc2018</a></div><div>- Gisquick web client</div><div><a href="https://github.com/davidtethal/gisquick-gsoc2018/tree/vue-client">https://github.com/davidtethal/gisquick-gsoc2018/tree/vue-client</a><br></div><div><br></div><div>Commit history</div><div>- Gisquick plugin for QGIS</div><div><a href="https://github.com/davidtethal/gisquick-qgis-plugin-gsoc2018/commits/master">https://github.com/davidtethal/gisquick-qgis-plugin-gsoc2018/commits/master</a></div><div>- Gisquick web client</div><div><a href="https://github.com/davidtethal/gisquick-gsoc2018/commits/vue-client">https://github.com/davidtethal/gisquick-gsoc2018/commits/vue-client</a><br></div><div><br></div><div>Issues history</div><div><div style="font-size:small;text-decoration-style:initial;text-decoration-color:initial">- Gisquick plugin for QGIS</div><div style="text-decoration-style:initial;text-decoration-color:initial"><a href="https://github.com/davidtethal/gisquick-qgis-plugin-gsoc2018/issues?q=is%3Aissue+is%3Aclosed">https://github.com/davidtethal/gisquick-qgis-plugin-gsoc2018/issues?q=is%3Aissue+is%3Aclosed</a><br></div><div style="font-size:small;text-decoration-style:initial;text-decoration-color:initial">- Gisquick web client<br></div><div style="text-decoration-style:initial;text-decoration-color:initial"><a href="https://github.com/davidtethal/gisquick-gsoc2018/issues?q=is%3Aissue+is%3Aclosed">https://github.com/davidtethal/gisquick-gsoc2018/issues?q=is%3Aissue+is%3Aclosed</a><br></div><div style="text-decoration-style:initial;text-decoration-color:initial"><br></div><div style="text-decoration-style:initial;text-decoration-color:initial"><div style="font-size:12.8px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial">Regards,</div><div style="font-size:12.8px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial">David Tethal</div><br></div><br></div></div>