In this chapter, we discussed important concepts related to code organization and data manipulation. This was accomplished by writing code with an increasing level of abstraction until we had a class with high-level functionality.
First, we wrote utility functions in order to automate tasks and prepare the data to be processed. Some of these functions were simple abstractions over the OGR library, which were made to avoid unnecessary code repetition.
Then, we wrote methods in a class representing the application. These methods take care of performing sequences of operations to make an application work.
Finally, we presented the foundation of how to perform mathematical operations over the elements of data. We wrote a very efficient method that calculates the distance for a list of elements.
In the next chapter, we will improve our data abstraction and make it possible for the application to combine multiple sources of data.