Difference between revisions of "E-Ecology GPS Bird Track Generator"
|Line 44:||Line 44:|
=== Underlying Query and Data ===
=== Underlying Query and Data ===
Revision as of 15:46, 4 May 2009
The FlySafe GPS bird tracks service
One of the data types available in the FlySafe database is GPS tracks. These are produced by attaching small GPS tracking sensors to birds, which track the bird movements throughout the year. The data is subsequently collected by the Argos satellite system, and made available in the FlySafe Database. The data itself is geo-referenced, and as such it makes sense to provide a service that allows you to look at the data in a GIS-system. The GIS system of choice is Google Earth, and therefor the output of the service is a KML file. This KML file can be loaded into Google Earth, but many other GIS-systems also provide KML reading capabilities.
The service itself can be found at the Flysafe website, or with a direct link to the GPS service. Both do require special access: You need to have credentials and your IP address should be registered.
Currently there are 40 different birds available in the database, and records exist from June 2006 and on. In order to be able to select specific bird and time for detailed studying, an interface was built that allows users to query and retrieve specified subsets of the available data. See the image to the right for a screenshot of the interface.
To use the GPS service, one must first make one or more bird selections, where "add new" button is used to add a selection to the list. When the user is satisfied with the generated list, the submit button can be pressed to generate the KML file with all the selected bird data.
Each individual option is described in more detail below.
Bird and Time selection
The two drop down menu's in the upper left of the interface are for selection of specific birds. The species drop down, when used, filters the available birds so that only birds of the selected species are visible. The Ptt-id drop down shows all the unique bird ID's. Every single number is a unique bird.
In the upper right of the interface there are selectors to specify the range of time the user is interested in. For the begin and end date, there are two options: You can either type a date directly, or you can use the calender button. When you use the calender button, a small window pops up where a desired date can be selected. Here you can either use the arrows, or you can use ctrl up/down and ctrl left/right to change the years and months respectively. If you have selected a year and month, you can click on a day to finalize you date selection.
For more detailed time tuning, there are also fields for the hours and minutes. For these the same hold, you can either type it in, or you can use the drop down to select the desired hour.
Visualization and calculation options
There are a few options the interface that influence how the data is represented when it is returned:
- The Color option assigns a specific color to the selected bird track. Here there are two version or each color: normal and range. In the normal option, all icons are the same color, but with the range option, the icons are colored according to speed, where the darker shades correspond to lower speeds, while the whiter shades correspond to higher speeds.
- The icon option lets the user choose between two different icons, the circle and the arrow. The difference is that the arrow shows direction, while the circle does not.
- The Force calculated speed/heading checkbox is an option that forces the underlying scripts to calculate speed and heading instead of using the measured speed and heading in the database. The reason for this is that not all GPS tags had the capability for measuring speed and heading. With this option the older and newer tags are homogenized. (option does not function yet)
More details about the visualization can be found in #Visualization.
Because users often have specific (groups of) birds that they are interested in, it would be tedious to fill in the form over and over with the same selections. Therefor we built in a system where the user can save and load specific selection.
To save the current selection, simply press the Save Selection button, choose a name, and press Save. To load a previously saved selection, simply press the Previous Selections button, select the list your interested in, and press Load.
It must be noted that the selection are saved as cookies, and are therefor browser specific, and can be lost over time.
The GPS service generates KML files containing one or more bird tracks. Currently, it saves the resulting file as tracks<#1>-<#2>.kml, where <#1> is the lowest bird ID, and <#2> the highest bird ID in the file. The kml itself can be viewed with a variety of applications, provided they support the KML format of files. In this document, we will limit ourselves to the use of Google Earth.
An alternative way of looking at the GPS bird track kml files is with BirdView. BirdView is the name of a FlySafe website with built in Google Earth functionality. Looking at GPS bird tracks in BirdView would allow you to compare GPS track data with the other forms of data available in BirdView.
The current support of kml files in BirdView is slightly complicated though. It consists of two different steps:
- First the kml file has to be made publicly available on the internet, for example by putting it in your personal home space of a website you have.
- Then you can use BirdView to load the kml file, by providing a full internet link to your kml file under the KML Document tab of BirdView.
We hope to make the process of loading kml files into BirdView easier in the future, but for now it works trough loading kml files form the internet.
Underlying Query and Data
The data in the database is produced with different models of GPS trackers. The result is that not every bird has exact the same data available. However, in order to provide compatibility, they are all put in the same table, but with the older models having certain fields empty.
SELECT g.ptt_id, i.species, g.date_time, g.latitude, g.longitude, g.speed, g.course, g.altitude, g.alt_status, g.quality, g.user_qc, g.parser_qc, g."location", elevation.srtm_getvalue(g."location") AS elevation, case when g.altitude = 0 then NULL else (g.altitude - elevation.srtm_getvalue(g."location")) end AS agl FROM gps.gps_tracking_data g, gps.individual i, gps.track_session t WHERE g.ptt_id = t.ptt_id AND g.date_time >= t.start_date AND i.ring_number = t.ring_number AND g.parser_qc = 1 AND g.ptt_id = <ptt_id> AND g.date_time >= <startTime> AND g.date_time <= <endTime> AND g.latitude <> 0 ORDER BY g.date_time