<div dir="ltr"><div class="gmail_quote"><div dir="ltr"><div class="gmail_quote"><div dir="ltr">Hello everyone;<br><br>The GSoC2020 period code is finished. Now is time to present the final report of my project. The work during these three months has been an amazing experience and a huge challenge to develop my skills. But first of all I would like to say thank you to Google, OSGeo and gvSIG for this opportunity.<br><br>This report is done according to <a href="https://developers.google.com/open-source/gsoc/help/work-product" target="_blank">Google's Guidelines</a> and <a href="https://lists.osgeo.org/pipermail/soc/2020-August/004612.html" target="_blank">OSGeo GSoC Admins recommendations</a>.<br><br><font size="4">1. Basic info</font><br><b>Title:<a href="https://github.com/jolicar/GSoC2020/wiki/GSoC2020-New-rules-for-the-Topology-Framework-in-gvSIG-Desktop%C2%A0" target="_blank"> </a></b><a href="https://github.com/jolicar/GSoC2020/wiki/GSoC2020-New-rules-for-the-Topology-Framework-in-gvSIG-Desktop" target="_blank">New rules for the Topology Framework in gvSIG Desktop  </a><br><b>Organization:</b> <a href="http://www.gvsig.com/en/home" target="_blank">gvSIG</a> under <a href="https://www.osgeo.org/" target="_blank">OSGeo</a><br><br><font size="4">2. Abstract</font><br>The project improves the topology core of gvSIG Desktop. In these three months I have implemented five topology rules, three new rules and two existing rules that have some issues.<br><br>The topology rules that I want to modify are <a href="https://github.com/jolicar/TopologyRuleMustBeProperlyInsidePolygonsPoint" target="_blank">TopologyRuleMustBeProperlyInsidePolygonsPoint</a> and <a href="https://github.com/jolicar/TopologyRuleContainsPointPolygon" target="_blank">TopologyRuleContainsPointPolygon</a>.<br><ul><li><b>TopologyRuleMustBeProperlyInsidePolygonsPoint;</b> The rule evaluates the point situation in or out polygons. This point's rule returns True when the points falls within the polygon's area, not on the boundary or out of it.</li><li><b>TopologyRuleContainsPointPolygon;</b> If each polygon has at least one point inside, the rule returns True. The points have to fall within the polygon's area, not on the boundary or out of it.</li></ul>The new rules to create are <a href="https://github.com/jolicar/TopologyRuleContainsOnePointPolygon" target="_blank">TopologyRuleContainsOnePointPolygon</a>, <a href="https://github.com/jolicar/TopologyRuleMustCoverEachOtherPolygon" target="_blank">TopologyRuleMustCoverEachOtherPolygon</a> and <a href="https://github.com/jolicar/TopologyRuleUserDefinedRule" target="_blank">UDR (TopologyRuleUserDefinedRule)</a>.<br><ul><li><b>TopologyRuleContainsOnePointPolygon;</b>  If each polygon has only one point inside, the rule returns True. The point has to fall within the polygon's area, not on the boundary or out of it. </li><li><b>TopologyRuleMustCoverEachOtherPolygon;</b> All dataset 2 polygon areas must cover the dataset 1 polygon area and all dataset 1 polygon areas must cover the dataset 2 polygon area too. The rule returns False when a part of the dataset 1 polygon area or dataset 2 polygon area is not covered or not completely covered.</li><li><b>UDR (TopologyRuleUserDefinedRule);</b> This rule allows the user to define a data check expression and another expression to correct it. The dataset features are evaluated for the check expression and it gives a boolean. If the result is False,the feature dont fulfill the rule and it creates an entry in the error report. If the result is True, the feature fulfills the expression. On "Inspector de errores del Plan de topologia" window we can remove the feature or apply the corrective expression.</li></ul>I had to create or update the documentation and create a test plan too.<br><br><font size="4">3. The state of software BEFORE your GSoC</font><br>GvSIG desktop software has some topology rules but after studying these in my internship at gvSIG Association that I have already completed I detected some errors and important absence of useful topology rules for the users.</div><div dir="ltr">On development gvSIG Desktop had all GUI on his topology project. I just need to modify the create rule GUI to allow additional parameters<br><br><font size="4">4. The addition (added value)</font><br>The project is complete and the two new main additions are:<br><ul><li>Five completely functional topology rules with new documentation and operative fixes actions.</li><li>New changes on topology core of gvSIG Desktop. This allows additional parameters in some topology rules. These changes can be useful in new rules implementation. <a href="http://devel.gvsig.net/redmine/projects/gvsig-projects-pool/repository/revisions/2067" target="_blank">Revisión 2067</a> and <a href="http://devel.gvsig.net/redmine/projects/gvsig-projects-pool/repository/revisions/2174" target="_blank">Revisión 2174</a>.</li></ul><font size="4">5. Future work to this project</font><br>The project is complete but it always can be improved. A possible improvement is the creation of new fixed action for these five topology rules. For example, the Subtract fixed action to MustCoverEachOtherPolygon topology rule. This fix action deletes the no overlapping part to wrong features. <br><br><font size="4">6. Links</font></div><div dir="ltr"><font size="4"><br></font><div><b>WIKIS</b><br><ul><li>Project Wiki: <a href="https://github.com/jolicar/GSoC2020/wiki/GSoC2020-New-rules-for-the-Topology-Framework-in-gvSIG-Desktop" target="_blank">https://github.com/jolicar/GSoC2020/wiki/GSoC2020-New-rules-for-the-Topology-Framework-in-gvSIG-Desktop</a></li></ul><b>DOCUMENTATION</b><br><ul><li>TopologyRuleMustBeProperlyInsidePolygonsPoint: <a href="https://github.com/jolicar/TopologyRuleMustBeProperlyInsidePolygonsPoint/blob/master/readme.md" target="_blank">https://github.com/jolicar/TopologyRuleMustBeProperlyInsidePolygonsPoint/blob/master/readme.md</a></li><li>TopologyRuleContainsPointPolygon: <a href="https://github.com/jolicar/TopologyRuleContainsPointPolygon/blob/master/readme.md" target="_blank">https://github.com/jolicar/TopologyRuleContainsPointPolygon/blob/master/readme.md</a></li><li>TopologyRuleContainsOnePointPolygon: <a href="https://github.com/jolicar/TopologyRuleContainsOnePointPolygon/blob/master/readme.md" target="_blank">https://github.com/jolicar/TopologyRuleContainsOnePointPolygon/blob/master/readme.md</a></li><li>TopologyRuleMustCoverEachOtherPolygon: <a href="https://github.com/jolicar/TopologyRuleMustCoverEachOtherPolygon/blob/master/readme.md" target="_blank">https://github.com/jolicar/TopologyRuleMustCoverEachOtherPolygon/blob/master/readme.md</a></li><li>UDR (TopologyRuleUserDefinedRule: <a href="https://github.com/jolicar/TopologyRuleUserDefinedRule/blob/master/readme.md" target="_blank">https://github.com/jolicar/TopologyRuleUserDefinedRule/blob/master/readme.md</a></li></ul><b>CODE</b><br><ul><li>TopologyRuleMustBeProperlyInsidePolygonsPoint: <a href="https://github.com/jolicar/TopologyRuleMustBeProperlyInsidePolygonsPoint/tree/master/code" target="_blank">https://github.com/jolicar/TopologyRuleMustBeProperlyInsidePolygonsPoint/tree/master/code</a></li><li>TopologyRuleContainsPointPolygon: <a href="https://github.com/jolicar/TopologyRuleContainsPointPolygon/tree/master/code" target="_blank">https://github.com/jolicar/TopologyRuleContainsPointPolygon/tree/master/code</a></li><li>TopologyRuleContainsOnePointPolygon: <a href="https://github.com/jolicar/TopologyRuleContainsOnePointPolygon/tree/master/code" target="_blank">https://github.com/jolicar/TopologyRuleContainsOnePointPolygon/tree/master/code</a></li><li>TopologyRuleMustCoverEachOtherPolygon: <a href="https://github.com/jolicar/TopologyRuleMustCoverEachOtherPolygon/tree/master/code" target="_blank">https://github.com/jolicar/TopologyRuleMustCoverEachOtherPolygon/tree/master/code</a></li><li>UDR (TopologyRuleUserDefinedRule: <a href="https://github.com/jolicar/TopologyRuleUserDefinedRule/tree/master/code" target="_blank">https://github.com/jolicar/TopologyRuleUserDefinedRule/tree/master/code</a></li><li>Topology core 

