Import locations & deployments¶
At a glance
Import Locations and Deployments via CSV, and get timezone/DST handling right so timestamps process correctly.
- Time: ~10 minutes
- Who: anyone setting up a new project's spatial/temporal scaffolding
Importing Locations¶
Two ways to add Locations: manually via the map view, or in bulk via CSV/GPX.
CSV columns:
| Column | Meaning |
|---|---|
locationID |
The ID/name of the location |
longitude |
WGS84 decimal degrees, e.g. 19.58536776 |
latitude |
WGS84 decimal degrees, e.g. 63.55417296 |
Import via Geomap → Locations, then the Import locations from CSV/GPX action in the list header, selecting the right timezone and target Research Project.
Importing Deployments¶
Manually adding Deployments is error-prone — generate the table from the media files instead:
trapper-tools helpers template --data-path /path/to/data
Import the resulting CSV via Geomap → Deployments, then the Import deployments from CSV action in the list header. To have Location rows created during the same import (skipping the separate Locations import), tick Create locations in the import form and make sure the CSV contains locationID, longitude, and latitude columns — the generated template does not include coordinates, so add the two coordinate columns yourself.
See the full supported metadata field list at the Camtrap DP deployments spec — the generated template only fills the minimum required set.
Timezone behaviour¶
The default timezone for the TRAPPER app is UTC (Django's TIME_ZONE setting). Set your own working timezone in your User Profile settings (click your username in the top-right corner). Your working timezone affects how system notifications are displayed and is used as the default in forms — it does not change how recorded data timestamps are interpreted.
Daylight Saving Time¶
If a camera trap at a given Location does not observe DST (doesn't shift its clock in spring/autumn), mark that Location's ignore_DST flag True. With that set, all timestamps in recorded metadata from that Location (Deployment.start_date, Deployment.end_date, Resource.date_recorded) are processed ignoring DST.
Note
Two Locations have "the same timezone specification" only when both timezone and ignore_DST match — both values together describe how TRAPPER processes timestamps for that Location.
Setting timezone for a Location¶
Specify timezone and ignore_DST whichever way you add Locations:
- The map-view single-location form.
- Bulk CSV/GPX import.
- Automatic Location creation during a Deployments bulk import.
Getting this right matters — it's used to process timestamps for every Deployment and Resource tied to that Location.
Timezone rules during CSV import¶
| Import type | Rule |
|---|---|
| Locations | All locations in one file get the timezone/DST values from the form — you can only import one timezone/DST combination per CSV |
| Deployments | Can reference different Locations, but all must share the same timezone specification. If creating new Locations, they get the form's timezone/DST values |
Collections via trapper-tools |
Resources must link to Locations sharing one timezone specification; the YAML describing the Collection carries the timezone, validated against the database on upload |
Data that doesn't meet the "same timezone specification" requirement has to be split across separate import files.