Filtering images

Sort, filter, and query your data

Filter by Deployment

In the Deployment section of the Filter Panel, you can filter you images by Camera and Deployment.

The structure of the Deployment filter is a bit unintuitive, so it's worth first understanding the relationship between Cameras and Deployments. Cameras can have multiple Deployments (to represent when a camera is moved to a new location, for example), and all Cameras are given an un-editable "default" Deployment with the naming pattern <camera_serial_number> (default) (e.g. HLPXMS03225269 (default) ).

Every Image that gets uploaded needs to be associated with a Deployment, and the default Deployment serves as a catch-all in case (a) you choose not to create Deployments for your Cameras, or (b) you upload images belonging to that Camera that were taken before the Start Date of the Camera's oldest Deployment.

The default deployment is where images will land if you have (perhaps mistakenly) set the Start Date for a Deployment later than it actually was. If you find that you have images in your default Deployments that should be associated with a Deployment you've already created, simply adjust that Deployment's Start Date to be inclusive of those images that landed in default. More information on how to edit existing Deployments can be found here.

What's up with the nested checkboxes?

To save space in the user interface we decided that instead of creating a long, flat list of checkboxes to filter each Deployment, we should nest individual Deployment checkboxes under a parent checkbox. The parent (top-level) checkbox represents all of the individual Deployments belonging to a particular Camera. So by toggling the top-level checkbox on and off, you can show or hide all images taken by that Camera.

If you want to show/hide images from individual Deployments, you can expand the top-level checkbox by clicking the caret icon to the right and toggling on/off the nested checkboxes that appear below. Each nested checkbox represents an single Deployment.

Deployment filters are nested. Each top-level checkbox represents all of the Deployments for a particular Camera.

Custom filters

Most of the filters are self-explanatory, but users who have “Project Manager” permissions will also have the ability to apply “Custom Filters” (i.e., submit MongoDB queries directly to the database and see the results). Feel free to copy, modify, and paste the custom filters below, but be sure to replace all text in <angle_brackets> with real values.

Timestamps in queries

If you include timestamps in your custom queries, be mindful that those timestamps are interpreted by the database as being in UTC+0, NOT your local timezone. So, if you live in California and are including a timestamp of "2023-01-01", be aware that in your timezone, that same moment in time is actually 4:00 PM on December 31st, 2022.

If you're interested in submitting time-constrained queries relative to your timezone (or any timezone that's not UTC+0), be sure to calculate what that time would actually be in UTC+0 and include that in your ISO 8601 Date string in your query.

For example, if you lived in California and want to get all images validated between 2023-01-01 and 2023-01-20 in your timezone, your start date would be"2023-01-01T08:00:00.000Z" and your end date would be "2023-01-21T07:59:59.999Z". It's worth pointing out here that to include all images validated on the last day of the date range (1/20), the end date will be in 1/21 in UTC.

Useful queries

Query all images with labels validated by a specific user:

{ 'objects.labels.validation.userId': <users_email_address> }

Query all images labeled by anyone between two dates:

// NOTE: all date strings are interpreted in UTC+0
// be sure to adjust them accordingly if you'd like to query relative
// to a different timezone (see note above for more info)

{
    'objects.labels.validation.validationDate': {
        $gt: ISODate("2022-04-01"),
        $lt: ISODate("2022-04-30")
    }
}

Query all images with labels validated by a specific user between a range of dates:

// NOTE: all date strings are interpreted in UTC+0
// be sure to adjust them accordingly if you'd like to query relative
// to a different timezone (see note above for more info)

{
    'objects.labels': {
        $elemMatch: {
            $and: [{
	        'validation.userId': <users_email_address>
            }, {
                'validation.validationDate': {
                    $gt: ISODate("2022-04-01"),
                    $lt: ISODate("2022-04-30")
                }
            }]
        }
    }
}

Last updated