Revisión 2067

: <a href="http://devel.gvsig.net/redmine/projects/gvsig-projects-pool/repository/revisions/2067" target="_blank">http://devel.gvsig.net/redmine/projects/gvsig-projects-pool/repository/revisions/2067</a></li><li>Topology core 

Revisión 2174

: <a href="http://devel.gvsig.net/redmine/projects/gvsig-projects-pool/repository/revisions/2174" target="_blank">http://devel.gvsig.net/redmine/projects/gvsig-projects-pool/repository/revisions/2174</a></li></ul><b>TEST PLAN</b><br><ul><li>TopologyRuleMustBeProperlyInsidePolygonsPoint: <a href="https://github.com/jolicar/TopologyRuleMustBeProperlyInsidePolygonsPoint/tree/master/testing/cases/TP00_TopologyRules/RU01_MustBeProperlyInsidePolygon" target="_blank">https://github.com/jolicar/TopologyRuleMustBeProperlyInsidePolygonsPoint/tree/master/testing/cases/TP00_TopologyRules/RU01_MustBeProperlyInsidePolygon</a></li><li>TopologyRuleContainsPointPolygon: <a href="https://github.com/jolicar/TopologyRuleContainsPointPolygon/tree/master/testing/cases/TP00_TopologyRules/RU00_ContainsPoint" target="_blank">https://github.com/jolicar/TopologyRuleContainsPointPolygon/tree/master/testing/cases/TP00_TopologyRules/RU00_ContainsPoint</a></li><li>TopologyRuleContainsOnePointPolygon: <a href="https://github.com/jolicar/TopologyRuleContainsOnePointPolygon/tree/master/testing/cases/TP00_TopologyRules/RU02_ContainsOnePoint" target="_blank">https://github.com/jolicar/TopologyRuleContainsOnePointPolygon/tree/master/testing/cases/TP00_TopologyRules/RU02_ContainsOnePoint</a></li><li>TopologyRuleMustCoverEachOtherPolygon: <a href="https://github.com/jolicar/TopologyRuleMustCoverEachOtherPolygon/tree/master/testing/cases/TP00_TopologyRules/RU04_MustCoverEachOther" target="_blank">https://github.com/jolicar/TopologyRuleMustCoverEachOtherPolygon/tree/master/testing/cases/TP00_TopologyRules/RU04_MustCoverEachOther</a></li><li>UDR (TopologyRuleUserDefinedRule: <a href="https://github.com/jolicar/TopologyRuleUserDefinedRule/tree/master/testing/cases/TP00_TopologyRules/RU03_UserDefinedRule" target="_blank">https://github.com/jolicar/TopologyRuleUserDefinedRule/tree/master/testing/cases/TP00_TopologyRules/RU03_UserDefinedRule</a></li></ul><font size="4">7. Images</font><br><ul><li>TopologyRuleMustBeProperlyInsidePolygonsPoint image: <a href="https://github.com/jolicar/TopologyRuleMustBeProperlyInsidePolygonsPoint/blob/master/img/TP00RU01_img1.png" target="_blank">https://github.com/jolicar/TopologyRuleMustBeProperlyInsidePolygonsPoint/blob/master/img/TP00RU01_img1.png</a></li><li>TopologyRuleContainsPointPolygon image: <a href="https://github.com/jolicar/TopologyRuleContainsPointPolygon/blob/master/img/TP00RU00_img1.png" target="_blank">https://github.com/jolicar/TopologyRuleContainsPointPolygon/blob/master/img/TP00RU00_img1.png</a></li><li>TopologyRuleContainsOnePointPolygon image: <a href="https://github.com/jolicar/TopologyRuleContainsOnePointPolygon/blob/master/img/TP00RU02_img1.png" target="_blank">https://github.com/jolicar/TopologyRuleContainsOnePointPolygon/blob/master/img/TP00RU02_img1.png</a></li><li>TopologyRuleMustCoverEachOtherPolygon image: <a href="https://github.com/jolicar/TopologyRuleMustCoverEachOtherPolygon/blob/master/img/TP00RU04_img1.png" target="_blank">https://github.com/jolicar/TopologyRuleMustCoverEachOtherPolygon/blob/master/img/TP00RU04_img1.png</a></li></ul><i>NOTE: All red features are incorrect and all green features are correct.</i><br><div><i><br></i></div><div>So it's all.</div></div><div><br></div><div>I would like to express again my gratitude to Google, OSGeo, gvSIG and all the free software community.<br></div><div><br></div><div>Thanks.</div><div><br></div><div>José Olivas Carriquí.</div><div><br></div><div><br></div></div>
</div></div>
</div></div>