Our inspiration for this project came from a desire to incorporate the unique educational backgrounds of our team members – Computer Science, Earth and Environmental Sciences, and Biology. We wanted to create a multi-disciplinary tool to highlight the intersectionality between computer science and the physical sciences. Each of us has our own personal connection to the beautiful lands and environments we have had the privilege of interacting with. Respecting the well-being of animals and studying wildlife populations is integral to protecting ecosystems from significant anthropogenic damage. BC Tracks was designed to keep the members of our communities safe and protect animals from harm, while demonstrating the ability for human and animal populations to coexist harmoniously.
What it does
BC Tracks is a wildlife tracker and reporting system. Users complete a web-based form detailing key information about an observed animal, which is then added to the BC Tracks geodatabase. A point corresponding to the approximate location of the reported animal is then displayed on a web map along with relevant attributes, allowing local animal populations to be tracked. The report form also allows the user to send a report directly to their municipal government if they indicate that the animal poses a risk to public safety or that the animal is in distress. The BC tracks website has buttons and a report form optimized for mobile use. However, the site is also accessible on a desktop and this format is ideal for map functionality. It is recommended that users submit reports on a mobile device to provide the most accurate location, and view tracked species on a desktop for optimal map functionality.
How we built it
There were multiple stages to the creation of BC Tracks. We registered the domain name “bctracks.tech” and created a PHP server on Digital Ocean to host the website. We used Bootstrap Studio to assist us in building the CSS for the report submission form. The website logo and button designs were created using Canva. The web map shown on the home page is an iFrame containing our published map on QGIS Cloud. QGIS was used to define the map symbology and pop-up configuration. The coordinate and attribute data is stored in a PostGIS geodatabase that is linked to the map. The report web form uploads the user’s recorded data to the database via the PHP server. Additional layers containing subsets of the data were created in PostGIS using SQL queries.
Challenges we ran into
- Connecting the web form to our database took a lot of effort and debugging. This was exacerbated by the length of time it took the server to reflect changes made in code.
- Formatting the website to be optimal on a all devices resulted in resizing elements multiple times to find the correct balance.
- There was difficulty in processing the data through QGIS due to frequent crashes and inconsistent behaviour.
- With our chosen server, we were unable to provide a functionality we originally wanted. Ideally, an email would have been sent out to the local municipality when selecting at least one of the two checkboxes on the form (dangerous or distressed animal). A layer containing hypothetical municipal boundaries was created to determine the municipality in which each animal was observed. Each boundary polygon had an associated email address, so that email reports would be sent to the appropriate municipal inbox. Unfortunately, forwarding responses to an email was not possible with our chosen server so we were not able to implement this feature.
Accomplishments that we're proud of
We are proud of the fact that we were able to come up with an idea that incorporated knowledge from all three of our educational backgrounds and create the beginnings of a functional product that we believe could be used for good in communities throughout British Columbia. We overcame many challenges and continued to think of new ways to improve the product.
What we learned
Each of us got something different out of this Hackathon experience. Two of our team members were first time hackers with no formal education in computer science beyond a single first year computer science course. It was a great opportunity to see how a project comes together and all the different elements that are required to build a functional product. We learned a lot about geodatabases and the different ways layers can be created both using the database itself or a geographic information system. The creation of the website allowed us to brush up on writing HTML5 and CSS3 code and to try out applications like Canva and Bootstrap Studio to enhance design and user experience.
What's next for BC Tracks
If we continued to work on the BC Tracks project we would first solve the email forwarding issue so that municipalities can receive email copies of reports in their area. We would also like to implement new features that would allow you to filter data shown on the map by different fields including date/time to only show results from a set period of time. We would also need to consider the long term storage options for the data in the database as the map will get overly cluttered if all reports are shown at once after a long period of time. This could be solved by the default settings showing only a recent subset of data. We would also like to add the ability to submit photos to the form to include in the tooltip pop-up windows and act as an alternative for providing location (the coordinates would be generated from the geotagged location in the image, rather than the user’s current location). There is also the option to expand the scope of the project to include the municipalities across Canada, rather than focus solely on BC.