Tracking bird migration using Python-3

Bird migration tracking using GPS technology provides valuable insights into animal behavior patterns. Researchers use GPS modules to monitor how birds travel to different locations throughout the year, collecting data on their routes, timing, and movement patterns.

In this tutorial, we'll analyze a bird tracking dataset containing GPS coordinates, timestamps, and movement data. The dataset is in CSV format with fields including bird ID, date_time, latitude, longitude, and speed.

Required Libraries

We need several Python libraries for data analysis and visualization. Install them using conda ?

conda install -c conda-forge matplotlib
conda install -c anaconda pandas  
conda install -c conda-forge cartopy

Basic Location Plotting

First, let's plot bird locations using latitude and longitude coordinates. We'll use different colors to distinguish between multiple birds in the dataset ?

import pandas as pd
from matplotlib import pyplot as plt

# Load the bird tracking dataset
df = pd.read_csv('bird_tracking.csv')

# Group data by bird ID
bird_groups = df.groupby('bird_id')

# Create figure and plot each bird's path
plt.figure(figsize=(10, 8))
for bird_id, group in bird_groups:
    x, y = group.longitude, group.latitude
    plt.plot(x, y, marker='o', markersize=2, label=f'Bird {bird_id}')

plt.xlabel('Longitude')
plt.ylabel('Latitude')
plt.title('Bird Migration Paths')
plt.legend()
plt.grid(True, alpha=0.3)
plt.show()

This creates a basic scatter plot showing the migration paths of different birds using their GPS coordinates.

Geographic Map Visualization

For better visualization, we can overlay the tracking data on an actual geographic map using Cartopy. This provides geographical context with coastlines, borders, and terrain features ?

import pandas as pd
import cartopy.crs as ccrs
import cartopy.feature as cfeature
import matplotlib.pyplot as plt

# Load dataset
df = pd.read_csv("bird_tracking.csv")
bird_ids = pd.unique(df.bird_id)

# Setup map projection
projection = ccrs.Mercator()
plt.figure(figsize=(12, 10))
axes = plt.axes(projection=projection)

# Define map extent (longitude_min, longitude_max, latitude_min, latitude_max)
axes.set_extent((-30.0, 25.0, 50.0, 10.0))

# Add geographic features
axes.add_feature(cfeature.LAND, color='lightgray')
axes.add_feature(cfeature.OCEAN, color='lightblue')
axes.add_feature(cfeature.COASTLINE)
axes.add_feature(cfeature.BORDERS, linestyle=':')

# Plot migration paths for each bird
colors = ['red', 'blue', 'green', 'orange', 'purple']
for i, bird_id in enumerate(bird_ids):
    bird_data = df[df['bird_id'] == bird_id]
    x = bird_data.longitude
    y = bird_data.latitude
    
    axes.plot(x, y, '.', color=colors[i % len(colors)], 
             transform=ccrs.Geodetic(), label=f'Bird {bird_id}')

plt.legend(loc="lower left")
plt.title('Bird Migration Tracking on Geographic Map')
plt.show()

The geographic map provides context by showing coastlines, country borders, and terrain features, making it easier to understand the actual migration routes.

Data Analysis Example

We can also analyze migration patterns by examining the data more closely ?

import pandas as pd

# Load and examine the dataset
df = pd.read_csv('bird_tracking.csv')

print("Dataset Info:")
print(f"Total records: {len(df)}")
print(f"Number of birds: {df['bird_id'].nunique()}")
print(f"Date range: {df['date_time'].min()} to {df['date_time'].max()}")

# Calculate distance traveled (simplified)
for bird_id in df['bird_id'].unique():
    bird_data = df[df['bird_id'] == bird_id]
    lat_range = bird_data['latitude'].max() - bird_data['latitude'].min()
    lon_range = bird_data['longitude'].max() - bird_data['longitude'].min()
    print(f"Bird {bird_id}: Lat range = {lat_range:.2f}°, Lon range = {lon_range:.2f}°")

Key Features

The bird tracking analysis provides several insights:

  • Migration Routes: Visual representation of actual flight paths
  • Geographic Context: Understanding routes relative to landmasses and water bodies
  • Temporal Patterns: Tracking seasonal movement patterns
  • Individual Behavior: Comparing different birds' migration strategies

Conclusion

Python's data visualization libraries make it easy to analyze and visualize bird migration data. By combining pandas for data manipulation with matplotlib and cartopy for visualization, researchers can gain valuable insights into animal movement patterns and migration behaviors.

Updated on: 2026-03-25T05:06:04+05:30

568 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements