<div dir="ltr"><p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif">Dear community,</p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif">The GSoC 2019 end has arrived and I share you the final report
of my work during the coding period.</p><p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><br></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b>1. Title</b></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif">Creation of new topological rules in gvSIG desktop</p><p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><br></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b>2. Software community</b></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif">OSGeo, gvSIG</p><p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><br></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b>3. Abstract</b></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif">This GSoC project consisted of implementing and integrating
three new rules in the gvSIG topology framework to model spatial relationships
that verify the integrity of the spatial information, validate the
representations and correct posible errors. These three rules are Must Be
Disjoint, Must Not Have Dangles and Must Be Larger Than Cluster Tolerance. </p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif">The Must Be Disjoint rule requires that points be spatially
separated from other points in the same layer, so any point that overlaps is an
error. The action implemented to solve posible violations of this rule is
deletePointsAction, which eliminates points that are not spatially separated.</p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif">The Must Not Have Dangles rule requires that a line feature
must touch line features from the same layer at both ends. An endpoint that is
not connected to another line is an error, called dangle. One solution to this
action is extendAction that extends the dangling end if they fix to other line
features within a given distance by the user. Other solution is trimAction that
trims dangling line features if a point of intersection is found within a given
distance by the user. And another solution is snapAction that snaps dangling
line features to the nearest line feature within a given distance by the user.
Unlike the first solution, snapAction first tries to snap endpoints to the
vertices, and secondly to the edge of line features.</p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif">The Must Be Larger Than Cluster Tolerance rule requires that
the vertices of each line or polygon feature must be spaced a distance larger
than the tolerance established by the user. Vertices that fall within the tolerance
are considered errors. This rule is mandatory for all topology. The simplest solution,
called deleteFeatureAction, is to eliminate line or polygon features that
collapse during the validation process. The other solution, deletePointsAction,
modifies line or polygon features whose points collapse during the validation
process.</p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"> </p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b>4. Motivation</b></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif">My main motivation behind this project was to be able to
collaborate in the gvSIG topological framework development project to provide
this application with greater functionality at the stage of processing and
cleaning geographic data to be able to perform better and accurate data
analysis, especially in Big data environments. Other motivations were:</p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif">- Participate in an open source project.</p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif">- Improve my programming skills.</p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif">- Generate other skills around programming such as the
repository for the code.</p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif">- Way to generate open documentation of the work done.</p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif">- Know the interaction between the open source community.</p><p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><br></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b>5. State of the Project before GSoC 2019</b></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif">The gvSIG topology framework before my GSoC 2019 only
allowed to apply some topological rules regarding an entity that does not
contain a null geometry, that each polygon of a polygon layer always contains a
point in another layer and that two polygon geometries do not overlap between
them. In some of these rules it was still necessary to develop the appropiate
actions to be able to apply them. Therefore, a good topological analysis could
not be performed for the data sets to verify the integrity of the spatial
information, validate representations and correct possible errors
automatically.</p><p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><br></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b>6. Value of GSoC Project</b></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif">With the three rules that I created and with their integration
into the gvSIG topological framework, now it is posible to improve the data
sets topological analysis and apply different actions to correct the features
in an automated way.</p><p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><br></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b>7. Work to be done</b></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif">There is still a little work to be done on the project. The
tasks for the future are to finish developing the actions code so that they can
be applied in data sets that can not create spatial indexes automatically. It
would also have to adapt the Must Not Have Dangles rule code and of the
extendAction and trimAction actions for data sets with multiline geometries as well
as include the code part to be able to update two entities at the same time
when the gvSIG bug is fixed.</p><p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><br></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b>8. Future opportunities</b></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif">The gvSIG topological framework development project is still
underway and there are still many other rules to be developed.</p><p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><br></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b>9. Links</b></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b>Work Product</b></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif">Please test my code following instructions <a href="https://github.com/hecnita/gvsig-gsoc2019-topology/wiki/Work-Product">here</a><br></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b>Code Documentation</b></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif">- <a href="https://github.com/hecnita/gvsig-gsoc2019-topology/wiki/Rule-Must-be-disjoint">Must Be Disjoint Rule</a></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif">- <a href="https://github.com/hecnita/gvsig-gsoc2019-topology/wiki/Rule-Must-not-have-dangles">Must Not Have Dangles Rule</a></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif">- <a href="https://github.com/hecnita/gvsig-gsoc2019-topology/wiki/Rule-Must-be-larger-than-cluster-tolerance">Must Be Larger Than Cluster Tolerance Rule</a></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b>Pull Requests</b></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif">- <a href="https://github.com/gvsig-sandbox/TopologyRuleMustBeDisjointPoint">Must Be Disjoint Rule</a></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif">- <a href="https://github.com/gvsig-sandbox/TopologyRuleMustNotHaveDanglesLine">Must Not Have Dangles Rule</a></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif">- <a href="https://github.com/gvsig-sandbox/TopologyRuleMustBeLargerThanClusterTolerance">Must Be Larger Than Cluster Tolerance Rule</a></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b>Last GSoC 2019 commits</b></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif">- <a href="https://github.com/hecnita/TopologyRuleMustBeDisjointPoint/commit/73faef953f23d20a88fcc261b4aa51075e05306f">Must Be Disjoint Rule</a></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif">- <a href="https://github.com/hecnita/TopologyRuleMustNotHaveDanglesLine/commit/3f26bba25b3dedd697b9d91a4ee5c783f53d64bf">Must Not Have Dangles Rule</a></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif">- <a href="https://github.com/hecnita/TopologyRuleMustBeLargerThanClusterTolerance/commit/ddf7deef47c1ded432b2cd8531364fd8c6c12198">Must Be Larger Than Cluster Tolerance Rule</a></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b>Project Documentation (Wiki Page)</b></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><a href="https://github.com/hecnita/gvsig-gsoc2019-topology/wiki/Creation-of-new-topological-rules-in-gvSIG-desktop">Wiki Page</a><br></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><b>Project sample</b></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><a href="https://github.com/hecnita/gvsig-gsoc2019-topology/blob/master/images/image.png">Image</a><br></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif"><br></p><p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif">Thank you very much everyone for this opportunity and all your
support. It has been a great experience working with the gvSIG association people
and sharing the weekly work with the OSGeo community. These months have helped
me to learn a lot.</p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif">Best Regards</p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:Calibri,sans-serif">Héctor Tundidor</p></div>