Difference between revisions of "New rules for the Topology Framework in gvSIG Desktop"

From OSGeo
Jump to navigation Jump to search
 
(105 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
== Project ==
 
== Project ==
 +
'''Project carried out within the program Google Summer of Code 2019.'''
 +
 
Title: ''New rules for the Topology Framework in gvSIG Desktop''.
 
Title: ''New rules for the Topology Framework in gvSIG Desktop''.
  
Line 7: Line 9:
  
 
Repository: [https://github.com/Maureque/gvsig-gsoc2019-topology Link to GitHub repository].
 
Repository: [https://github.com/Maureque/gvsig-gsoc2019-topology Link to GitHub repository].
 +
 +
[https://github.com/Maureque/2019GSoC_versionHablaHispana/wiki Página Wiki habla Hispana].
 +
 +
[https://github.com/Maureque/GSoC_2019-Italiano/wiki Pagina Wiki in Italiano].
 +
 +
[https://github.com/Maureque/gvsig-gsoc2019-topology/wiki Wiki page in English].
  
 
== Brief Description ==
 
== Brief Description ==
A new topology toolbox. This tool will provide a group of integrity rules that will check the validation of the geometries relationship in the data. A new topology data model can be created for each project. This toolbox provide a new set of tools to navigate, find and fix validation errors different from each topology rule. Right now, there are just a few topology rules implemented with a limited actions. This project will analize, implement and optimize a new set of rules that will be incorporated to this framework. This tools can be created in Java or in Jython through the Scripting composer tool.
+
'''Automate tasks and Ensure Information Quality instead of spending our time doing what a machine.'''
 +
 
 +
The Project was carried out within the Google Summer of Code 2019 program with OSGeo (Open Source Geospatial Foundation) and the gvSIG Association, this is an example of how scripting can help to automate tasks and save time, allowing the user to focus on the logic to solve.
 +
 
 +
A new topology toolbox. This tool will provide a group of integrity rules that will check the validation of the geometries relationship in the data. A new topology data model can be created for each project. This toolbox provides a new set of tools to navigate, find and fix validation errors different from each topology rule. Right now, there are just a few topology rules implemented with limited actions. This project will analyze, implement and optimize a new set of rules that will be incorporated into this framework. This tools can be created in Java or in Jython through the Scripting composer tool.
  
 
== State of the Project Before GSoC.==
 
== State of the Project Before GSoC.==
Only a few topology rules have been implemented until now, the most of them are still pending to be developed.
+
Only a few topology rules have been implemented until now, most of them are still pending to be developed.
 +
 
 +
== The addition that the project brings to the software.==
 +
A new set of topology rules for vector datasets validation and fixing is implemented, which improve and expand the existing before. '''''This development automating the tasks allowing the user''''' to focus on the business logic, '''''leaving aside the repetitive tasks and optimizing the use of time'''''.
 +
 
 +
== How the topology framework works.==
 +
The following video shows the interface and how the topology framework works: [https://www.youtube.com/watch?v=wO9Y0xxdFiA VIDEO]
 +
 
 +
Video published in blog gvSIG, link: https://blog.gvsig.org/2019/02/12/towards-gvsig-2-5-topology/
 +
 
 +
== Deploy Manual and Getting Started.==
 +
The steps of how to perform the installation process are detailed in the document: [https://docs.google.com/document/d/1th0CVKOr918ltBI9czTJsRKAYSGnY6xpiY1R2415QMU Topology Rules for gvSIG Desktop: Development guide]
  
== The addition that the project bring to the software.==
+
There is also useful information on how to start, pre requisites, installation and tutorials in [https://github.com/Maureque/gvsig-gsoc2019-topology/#getting-started New rules for the Topology Framework in gvSIG Desktop]
A new set of topology rules for vector datasets validation and fixing is implemented, which improve and expand the existing before.
 
  
 
== Deliverables==
 
== Deliverables==
 
A new set of topology rules for vector datasets validation/fixing, that will improve and expand the existing one:
 
A new set of topology rules for vector datasets validation/fixing, that will improve and expand the existing one:
* [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/Must-be-coincident-with Must be coincident with.].
+
* [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/3.-Must-be-coincident-with Must be coincident with.]
* Must be disjoint.
+
* [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/4.-Must-be-covered-by-endpoint-of Must be covered by endpoint of.]
* Must be covered by endpoint of.
+
* [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/5.-Points-must-be-covered-by-line Points must be covered by line.]
* Points must be covered by line.
+
* [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/6.-Must-be-properly-inside-polygons Must be properly inside polygons.]
* Must be properly inside polygons (PointMustBeProperlyInsidePolygonRule)
+
* [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/7.-Contains-point. Contains point.]
* Must be covered by boundary of.
 
* Must not overlap (Must not overlap polygon).
 
* Must not have gaps.
 
* Contains point.
 
* Contains one point.
 
* Must not overlap with.
 
* Must be covered by.
 
  
 
== Timeline==
 
== Timeline==
Line 55: Line 70:
 
   √ Define all the required, all the corresponding Classes and Objects.
 
   √ Define all the required, all the corresponding Classes and Objects.
 
   √ Define the interactions.
 
   √ Define the interactions.
   √ Topological rule: Must be coincident with. Link: https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/Must-be-coincident-with.
+
   √ Topological rule: [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/3.-Must-be-coincident-with Must be coincident with.]
   √ Weekly report. Link: https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/Report-Week-1-(May-27th-to-June-2nd).
+
   √ [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/3a.-Report-Week-1-(May-27th-to-June-2nd) Weekly report.]
  
 
* Week 2 (June 3rd - June 9th)
 
* Week 2 (June 3rd - June 9th)
   - Topological rule: Must be coincident with. Integrate topological rule with the topology framework.
+
   Topological rule: [https://github.com/Maureque/TopologyRuleMustBeCoincidentWithPoint Must be coincident with. Topological rule integration with the topology framework.]   
   - Test and debug the developed code.  
+
   Test and debug the developed code.  
   - Weekly report.
+
   √ [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/3b.-Report-Week-2-(June-3rd-to-June-9th) Weekly report.]
 +
 
 
* Week 3 (June 10th - June 16th)
 
* Week 3 (June 10th - June 16th)
   - Topological rule: Must be disjoint.
+
   √ Study of the rule. Complete analysis of names, descriptions, solution to be performed, actions, solution per action
  - Test and debug the developed code.  
+
and all the requeriments following the steps established in the document: [https://docs.google.com/document/d/1th0CVKOr918ltBI9czTJsRKAYSGnY6xpiY1R2415QMU Topology Rules for gvSIG Desktop: Development guide.]
   - Test and document existing code more thoroughly.
+
  √ Topological rule: [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/4.-Must-be-covered-by-endpoint-of Must be covered by endpoint of.] [https://github.com/Maureque/TopologyRuleMustBeCoveredByEndpointOfPoint File structure to perform the integration with the topology framework.]
   - Weekly report.
+
   Test and document more thoroughly.
 +
   √ [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/4a.-Report-Week-3-(June-10th-to-June-16th) Weekly report.]
 +
 
* Week 4 (June 17th - June 23rd)
 
* Week 4 (June 17th - June 23rd)
   - Topological rule: Must be covered by endpoint of.
+
   Topological rule: [https://github.com/Maureque/TopologyRuleMustBeCoveredByEndpointOfPoint Must be covered by endpoint of. Code developed.]
  - Topological rule: Points must be covered by line.
+
   Test and debug the developed code.
   - Test and document existing code more thoroughly.
+
   √ Document the entire process.
   - Weekly report.
+
  √ [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/4b.-Report-Week-4-%28June-17th-to-June-23rd%29 Weekly report.]
  
 
=== June 24th (beginning)- June 28th (deadline).===
 
=== June 24th (beginning)- June 28th (deadline).===
* Submit Evaluations.
+
* Submit Evaluations.
  
 
=== Second Evaluation Period (June 24th - July 21st)===
 
=== Second Evaluation Period (June 24th - July 21st)===
 
* Week 5 (June 24th - June 30th)
 
* Week 5 (June 24th - June 30th)
   - Topological rule: Must be properly inside polygons (PointMustBeProperlyInsidePolygonRule).
+
   √ Study of the rule. Complete analysis of names, descriptions, solution to be performed, actions, solution per action
   - Weekly report.
+
and all the requirements following the steps established in the document: [https://docs.google.com/document/d/1th0CVKOr918ltBI9czTJsRKAYSGnY6xpiY1R2415QMU Topology Rules for gvSIG Desktop: Development guide.]
 +
  √ Topological rule: [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/5.-Points-must-be-covered-by-line Points must be covered by line.]
 +
  √ Add in the rule of week 1: [https://github.com/Maureque/TopologyRuleMustBeCoincidentWithPoint/blob/master/mustBeCoincidentWithPointRule.py Must be coincident with, the corresponding study to work with multipoint layers.]
 +
  √ Test and debug the [https://github.com/Maureque/TopologyRulePointsMustBeCoveredByLinePoint developed code.]
 +
  √ Document the entire process.
 +
   √ [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/5a.-Report-Week-5-(June-24th-to-June-30th) Weekly report.]
 +
 
 
* Week 6 (July 1st - July 7th)
 
* Week 6 (July 1st - July 7th)
   - Topological rule: Must be covered by boundary of.
+
   Topological rule: [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/5.-Points-must-be-covered-by-line Points must be covered by line.]
   - Optimize algorithms.
+
   Optimize algorithms.
   - Weekly report.
+
   √ Test and debug the [https://github.com/Maureque/TopologyRulePointsMustBeCoveredByLinePoint developed code.]
 +
  √ Improve documentation explaining how the rules work when the layers are multipart.
 +
  √ In-depth study of the code, and implementation with multipart geometries.
 +
  √ Implementation study with 2D, 2DM and 3D geometries.
 +
  √ Document the entire process.
 +
  √ [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/5b.-Report-Week-6-(July-1st-to-July-7th) Weekly report.]
 +
 
 
* Week 7 (July 8th - July 14th)
 
* Week 7 (July 8th - July 14th)
   - Topological rule: - Must not overlap (Must not overlap polygon).
+
   √ Study of the rule. Complete analysis of names, descriptions, solution to be performed, actions, solution per action
   - Optimize algorithms.
+
and all the requirements following the steps established in the document: [https://docs.google.com/document/d/1th0CVKOr918ltBI9czTJsRKAYSGnY6xpiY1R2415QMU Topology Rules for gvSIG Desktop: Development guide.]
   - Test and debug the developed code.
+
  √ Topological rule: [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/6.-Must-be-properly-inside-polygons Must be properly inside polygons.]
   - Test and document existing code more thoroughly.
+
   Optimize algorithms.
   - Weekly report.
+
   √ Improve documentation explaining how the rules work when the layers are multipart.
 +
  √ In-depth study of the code, and implementation with multipart geometries.
 +
  √ Implementation study with 2D and 2DM geometries.
 +
  √ Test and debug the [https://github.com/Maureque/TopologyRuleMustBeProperlyInsidePolygonsPoint developed code.]
 +
   √ Document the entire process.
 +
   √ [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/6a.-Report-Week-7-(July-8th-to-July-14th) Weekly report.]
 +
 
 
* Week 8 (July 15th - July 21st)
 
* Week 8 (July 15th - July 21st)
   - Topological rule: - Must not have gaps.
+
   Topological rule: [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/6.-Must-be-properly-inside-polygons Must be properly inside polygons.]
   - Test and debug the developed code.
+
   Test and debug the [https://github.com/Maureque/TopologyRuleMustBeProperlyInsidePolygonsPoint developed code.]
   - Test and document existing code more thoroughly.
+
  √ Document the entire process.
   - Weekly report.
+
   √ Optimize algorithms.
 +
   √ [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/6b.-Report-Week-8-(July-15th-to-July-21st) Weekly report.]
  
 
=== July 22nd (beginning)- July 26th (deadline).===
 
=== July 22nd (beginning)- July 26th (deadline).===
* Submit Evaluations.
+
* Submit Evaluations.
  
 
=== Third Evaluation Period (July 22nd - August 18th)===
 
=== Third Evaluation Period (July 22nd - August 18th)===
 
* Week 9 (July 22nd - July 28th)
 
* Week 9 (July 22nd - July 28th)
   - Topological rule: Contains point.
+
   √ Study of the rule. Complete analysis of names, descriptions, solution to be performed, actions, solution per action
   - Topological rule: Contains one point.
+
and all the requirements following the steps established in the document: [https://docs.google.com/document/d/1th0CVKOr918ltBI9czTJsRKAYSGnY6xpiY1R2415QMU Topology Rules for gvSIG Desktop: Development guide.]
   - Test, debug and improve the developed code.
+
  √ Code optimizations and optimize algorithms.
   - Weekly reports.
+
   Topological rule: [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/7.-Contains-point. Contains point.]
 +
   √ Adaptation of the previous rules to the changes implemented in the framework.
 +
  √ Test, debug and improve the [https://github.com/Maureque/TopologyRuleContainsPointPolygon developed code.]
 +
  √ Document the entire process.
 +
   √ [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/7a.-Report-Week-9-(July-22nd-to-July-28th) Weekly report.]
 +
 
 
* Week 10 (July 29th - August 4th)
 
* Week 10 (July 29th - August 4th)
   - Topological rule: Must not overlap with.
+
   √ Adaptation of the rules to the changes implemented in the framework.
   - Test, debug and improve the developed code.
+
  √ Rule optimization: [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/3.-Must-be-coincident-with Must be coincident with] and [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/5.-Points-must-be-covered-by-line Points must be covered by line].
   - Generate documentation specially oriented to users without any programming knowledge.  
+
  √ Topological rule: [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/7.-Contains-point. Contains point.]
   - Weekly reports.
+
   Test, debug and improve the [https://github.com/Maureque/TopologyRuleContainsPointPolygon developed code.]
 +
   √ Document the entire process.
 +
   √ [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/7b.-Report-Week-10-(July-29th-to-August-4th) Weekly report.]
 +
 
 
* Week 11 (August 5th - August 11th)
 
* Week 11 (August 5th - August 11th)
   - Topological rule: Must be covered by.
+
   √ Adaptation of the rules to the changes implemented in the framework.
   - Make further changes in the code to improve the functionality.
+
  √ Rule optimization: [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/4.-Must-be-covered-by-endpoint-of Must be covered by endpoint of] and [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/6.-Must-be-properly-inside-polygons Must be properly inside polygons.]
   - Improve existing documentation.
+
   Make further changes in the code to improve the functionalities.
   - Weekly reports.
+
   Improve existing documentation.
 +
   √ Test, debug and improve the developed code.
 +
  √ [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/8a.-Report-Week-11-(August-5th-to-August-11th) Weekly report.]
 +
 
 
* Week 12 (August 12th - August 18th)   
 
* Week 12 (August 12th - August 18th)   
   - Make further changes in the code to improve the functionality.
+
   Make further changes in the code to improve the functionalities, code optimizations and optimize algorithms.
   - Improve existing documentation.
+
   Improve existing documentation.
   - Weekly reports.
+
   √ [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/8b.-Report-Week-12-(August-12th-to-August-18th) Weekly report.]
* August 19th (beginning)- August 26th (deadline).
+
 
   - Submit Final work product and evaluations.
+
* Week 13 final project week - August 19th (beginning)- August 26th (deadline).
 +
   √ [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/8.-Final-Report Final Report.]
 +
  √ [https://github.com/Maureque/GSoC_2019-versionHablaHispana/wiki Spanish wiki page.]
 +
  √ [https://github.com/Maureque/GSoC_2019-Italiano/wiki Italian wiki page.]
 +
  √ [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki English wiki page.]
 +
  √ Creation of installation packages.
 +
  √ Final optimizations and improves in documentation and code.
 +
  √ Pull request of the rules to the [https://github.com/gvsig-sandbox gvSIG repository.]
 +
  √ Submit Final work product and evaluations.
  
 
== Weekly Reports==
 
== Weekly Reports==
Line 126: Line 182:
 
Section for listing the links to the weekly reports.
 
Section for listing the links to the weekly reports.
 
* [https://github.com/Maureque/gvsig-gsoc2019-topology/blob/master/reports/Bonding%20Period%20report.pdf COMMUNITY BONDING PERIOD (May 6th – May 27th).]
 
* [https://github.com/Maureque/gvsig-gsoc2019-topology/blob/master/reports/Bonding%20Period%20report.pdf COMMUNITY BONDING PERIOD (May 6th – May 27th).]
 +
* [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/3a.-Report-Week-1-(May-27th-to-June-2nd) Report Week 1 (May 27th to June 2nd).]
 +
* [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/3b.-Report-Week-2-(June-3rd-to-June-9th) Report Week 2 (June 3rd to June 9th).]
 +
* [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/4a.-Report-Week-3-(June-10th-to-June-16th) Report Week 3 (June 10th to June 16th).]
 +
* [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/4b.-Report-Week-4-(June-17th-to-June-23rd) Report Week 4 (June 17th to June 23rd).]
 +
* [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/5a.-Report-Week-5-(June-24th-to-June-30th) Report Week 5 (June 24th to June 30th).]
 +
* [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/5b.-Report-Week-6-(July-1st-to-July-7th) Report Week 6 (July 1st to July 7th).]
 +
* [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/6a.-Report-Week-7-(July-8th-to-July-14th) Report Week 7 (July 8th to July 14th).]
 +
* [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/6b.-Report-Week-8-(July-15th-to-July-21st) Report Week 8 (July 15th to July 21st).]
 +
* [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/7a.-Report-Week-9-(July-22nd-to-July-28th) Report Week 9 (July 22nd to July 28th).]
 +
* [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/7b.-Report-Week-10-(July-29th-to-August-4th) Report Week 10 (July 29th to August 4th).]
 +
* [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/8a.-Report-Week-11-(August-5th-to-August-11th) Report Week 11 (August 5th to August 11th).]
 +
* [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/8b.-Report-Week-12-(August-12th-to-August-18th) Report Week 12 (August 12th to August 18th).]
 +
* [https://github.com/Maureque/gvsig-gsoc2019-topology/wiki/8.-Final-Report Final report (August 19th to August 26th).]
 +
 +
== Releases ==
 +
* [https://github.com/Maureque/TopologyRuleMustBeCoincidentWithPoint/releases Must be coincident with.]
 +
* [https://github.com/Maureque/TopologyRuleMustBeCoveredByEndpointOfPoint/releases Must be covered by endpoint of.]
 +
* [https://github.com/Maureque/TopologyRulePointsMustBeCoveredByLinePoint/releases Points must be covered by line.]
 +
* [https://github.com/Maureque/TopologyRuleMustBeProperlyInsidePolygonsPoint/releases Must be properly inside polygons.]
 +
* [https://github.com/Maureque/TopologyRuleContainsPointPolygon/releases Contains point.]
 +
 +
== Testing Plan==
 +
The objective of the Testing Plan is to find errors from early stages of development. To achieve this, the development is tested in each sprint, therefore, it will be carried out throughout the development of the project. At the end of each sprint a test version of the project is available.
 +
 +
Tests will be carried out with different types of amounts, features and entities in the layers.
 +
{|style="color: green"
 +
| White box and black box testing were carried out.
 +
|}
 +
Black box. The study is carried out from the point of view of the inputs and outputs. The internal structure, design and implementation of the item being tested are not known to the tester.
 +
 +
White box. The purpose is to check the execution flows in each unit. The tester chooses different input values to examine the possible execution flows and make sure that the correct output values are returned. It is a method of software testing that tests internal structures.
 +
 +
The tests provide valuable information to define the quality of the product in each sprint and check which ones must be fixed.
  
 
== References==
 
== References==
 +
* Colombana, Carlos. ''5th gvSIG Uruguay Conference. Material of the lecture and workshop - Scripting: Exprimiendo / Extendiendo gvSIG'', 2018. [online]. Available: [http://www.gvsig.com/es/eventos/jornadas-uruguay/2018/comunicaciones/-/asset_publisher/zAf8UO2Aurwr/content/taller-2-scripting-exprimiendo-extendiendo-gvsig? Scripting: Exprimiendo / Extendiendo gvSIG.]
 +
* Google Summer of Code. ''Resources''. [online]. Available: https://developers.google.com/open-source/gsoc/videos#ive_been_accepted_what_now
 +
* gvSIG Association. ''Documentación de Scripting en gvSIG 2.4''. [online]. Available: [http://downloads.gvsig.org/download/web/es/build/html/scripting_devel_guide/2.4/index.html Documentación de Scripting en gvSIG 2.4.]
 +
* gvSIG Association. Carrera, Mario. ''gvsig desktop scripting GeometriesTo2D''. [online]. Available: [https://github.com/gvSIGAssociation/gvsig-desktop-scripting-GeometriesTo2D/blob/1a72ccb9ac00fb749217608bf29fdc26503cdc0c/geometriesTo2D.py Geometries to 2D]
 +
* gvSIG Association. Martínez, Oscar. ''gvsig desktop scripting SetZFromRaster''. [online]. Available: [https://github.com/gvSIGAssociation/gvsig-desktop-scripting-SetZFromRaster/blob/f7f4af4803e4c8cf0ded65f771f97a759314e12f/setZFromRaster.py Set Z from raster.]
 +
* gvSIG Association. Martínez, Oscar. ''Introducción al Módulo de Scripting en gvSIG 2.1.'' [online]. Available: [http://www.gvsig.com/es/divulgacion/ponencias/-/asset_publisher/1TjDtHDHksUT/content/introduction-to-the-scripting-module-in-gvsig-2-1?_101_INSTANCE_1TjDtHDHksUT_redirect=http%3A%2F%2Fwww.gvsig.com%2Fes%2Fdivulgacion%2Fponencias%3Fp_p_id%3D101_INSTANCE_1TjDtHDHksUT%26p_p_lifecycle%3D0%26p_p_state%3Dnormal%26p_p_mode%3Dview%26p_p_col_id%3Dcolumn-1%26p_p_col_count%3D1%26p_r_p_564233524_categoryId%3D25969%26p_r_p_564233524_resetCur%3Dtrue&redirect=http%3A%2F%2Fwww.gvsig.com%2Fes%2Fdivulgacion%2Fponencias%3Fp_p_id%3D101_INSTANCE_1TjDtHDHksUT%26p_p_lifecycle%3D0%26p_p_state%3Dnormal%26p_p_mode%3Dview%26p_p_col_id%3Dcolumn-1%26p_p_col_count%3D1%26p_r_p_564233524_categoryId%3D25969%26p_r_p_564233524_resetCur%3Dtrue Introducción al Módulo de Scripting en gvSIG 2.1]
 +
* gvSIG Association. Martínez, Oscar. ''Topology Rules for gvSIG Desktop: Development guide.'' [online]. Available: [https://docs.google.com/document/d/1th0CVKOr918ltBI9czTJsRKAYSGnY6xpiY1R2415QMU Development Guide]
 +
 +
* gvSIG blog. ''Camino a gvSIG 2.5: Topología'', 2019. [online]. Available: [https://blog.gvsig.org/2019/02/12/camino-a-gvsig-2-5-topologia/ Camino a gvSIG 2.5: Topología.]
 +
 +
* gvsig projects. [online]. Available: [http://devel.gvsig.org/svn/gvsig-projects-pool/org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/ gvsig Projects - Topological rules.]
  
* Google Summer of Code. ''Resources''. [online]. Available: https://developers.google.com/open-source/gsoc/videos#ive_been_accepted_what_now
 
* gvSIG Association. ''Documentación de Scripting en gvSIG 2.4''. [online]. Available: http://downloads.gvsig.org/download/web/es/build/html/scripting_devel_guide/2.4/index.html
 
* gvSIG Association. Carrera, Mario. ''gvsig desktop scripting GeometriesTo2D''. [online]. Available: https://github.com/gvSIGAssociation/gvsig-desktop-scripting-GeometriesTo2D/blob/1a72ccb9ac00fb749217608bf29fdc26503cdc0c/geometriesTo2D.py
 
* gvSIG Association. Martínez, Oscar. ''gvsig desktop scripting SetZFromRaster''. [online]. Available: https://github.com/gvSIGAssociation/gvsig-desktop-scripting-SetZFromRaster/blob/f7f4af4803e4c8cf0ded65f771f97a759314e12f/setZFromRaster.py
 
* gvSIG Association. Martínez, Oscar. [online]. Available: [http://www.gvsig.com/es/divulgacion/ponencias/-/asset_publisher/1TjDtHDHksUT/content/introduction-to-the-scripting-module-in-gvsig-2-1?_101_INSTANCE_1TjDtHDHksUT_redirect=http%3A%2F%2Fwww.gvsig.com%2Fes%2Fdivulgacion%2Fponencias%3Fp_p_id%3D101_INSTANCE_1TjDtHDHksUT%26p_p_lifecycle%3D0%26p_p_state%3Dnormal%26p_p_mode%3Dview%26p_p_col_id%3Dcolumn-1%26p_p_col_count%3D1%26p_r_p_564233524_categoryId%3D25969%26p_r_p_564233524_resetCur%3Dtrue&redirect=http%3A%2F%2Fwww.gvsig.com%2Fes%2Fdivulgacion%2Fponencias%3Fp_p_id%3D101_INSTANCE_1TjDtHDHksUT%26p_p_lifecycle%3D0%26p_p_state%3Dnormal%26p_p_mode%3Dview%26p_p_col_id%3Dcolumn-1%26p_p_col_count%3D1%26p_r_p_564233524_categoryId%3D25969%26p_r_p_564233524_resetCur%3Dtrue Link to Introducción al Módulo de Scripting en gvSIG 2.1]
 
* gvSIG blog. ''Camino a gvSIG 2.5: Topología'', 2019. [online]. Available: https://blog.gvsig.org/2019/02/12/camino-a-gvsig-2-5-topologia/
 
* gvSIG blog. ''Towards gvSIG 2.5: Topology'', 2019. [online]. Available: https://blog.gvsig.org/2019/02/12/towards-gvsig-2-5-topology/
 
* gvsig projects. [online]. Available: http://devel.gvsig.org/svn/gvsig-projects-pool/org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/
 
 
* Jambrina Gabriel, Solla Viviana. Estudio de algoritmos de localización de Reflectores de Rutas en un Sistema Autónomo de Internet. Facultad de Ingeniería, Universidad de la República, 2016. [online]. Available: https://www.colibri.udelar.edu.uy/jspui/bitstream/20.500.12008/19029/1/2524.pdf
 
* Jambrina Gabriel, Solla Viviana. Estudio de algoritmos de localización de Reflectores de Rutas en un Sistema Autónomo de Internet. Facultad de Ingeniería, Universidad de la República, 2016. [online]. Available: https://www.colibri.udelar.edu.uy/jspui/bitstream/20.500.12008/19029/1/2524.pdf
 
* Kovalevsky, Vladimir. Algorithms and Data Structures for Computer Topology. Institute of Computer Graphics, University of Rostock. [online]. Available: http://www.kovalevsky.de/TopAlgShort3.pdf
 
* Kovalevsky, Vladimir. Algorithms and Data Structures for Computer Topology. Institute of Computer Graphics, University of Rostock. [online]. Available: http://www.kovalevsky.de/TopAlgShort3.pdf
Line 142: Line 234:
 
== Student Information==
 
== Student Information==
  
''Country:'' Uruguay
+
I am interested in automating procedures and business intelligence so that people can handle tasks that add value to them, instead of doing repetitive tasks, I think that this help to improving the quality of life.
 +
I believe that to achieve the best results it is essential to integrate work teams with people of great human value, for me it is important to always continue learning, be happy working and contribute so that others are too.
 +
I am passionate about traveling and knowing different cultures.
  
 
''School and Degree:''  
 
''School and Degree:''  

Latest revision as of 14:49, 14 May 2020

Project

Project carried out within the program Google Summer of Code 2019.

Title: New rules for the Topology Framework in gvSIG Desktop.

Student: Mauro Carlevaro.

Mentors: Óscar Martínez, Mario Carrera Rodriguez, Alfred de Jager and Francisco Peñarrubia.

Repository: Link to GitHub repository.

Página Wiki habla Hispana.

Pagina Wiki in Italiano.

Wiki page in English.

Brief Description

Automate tasks and Ensure Information Quality instead of spending our time doing what a machine.

The Project was carried out within the Google Summer of Code 2019 program with OSGeo (Open Source Geospatial Foundation) and the gvSIG Association, this is an example of how scripting can help to automate tasks and save time, allowing the user to focus on the logic to solve.

A new topology toolbox. This tool will provide a group of integrity rules that will check the validation of the geometries relationship in the data. A new topology data model can be created for each project. This toolbox provides a new set of tools to navigate, find and fix validation errors different from each topology rule. Right now, there are just a few topology rules implemented with limited actions. This project will analyze, implement and optimize a new set of rules that will be incorporated into this framework. This tools can be created in Java or in Jython through the Scripting composer tool.

State of the Project Before GSoC.

Only a few topology rules have been implemented until now, most of them are still pending to be developed.

The addition that the project brings to the software.

A new set of topology rules for vector datasets validation and fixing is implemented, which improve and expand the existing before. This development automating the tasks allowing the user to focus on the business logic, leaving aside the repetitive tasks and optimizing the use of time.

How the topology framework works.

The following video shows the interface and how the topology framework works: VIDEO

Video published in blog gvSIG, link: https://blog.gvsig.org/2019/02/12/towards-gvsig-2-5-topology/

Deploy Manual and Getting Started.

The steps of how to perform the installation process are detailed in the document: Topology Rules for gvSIG Desktop: Development guide

There is also useful information on how to start, pre requisites, installation and tutorials in New rules for the Topology Framework in gvSIG Desktop

Deliverables

A new set of topology rules for vector datasets validation/fixing, that will improve and expand the existing one:

Timeline

Pre Coding Period

Pre-Bonding Period (March 25th - April 9th)

  • Set up working environment, choose tools to be used in the project and set up repository.
  • Familiarize more deeply with the community.
  • Review and learn as much as possible about Python, Jython and Java.
  • Test the topology plugin and study the code of some rules that are already made.

Community Bonding Period (May 6th - May 27th)

  • Familiarize more deeply with the code, with the mentors of the project and with the documentation.
  • Study the Topology Framework API.
  • Study the algorithm for a correct implementation according to the established rules.
  • Set up the development environment.
  • Interact with mentors, introduce myself to the community and actively get involved in the discussion.
  • Set up the wiki page to keep track of weekly progress.
  • Introduce myself and the project on OSGeo's SOC mailing list.
  • Improve in the creation of scripts

Coding Period

First Evaluation Period (May 27th - June 23rd)

  • Week 1 (May 27th - June 2nd)
 √ Define all the required, all the corresponding Classes and Objects.
 √ Define the interactions.
 √ Topological rule: Must be coincident with.Weekly report.
  • Week 2 (June 3rd - June 9th)
 √ Topological rule: Must be coincident with. Topological rule integration with the topology framework.    
 √ Test and debug the developed code. 
 √ Weekly report.
  • Week 3 (June 10th - June 16th)
 √ Study of the rule. Complete analysis of names, descriptions, solution to be performed, actions, solution per action
and all the requeriments following the steps established in the document: Topology Rules for gvSIG Desktop: Development guide.
 √ Topological rule: Must be covered by endpoint of. File structure to perform the integration with the topology framework.
 √ Test and document more thoroughly.
 √ Weekly report.

  • Week 4 (June 17th - June 23rd)
 √ Topological rule: Must be covered by endpoint of. Code developed.
 √ Test and debug the developed code.
 √ Document the entire process.
 √ Weekly report.

June 24th (beginning)- June 28th (deadline).

  • √ Submit Evaluations.

Second Evaluation Period (June 24th - July 21st)

  • Week 5 (June 24th - June 30th)
 √ Study of the rule. Complete analysis of names, descriptions, solution to be performed, actions, solution per action
and all the requirements following the steps established in the document: Topology Rules for gvSIG Desktop: Development guide.
 √ Topological rule: Points must be covered by line.
 √ Add in the rule of week 1: Must be coincident with, the corresponding study to work with multipoint layers.
 √ Test and debug the developed code.
 √ Document the entire process.
 √ Weekly report.
  • Week 6 (July 1st - July 7th)
 √ Topological rule: Points must be covered by line.
 √ Optimize algorithms.
 √ Test and debug the developed code.
 √ Improve documentation explaining how the rules work when the layers are multipart.
 √ In-depth study of the code, and implementation with multipart geometries.
 √ Implementation study with 2D, 2DM and 3D geometries.
 √ Document the entire process.
 √ Weekly report.
  • Week 7 (July 8th - July 14th)
 √ Study of the rule. Complete analysis of names, descriptions, solution to be performed, actions, solution per action
and all the requirements following the steps established in the document: Topology Rules for gvSIG Desktop: Development guide.
 √ Topological rule: Must be properly inside polygons.
 √ Optimize algorithms.
 √ Improve documentation explaining how the rules work when the layers are multipart.
 √ In-depth study of the code, and implementation with multipart geometries.
 √ Implementation study with 2D and 2DM geometries.
 √ Test and debug the developed code.
 √ Document the entire process.
 √ Weekly report.
  • Week 8 (July 15th - July 21st)
 √ Topological rule: Must be properly inside polygons.
 √ Test and debug the developed code.
 √ Document the entire process.
 √ Optimize algorithms.
 √ Weekly report.

July 22nd (beginning)- July 26th (deadline).

  • √ Submit Evaluations.

Third Evaluation Period (July 22nd - August 18th)

  • Week 9 (July 22nd - July 28th)
 √ Study of the rule. Complete analysis of names, descriptions, solution to be performed, actions, solution per action
and all the requirements following the steps established in the document: Topology Rules for gvSIG Desktop: Development guide.
 √ Code optimizations and optimize algorithms.
 √ Topological rule: Contains point.
 √ Adaptation of the previous rules to the changes implemented in the framework.
 √ Test, debug and improve the developed code.
 √ Document the entire process.
 √ Weekly report.
  • Week 10 (July 29th - August 4th)
 √ Adaptation of the rules to the changes implemented in the framework. 
 √ Rule optimization: Must be coincident with and Points must be covered by line.
 √ Topological rule: Contains point.
 √ Test, debug and improve the developed code.
 √ Document the entire process.  
 √ Weekly report.
  • Week 11 (August 5th - August 11th)
 √ Adaptation of the rules to the changes implemented in the framework. 
 √ Rule optimization: Must be covered by endpoint of and Must be properly inside polygons.
 √ Make further changes in the code to improve the functionalities.
 √ Improve existing documentation.
 √ Test, debug and improve the developed code.
 √ Weekly report.
  • Week 12 (August 12th - August 18th)
 √ Make further changes in the code to improve the functionalities, code optimizations and optimize algorithms.
 √ Improve existing documentation.
 √ Weekly report.
  • Week 13 final project week - August 19th (beginning)- August 26th (deadline).
Final Report.Spanish wiki page.Italian wiki page.English wiki page.
 √ Creation of installation packages.
 √ Final optimizations and improves in documentation and code.
 √ Pull request of the rules to the gvSIG repository.
 √ Submit Final work product and evaluations.

Weekly Reports

Section for listing the links to the weekly reports.

Releases

Testing Plan

The objective of the Testing Plan is to find errors from early stages of development. To achieve this, the development is tested in each sprint, therefore, it will be carried out throughout the development of the project. At the end of each sprint a test version of the project is available.

Tests will be carried out with different types of amounts, features and entities in the layers.

White box and black box testing were carried out.

Black box. The study is carried out from the point of view of the inputs and outputs. The internal structure, design and implementation of the item being tested are not known to the tester.

White box. The purpose is to check the execution flows in each unit. The tester chooses different input values to examine the possible execution flows and make sure that the correct output values are returned. It is a method of software testing that tests internal structures.

The tests provide valuable information to define the quality of the product in each sprint and check which ones must be fixed.

References

Student Information

I am interested in automating procedures and business intelligence so that people can handle tasks that add value to them, instead of doing repetitive tasks, I think that this help to improving the quality of life. I believe that to achieve the best results it is essential to integrate work teams with people of great human value, for me it is important to always continue learning, be happy working and contribute so that others are too. I am passionate about traveling and knowing different cultures.

School and Degree:

  • Technological University (UTEC, Fray Bentos, Uruguay), Student of Bachelor of IT (2019-2022).
  • University of Engineering (ORT, Montevideo, Uruguay), Programmer Analyst (2014-2018).
  • University of Engineering (UdelaR, Montevideo, Uruguay), Cartographic Technician (2013-2016).

Computing experience

I have been working as a web developer and implementing geographic information systems. The technologies that i work with daily are: Java, Python, MySQL, PostgreSQL/PostGIS, Apache Tomcat and GeoServer.

GIS experience as a user

I have experience using gvSIG and QGIS. Thematic cartography course (Uruguay edition), dictated by The National Geographic Institute and the National Geographic Information Center of Spain. 40 hours duration. Participation in the webinar “gvSIG applied to wildlife and protected natural spaces", on October 14, 2014, made by MundoGEO and Asociación gvSIG, with 60 minutes duration.

GIS programming