Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ติดตามการย้ายถิ่นของนกโดยใช้ Python-3


ในงานวิจัยบางชิ้น นักวิจัยใช้โมดูล GPS เพื่อติดตามพฤติกรรมของสัตว์ พวกเขาสามารถติดตามว่าพวกเขาเดินทางไปที่ต่างๆ ในช่วงเวลาต่างๆ ของปีได้อย่างไร

ในตัวอย่างนี้ เราใช้ชุดข้อมูลประเภทนั้นเพื่อทำความเข้าใจว่านกเคลื่อนที่ไปในสถานที่ต่างๆ อย่างไร ในชุดข้อมูลนี้มีรายละเอียดตำแหน่งจากโมดูล GPS ที่จัดเก็บไว้ ชุดข้อมูลที่สมบูรณ์อยู่ในรูปแบบ CSV ในไฟล์นั้นมีฟิลด์ต่างๆ อันแรกคือ Bird Id ตามด้วย date_time ละติจูด ลองจิจูด และความเร็ว

สำหรับงานนี้ เราต้องการโมดูลบางส่วนที่สามารถใช้ในโค้ด Python ได้

เรากำลังใช้โมดูล matplotlib, pandas และ cartopy หากต้องการติดตั้งลงใน Anaconda โปรดปฏิบัติตามคำสั่งเหล่านี้ สิ่งเหล่านี้จะติดตั้งโมดูลที่สำคัญอื่นๆ เมื่อจำเป็น

conda install -c conda-forge matplotlib
conda install -c anaconda pandas
conda install -c scitools/label/archive cartopy

ตอนแรกเราจะพล็อตตำแหน่งโดยใช้ค่าละติจูดและลองจิจูด มีนกสองตัวในชุดข้อมูล ดังนั้นการใช้สีที่ต่างกันสองสี เราจึงสามารถเห็นภาพตำแหน่งการติดตามได้

โค้ดตัวอย่าง

import pandas as pd
from matplotlib import pyplot as plt
df = pd.read_csv('bird_tracking.csv')
cr = df.groupby('bird_id').groups
cr_groups = df.groupby('bird_id')
group_list = []
for group in cr:
   group_list.append(group)
plt.figure(figsize=(7, 7))
#Create graph from dataset using the first group of cranes
for group in group_list:
   x,y = cr_groups.get_group(group).longitude, cr_groups.get_group(group).latitude
   plt.plot(x,y, marker='o', markersize=2)
plt.show()

ผลลัพธ์

ติดตามการย้ายถิ่นของนกโดยใช้ Python-3

ตอนนี้ เราสามารถพล็อตผลลัพธ์การติดตามนี้บนแผนที่ทางภูมิศาสตร์จริงเพื่อให้เห็นภาพวิธีการที่แน่นอน ซึ่งนกเหล่านั้นใช้

โค้ดตัวอย่าง

import pandas as pd
import cartopy.crs as ccrs
import cartopy.feature as cfeature
import matplotlib.pyplot as plt
df = pd.read_csv("bird_tracking.csv")
bird_id = pd.unique(birddata.bird_id)
# Setup the projection to display the details into map
projection = ccrs.Mercator()
plt.figure(figsize=(7,7))
axes = plt.axes(projection=projection)
axes.set_extent((-30.0, 25.0, 50.0, 10.0))
axes.add_feature(cfeature.LAND)
axes.add_feature(cfeature.OCEAN)
axes.add_feature(cfeature.COASTLINE)
axes.add_feature(cfeature.BORDERS, linestyle=':')
for id in bird_id:
   index = df['bird_id'] == id
   x = df.longitude[index]
   y = df.latitude[index]
   axes.plot(x,y,'.', transform=ccrs.Geodetic(), label=id)
plt.legend(loc="lower left")
plt.show()

ผลลัพธ์

ติดตามการย้ายถิ่นของนกโดยใช้ Python-3