-
An example of the HK path map. Red path indicates the shortest path and yellow path indicates the path with shortest travelling time.
-
An example of information of checkpoint that will be shown in the app.
-
First page of the app.
-
The page for entering verification code.
-
The page for origin location name.
-
The page for destination location name.
-
The page for showing the shortest path.
-
The menu page of the app interface.
Inspiration
During the war, many Ukrainians try to flee from Ukraine to ensure safety. However, some of them can be unfamiliar with the locations of the border checkpoints and do not know which one they should go to. This might increase the travelling time and distance, which leads to a higher risk of being trapped by the Russian army before they can escape. Hence, we would like to develop an app regarding the transportation of Ukrainians to the border checkpoints. After considering the feasibility and specifying the purpose of the app, we have come up with the project UA/HELP.
What it does
The app aims to search for the closest border checkpoint, and also the border checkpoint using the least travelling time, from a given location name. This allows Ukrainians to quickly decide on which border checkpoint they should go for when escaping from Ukraine. Some details of the checkpoint are shown, including the English and Ukrainian names of the checkpoint, its travelling distance and its travelling time. A map graph with two paths (shortest distance and shortest travelling time) is also generated.
Moreover, to make sure only Ukrainians can use the app, the user needs to enter a verification code before they can actually use the app.
How we built it
The app consists of the main Python script for finding the information, and JavaScript for creating the user interface.
Regarding the Python script, we use packages called osmnx and networkx to process the map data that comes from OpenStreetMap. The user can enter a location name and the app can find its corresponding latitude and longitude. Then, using data of all border checkpoints from a CSV file, the distance and travelling time from the origin point to each checkpoint are computed for comparison. The information of optimal checkpoint and the path to reach it are returned.
Challenges we ran into
First, there were many troubles faced when installing the package on and setting up the python interpreter environment. After spending a long time, we manage to find the solution online by typing some commands.
Second, we found out that the map data of Ukraine from OpenStreetMap is too large to be processed. As a result, we have waited for the code to run for a very long time but nothing occurs. Hence, we decide to produce a prototype, i.e. apply the codes on the map data from Hong Kong instead, because Hong Kong is a much smaller city and has many border checkpoints as well.
Accomplishments that we're proud of
The biggest accomplishment is that the main part of the app, i.e. searching for the closest checkpoint from a location in Hong Kong, can be implemented successfully. The text details of both the closest and less travelling time-consuming border checkpoint can be shown, as well as the routes to get there. The running time is also short for map data of Hong Kong.
Another accomplishment is being able to generate map data using our codes. Even though the map data for Ukraine is too large and cannot be created, we are able to do so for Hong Kong. This means we might be able to generate map data for Ukraine as well given a supercomputer in the future.
Moreover, even if the current GPS signal is not used for the actual running of the app, we have found a code that can get such data. This means in the future, we should be able to implement this feature easily.
What we learned
Regarding the technical aspect, we have learned how to make use of OpenStreetMap data and its related packages for analysis. We have also learnt how to create a good user interface.
Regarding other aspects, we have learnt how to narrow down a very vague goal (help Ukrainians) into a more specific goal, and then the actual technical solution, given large freedom of creation. We have also learnt how to let our project more achievable given the constrain like short creation time. Furthermore, we have learnt how to distribute tasks effectively among teammates with different skills and come up with the best solution that allows everyone to contribute more. The most important thing we have learnt is to think from the perspective of the user (Ukrainians) and come up with a prototype that fits their needs.
What's next for UA/HELP
First, if this idea is adopted, it should be run on a supercomputer instead of a laptop so that the map data for Ukraine can be computed much faster and Ukrainians can use the app.
Second, the GPS signal obtained from the phone can be considered as one possible location input for the app. However, this might also lead to privacy issues, so consent must be provided first. However, as the current map data used is from Hong Kong, GPS signal codes cannot be implemented at this moment. But in the future, we should definitely try to apply this feature as the codes for extracting the current location are already there.
Third, regarding the new constraints added, destroyed roads, Russian-occupied zone, waiting time at the checkpoint, etc, shall be considered when computing the path and travelling time. Such information can be added by user's report, the government's notification, etc. However given the high complexity of implementation and short completion time, it cannot be achieved at this moment.
Note for Github Links
Use the first link first (dajmannetje/Ukraine-unity) for the final app testing. If the codes from the first link does not work, use the second link (micobruh/UA-HELP) to only run python codes. You may follow the instructions from readme file to run the codes.
Log in or sign up for Devpost to join the conversation.