Stork App Overview

Click below to find out more about this project and how it was implemented. This is a demonstration version and does not include the full dataset.

Technology Stack
  • Frontend: JavaScript, EJS, HTML5, CSS Bootstrap 5, Leaflet.js, Select2, DataTables

  • Backend: Node.js (Express & NPM), Python (clustering scripts), PostgreSQL

  • Data & Processing: Jupyter Notebook, Pandas, Scikit-learn, CSV/JSON/PostgreSQL data handling

  • Version Control & Tools: GitHub, VS Code

The Stork Movement Explorer (SME) is a full-stack web application developed as part of my MSc dissertation to analyse and visualise GPS tracking data of migratory storks. It allows users to retrieve, filter, and cluster movement data, and explore migration patterns over time through an interactive map interface.

SME combines a Python data-processing backend with a JavaScript-based interactive frontend, connected through a Node.js/Express server.

  • Backend: Python handles data transformation, clustering, and metric evaluation.
  • Frontend: Built using HTML, CSS, JavaScript, Bootstrap, and Leaflet.js for interactive maps.
  • Database: PostgreSQL stores cleaned and preprocessed GPS data.

The architecture was designed for modularity and efficient performance, supporting flexible clustering parameters and smooth visualisation of datasets ranging from 15k–45k points.

The backend uses Python scripts for data preprocessing, clustering, and evaluation.

  • Preprocessing cleans raw CSV datasets, calculates metrics such as distance and heading, and loads them into PostgreSQL.
  • Users can select HDBSCAN, DBSCAN, or K-Means for clustering, with results returned in GeoJSON format.
  • Each clustering run logs its input size, parameters, runtime, and resulting cluster count, enabling reproducibility and comparison.

The frontend provides a responsive, interactive interface built with Leaflet.js and Bootstrap.

  • Interactive map visualises stork trajectories and clustering results.
  • Filters allow selection by individual, year, month, time slot, and distance.
  • A time-slider animation feature replays movement patterns across weeks or months, with colour-coded legends for easy interpretation.
  • Optimised for desktop, tablet, and mobile with accessibility considerations throughout.

SME was tested across large datasets (15k–45k points) to ensure reliable and smooth performance.

  • Filtering, clustering, and animation processes were benchmarked and optimised for speed.
  • Bootstrap’s grid layout supports full responsiveness across devices.
  • Accessibility considerations guided layout and interaction design, though advanced colour testing was limited by scope.

Overall, the project demonstrates a strong integration of data science, full-stack engineering, and interactive UX design.

Try out the interactive app below to explore its key features and functionality. Please note, this is a demonstration version and does not include the full dataset.

Stork Movement Explorer

Interactive tool to cluster and map Stork movement data.

Stork Icon
Loading...

Checking the database for the available years and Stork individuals, please wait...

Pick the year(s) and bird(s) you want to include in your search. You can select multiple options or use the "Select All" and "Deselect All" buttons. If you don't select anything, all years and birds will be used. (The number of records for each choice is shown in brackets.)

Choose a clustering method and adjust its settings as needed. Each method has its own parameters, which can affect how clusters are identified in the data. When you click run clustering it will cluster based on your chosen settings, using the data selected by your query.

Use Silhouette Analysis to find the best number of clusters

Choose how the data should be collected:

  • GPS Decimal Precision: Higher decimal values may improve location accuracy but increase processing time.
  • Time Interval: Larger intervals may reduce sensitivity but speed up processing.
  • GPS Point limit: Controls how many data points are generated by sampling the database. Low setting speeds up processing but may reduce frequency detail.

Choose which features to include in the clustering process. Feature Scaling adjusts values to a common scale so that no single feature dominates. This can help distance-based methods like KMeans, DBSCAN, and HDBSCAN work more effectively.

 

This section displays a detailed log of all selected dataset and clustering parameters, along with relevant data statistics.


              
    • Silhouette Score: Higher values indicate better-defined and more distinct clusters.
    • Adjusted Rand Index: Measures how closely the clustering matches known labels (1 = perfect match).
    • Calinski-Harabasz Index: Higher scores suggest clusters are well-separated and compact.
    • Davies-Bouldin Index: Lower values reflect better clustering with less overlap between clusters.
    • Number of Clusters: Total clusters identified, excluding noise or outliers.
    • Noise Ratio: Proportion of data points labeled as noise (useful for DBSCAN/HDBSCAN).

    Filter GPS Points On Map

    Filter the GPS points using any combination of the methods below. You can narrow down the dataset by selecting specific years, birds, months, time slots, or a distance range.

    Play the Migration Animation
    Stork

    Observe an individual Storks direction of travel and migration over time, using the selections and buttons above.

    Individual Cluster Year Total Points Avg Latitude Avg Longitude Map Link
    Cluster Trends by Year