Data Collection‎ > ‎Open Data Kit‎ > ‎

ODK Collect

(Note: Go back for info on data collection, my adoption of Open Data Kit, and the hardware I've used for electronic data collection.)

ODK Collect is the open source Android app that replaces paper forms used in survey-based data gathering. It supports a wide range of question and answer types, and is designed to work well without network connectivity.  It's supported by a great community of users.  I've been using ODK Collect exclusively for all my data collection since 2013.

This page was created as a place to store and share my data sheets.  I author all of my sheets in MS Excel, then use the XLSForm Online tool to convert them to XForms before uploading to my ODK Aggregate server for use in the app.  The Aggregate server is set to publish data it receives as Google Sheets.  I automate the creation of copies of the Google Sheet (using the IMPORTRANGE function) that can be shared with collaborators, so as to ensure the master version isn't accidentally corrupted (although the true master continues to reside on the Aggregate server).  

Eventually, I plan to upgrade all of my hardware to units that are capable of running a more recent version of Android so that I can move all of my data collection directly to Google Drive, negating the need for a server.

My ODK Collect Data Sheets for Herpetological Research

1. Amphibian or Reptile Occurrence Record (click to view, download)
This is my most basic data collection form, and the first I created for ODK Collect.  The purpose of this sheet is to collect information on an occurrence, documenting an observation of any amphibian or reptile. It combines this observation with date and time, location (GPS coordinates), photographs, weather conditions, morphometric data, behavior, and information on samples collected; all reported in single row in the resulting Google Sheet.  A few of the features of this data sheet include:
  • A two-tiered cascading select (using a choice_filter), whereby the user first selects an order/suborder (Anura, Caudata, Chelonia, etc.) which is followed on the next page by a list of the (Ohio) species within the selected order:












  • Use of the geopoint question type to collect latitude and longitude from the unit's internal GPS.  In addition to this, I also group this item with another select_one asking if the user wants to manually enter the coordinates (when the internal GPS is not working).  The default is "No."  Should this be changed to "Yes," (selected(${manual_coord},'yes') in the language of the relevant column) then the next page appears allowing the user to enter coordinates, but only in decimal degrees format that fall within the state of Ohio (using constraints).  If the default "No" is chosen, then the form simply skips the page for manually entering coordinates.  Location is perhaps the most important piece of data I collect, so I use this set-up (geopoint and option to manually enter coordinates) on all my forms.  Even for forms where I don't necessarily need coordinates (such as those that include a site name), I still like to include this as an important redundancy.  It's really helpful when you are troubleshooting to be able to see where the user was standing when the data was collected!


  • Use of the barcode question type, which opens the unit's scanner (camera) and captures the data.  I use this to scan the barcode stickers that come with passive integrated transponder (PIT) microchips.
  • A field-list of samples collected (multiple select_one).  I like this better than the select_multiple, which I use to collect behavior data, as each select_one creates a column for each sample type with a simple "Yes" or "No" (default) indicating if a sample was collected.  This is much easier for sorting and finding all the data associated with samples.  The select_multiple type puts all of the items selected into a single cell.

  • A field-list for information on the labels of the samples collected.  Only shown are those samples which were indicated as being collected in the previous page (e.g., relevant column selected(${blood}, 'yes')).  The "hint" column is populated with the PIT number and date, which facilitates labeling of the vials and transcribing the information to the relevant field on the ODK Collect sheet.  (Note, you cannot use an expression as a default value.)  Sometimes a photo is taken with a camera other than that attached to the data collecting device, so a space is provided for linking the ID of that photo to the data (if photograph was chosen in the previous page).  These labels provide an important link between samples and their associated data.