Skip to content
Snippets Groups Projects
Commit 176cb31d authored by Tim's avatar Tim
Browse files

update

parent 7359c54c
No related branches found
No related tags found
No related merge requests found
......@@ -226,7 +226,7 @@ At the start of this project OSMCha was not able to filter for tags belonging to
## Design (Samuel)
## Design
### Architecture
<!--TODO: soll eine (objektorientierte) Problemdomain umfassen.-->
The architecture of OMT follows a monolithic 3-layer-architecture, where each layer is deployed in a separate Docker container. Since each layer runs in a separate Docker container the communication between them is protocol dependent.
......@@ -306,10 +306,10 @@ The MainLayout component dictates the overall visual structure of OMT. Inside th
Important source files and their functions are described below. Of course each of these components uses in addition the provided lifecycle hooks of Vue3.
The components are build with the Composition Api [@VueCompApiSetup].
##### MainLayout
##### Main layout
Is responsible for the main structure of the webpage, like the header bar and the position of the main content. It also acts like a mount point for the other Quasar pages respectively Quasar components.
##### ChangesetPage
##### Changeset page
This Quasar page contains the Vue ChangesetComponent. This component is responsible for representation of the list of changesets. It also handles user interactions regarding a changeset.
Some important functions inside this component are:
......@@ -321,7 +321,7 @@ Some important functions inside this component are:
- sort: Does contain the sorting logic for the sort functionality of the changeset list.
- onBeforeUnmount: Helps to clean up and reset some variables.
##### MapPage
##### Map page
This Quasar page contains the Vue MapComponent. The map inside this component is responsible for displaying the bounding box of a changeset. This component is also one of the key parts of the whole application.
Some important functions inside this component are:
......@@ -331,7 +331,7 @@ Some important functions inside this component are:
- createGeojson: Does create the geojson of the bounding box of a changeset.
##### FilterPage
##### Filter page
This Quasar page contains the Vue FilterComponent. This component contains all the logic related with the filers.
Some important functions inside this component are:
......@@ -346,11 +346,11 @@ Some important functions inside this component are:
- tagsToString: This is a helper function it helps to pre-process the tags into a certain string format. It does recognize different input formats because pattern matching is in place due to regex.
##### AboutPage
##### About page
This Quasar page contains the Vue AboutComponent.
##### ErrorNotFoundPage
##### Error not found page
Will be displayed if a default page is not found. This should not happen when everything works like intended.
##### Map
......@@ -359,7 +359,7 @@ To bring the drawing tools for drawing, editing and deleting a rectangle or poly
#### Pinia
Pinia is used to save the state of components. Whenever data has to be send to the DB a certain procedure takes place. First the data gets stored temporarly inside the responsible Pinia store and from inside the store an API call gets triggered via so called actions. Whenever Pinia is used many stores can be created [@PiniaDoc].
Pinia is used to save the state of components. Whenever data has to be send to the DB a certain procedure takes place. First the data gets stored temporarily inside the responsible Pinia store and from inside the store an API call gets triggered via so called actions. Whenever Pinia is used many stores can be created [@PiniaDoc].
Important stores implemented are:
......@@ -436,11 +436,11 @@ After that we added Quasar in a separate Docker container to the project.
The general procedure was always having a working prototype and extending it little by little until a cut through all layers was accomplished.
At the beginning only some test data were stored in the DB. Step by step during the project we added more data to the DB. After the initial setup a few real changesets were added to the DB. A major achievement was having a running and working DB with all changesets and the complete history of all nodes, ways and relations from Switzerland. This was possible by integrating [osmhistorydb-ch](https://github.com/sosm/osmhistorydb-ch) into our project. Unfortunately this was not as easy as it looked at the beginning. There were many libraries used with outdated versions as well as outdated technology (like Python2 dependency) between osmhistorydb-ch toolstack and our project. Having a running DB at the end were really time consuming.
At the beginning only some test data were stored in the DB. Step by step during the project we added more data to the DB. After the initial setup a few real changesets were added to the DB. A major achievement was having a running and working DB with all changesets and the complete history of all nodes, ways and relations from Switzerland. This was possible by integrating [osmhistorydb-ch](https://github.com/sosm/osmhistorydb-ch) into our project. Unfortunately this was not as easy as it looked at the beginning. There were many libraries used with outdated versions as well as outdated technology (like Python2 dependency) between osmhistorydb-ch tool-stack and our project. Having a running DB at the end were really time consuming.
### Main technologies used
Since each layer runs in a separate Docker container each layer can and is build with a different technology. For that reason it makes sense to inspect each layer more detailed. All containers gets instantiated from a so called image which itself is builded from a Dockerfile. For that reason the main components in the Dockerfile are mentioned in the corresponding layer below.
Since each layer runs in a separate Docker container each layer can and is build with a different technology. For that reason it makes sense to inspect each layer more detailed. All containers gets instantiated from a so called image which itself is builder from a Dockerfile. For that reason the main components in the Dockerfile are mentioned in the corresponding layer below.
### Front-end layer
Image for the container builds on a node.js image. Besides that Quasar and [NGINX](https://www.nginx.com/) gets installed too.
......@@ -641,14 +641,14 @@ Analysing the [requirements](#requirement-specification) and comparing them to t
- Maintain functionality of TMT tool: Or project
- Remove any special dependencies: In our OMT we do not have any major dependencies. There are some libraries like leaflet, which are used, but the big external tools, mainly OSMCha und mapbox are removed.
- Filter changesets by region: A bounding box or a more specific polygon can be defined and will refine the number of changeets displayed. Since a lot of data is checked this can take a little longer if many cahngesets need to be verified.
- Filter changesets by region: A bounding box or a more specific polygon can be defined and will refine the number of changeset displayed. Since a lot of data is checked this can take a little longer if many changesets need to be verified.
- Filter changesets by tags: Changesets can be filtered by tags by defining a key-value pair. It is also possible to filter by multiple tags at the same time.
- Filter changesets by nodes/ways: The new application is able to filter tags on the included objects of any changeset, which includes nodes, ways and relations. When multiple tags on a high number of changesets is filtered the process might take a moment.
- Filter by date: It works well to filter the changesets according to date.
- Track progress: Every changeset has a status assigned which can be used to monitor if it has not been looked at (open), is "in progress" or already finished.
- Responsive GUI: The user interface of the OMT is able to handle a wide range of display sizes. All contents are adapted responsivly. Only when the screen-area get too narrow (for example for smartphones) the application is no longer optimised and will at some point lose its elegance.
- Responsive GUI: The user interface of the OMT is able to handle a wide range of display sizes. All contents are adapted responsively. Only when the screen-area get too narrow (for example for smartphones) the application is no longer optimised and will at some point lose its elegance.
From the nice to have requriements a couple were implemented aswell:
From the nice to have requirements a couple were implemented as well:
- Introduce ranking: The Qrank system from IFS was integrated into the application to sort the changesets by their assigned priority.
- Predefined regions for observation: The application is not able to do this distinction.
......@@ -657,12 +657,12 @@ From the nice to have requriements a couple were implemented aswell:
### Comparison
This chapter compares our application the the previous solutions. It highlights the most relevant similarities and differences.
This chapter compares our application to the previous solutions. It highlights the most relevant similarities and differences.
Our project is by design quite similar to the TMT, since that was one of the given requirements. However we were able to provide provide a more targeted selection of functionality and at least in our oppinion a more sleek interface.
Our project is by design quite similar to the TMT, since that was one of the given requirements. However we were able to provide provide a more targeted selection of functionality and at least in our opinion a more sleek interface.
- TMT uses OSMCha for a majority of their features, which was removed as a dependency from our project. Without the external dependencies there is much more freedom of what to display.
- Through our own solution the features are much more targeted and specific for the use-cases of SRZ compared to OSMCha in the TMT
- Contrary to the TMT in our application it is possible to filter by tags. It is even possible to filter by tags on the internal objects of a changeset, which is a key destinguishing factor.
- Contrary to the TMT in our application it is possible to filter by tags. It is even possible to filter by tags on the internal objects of a changeset, which is a key distinguishing factor.
- OSMCha uses mapbox as a dependency, which is also no longer in the application. The map part is done with the leaflet library instead.
- The database is its own instance, which allows the operator to independently control their data.
......@@ -875,28 +875,28 @@ Some of the smaller improvements that could be done are the following:
- Include the tags of deleted osm-elements. Since OSM does not retain them for deleted objects it would be necessary to analyse the history of the individual contained objects in order to regenerate its tags. However it would make the search for tags complete.
- Optimise the database queries. Especially if a lot of data has to be processed the requests on the database tend not to be that fast. By optimising the queries a little more some improvement might be possible.
- Add production settings to the application. Currently only development settings are available.
- Limit the map extract to Switzerland when the Satellite map is choosen. Because the gathered data for the areal view is only available for Switzerland.
- Add support for small devices like smartphones, even it the usage on such a small screen probably isn't that efficiant and most work will be done on a regular desktop machine.
- Limit the map extract to Switzerland when the Satellite map is chosen. Because the gathered data for the areal view is only available for Switzerland.
- Add support for small devices like smartphones, even it the usage on such a small screen probably isn't that efficient and most work will be done on a regular desktop machine.
#### Major additions
Besides the smaller improvements, there are some additional features that would extend the application nicely:
- as mentioned in the comparison to the requirements adding users is not a major factor at the moment, but would certainly open the door for some interesting further possibilities. A login via OAuth with an OSM account would be the ideal
- The exact last working state could be retained and returned to the next time the application is opened.
- Custom filters could be keeped private or shared with other users.
- Custom filters could be kept private or shared with other users.
- Some sort of notification system for example in case an accordingly modified filter detects a change that fulfills the necessary criteria a notification can be sent to the user or a group of users.
- Especially if the software would be utilized in other areas aswell, a switch at the start or simply during the installation would be nice, where the area that should be tracked can be determined. This would reduce the size of the database while still providing the option of an international deployment. However some features like the satalite map provider would have to be changed dynamicly which might not be trivial in all regions.
- Similarly it would be nice to introduce some internationalisation in order to support more langagues besided german.
- Introduce more information about the changeset direcly in the application, like data about the history of the current objects would allow user to make decisions about the changeset faster.
- Especially if the software would be utilized in other areas as well, a switch at the start or simply during the installation would be nice, where the area that should be tracked can be determined. This would reduce the size of the database while still providing the option of an international deployment. However some features like the satellite map provider would have to be changed dynamically which might not be trivial in all regions.
- Similarly it would be nice to introduce some internationalisation in order to support more languages besides German.
- Introduce more information about the changeset directly in the application, like data about the history of the current objects would allow user to make decisions about the changeset faster.
- Even more advanced filtering of the changesets for example with a full-text search would further extend the options of limiting the number of entires to the most relevant. This might also include a search function for the already filtered list of changesets.
- To make the application faster and reduce the capacity needed it would be nice to reduce the size of the database. This might require more data to be loaded externaly and certainly requires some major changes in the entire changeset processing, but would pose an interesting and efficient change to the current state.
- To make the application faster and reduce the capacity needed it would be nice to reduce the size of the database. This might require more data to be loaded externally and certainly requires some major changes in the entire changeset processing, but would pose an interesting and efficient change to the current state.
### Possible approach
The options above are in no particular order. Here we quickly discuss some possible approaches. Of course they might vary depending on the motivation with which the project is extended. It should also be noted that the best approch strongly depends on the future needs of a potential client.
The options above are in no particular order. Here we quickly discuss some possible approaches. Of course they might vary depending on the motivation with which the project is extended. It should also be noted that the best approach strongly depends on the future needs of a potential client.
If no particular features are urgently requested, it would make most sense to first improve the current features. This can consists of making them more robust, improving performnce or to extend them with new options.
If no particular features are urgently requested, it would make most sense to first improve the current features. This can consists of making them more robust, improving performance or to extend them with new options.
When after this there are still ressources available a new feature or functionality can be implemented. The list in [above](#major-additions) is not prioritised in any way and it has to be determined for the specific occasion which addition is the most usefull to develop.
When after this there are still resources available a new feature or functionality can be implemented. The list in [above](#major-additions) is not prioritised in any way and it has to be determined for the specific occasion which addition is the most useful to develop.
......@@ -1120,7 +1120,7 @@ The application includes a couple warning and error messages. They are displayed
\newpage
# Appendix A
## Glosary
## Glossary
: Glossary
......@@ -1143,7 +1143,7 @@ The application includes a couple warning and error messages. They are displayed
| OSM | Open Street Map |
| PWA | Progressive Web Application |
| REST | Representational state transfer |
| RUP | Rational Unifed Process |
| RUP | Rational Unified Process |
| SA / TT | Term thesis |
| SFC | Single-File Component |
| SQL | Structured Query Language |
......
No preview for this file type
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment