All raw Arctic and Antarctic Buoy Data is located here:
http://iabp.apl.uw.edu/WebData/
The data files in this folder are labeled with their Buoy ID # and a ".dat" suffix.
The first step is to acquire a list of Buoy IDs for the data that you want to download.
This information can be found in a series of ascii tables located here:
https://iabp.apl.uw.edu/TABLES/
For our example, let's say you want to download the data from all currently updating Arctic
buoys.
A list of these buoys is available here:
https://iabp.apl.uw.edu/TABLES/ArcticTable_Current.txt
Many programming languages allow you to access and read data from the web given a url.
An example of how this is done is shown below using python2.7. Basically, opening and reading
a file off the web is similar to reading a file on your own computer. The steps are:
1. Create a file id that points to the file at the url address: fid=urllib.urlopen(path)
2. Read the file into a variable: data=fid.read()
3. Close the file id: fid.close()
4. Do what you will with the data you have downloaded.
In the python example below, I first read "ArcticTable_Current.txt" to get a list of all
the currently updating Arctic buoys. From this file, I get the Buoy ID from the first column.
Then I use the Buoy ID to find and download the file from WebData.
#!/usr/bin/python2.7
import urllib
#——first open and read “ArcticTable_Current.txt” to get the table of updating buoys:
fid=urllib.urlopen(‘https://iabp.apl.uw.edu/TABLES/ArcticTable_Current.txt')
table=fid.read()
fid.close()
table=table.split(‘\n’)[0:-1] #The "\n" is the "new line" character.
#Splitting the table data on it breaks the table into a list of rows.
#—— next cycle through the rows in table and download the associated data:
for row in table:
buoyID=row.split(';')[0] #The elements of "row" are separated by a ";"
#This code splits row on the ";" and grabs the first
#resulting element in the created list of row elements
fid=urllib.urlopen(‘https://iabp.apl.uw.edu/WebData/'+buoyID+'.dat')
data=fid.read()
fid.close()
writeto=open(your+path+’/‘+buoyID+'.dat,’w’)
writeto.write(data)
writeto.close()