We need to agree on a standard file and folder structure for SeaBee data. This needs to be simple enough to be human-readable (e.g. via the MinIO web interface), but structured enough for processing to be automated. Some considerations:
-
We should avoid ID codes or unique identifiers in file paths, as these are not human-readable
-
The system should allow for sensible groupings of data like, for example, the year => mission => flight hierarchy that is currently used. This will make it easier for people to find what they need
-
We need to allow for a range of data types and sources (aerial drones, otters, RGB, MS, HS etc.)
The system used by Sindre for seabirds is pretty straightforward and covers everything we need at present (I think). The system originally proposed by NIVA seems unnecessarily complicated.
As a starting point, how about something like this for the data from each flight:
region_area_yyyymmdd/
├─ annotation/
├─ dem/
├─ gcp/
├─ ground_truth/
├─ orthomosaic/
├─ other/
├─ raw_images/
config.json
Where:
region is coarse geographic descriptor (e.g. fylke) and area is more specific (e.g. an island, town or building name).
annotation (optional). Contains any relevant annotation not already in the database, such as geopackages etc.
dem (optional). Contains elevation datasets generated during orthorectification (DSMs and DTMs etc.).
gcp (optional). Ground control points in a standard text format. Note: The format Sindre uses for ODM is slightly different to that used by e.g. Spectrofly for Pix4D. Assuming both are supported by both applications, it would be good to pick one as standard, as then we can easily use ODM to reprocess data from Pix4D etc.
ground_truth (optional). Ground truth data.
orthomosaic (optional). Georeferenced mosaic images created by ODM or Pix4D. Ideally a single, multi-band GeoTiff
other (optional). Anything not included in the other folders (reports, logs etc.)
raw_images (required). Images from a single flight (i.e. images that can be orthorectified to produce a single mosaic). This could also include raw images from e.g. the otter, as long as they are to be stitched together
config.json (required?). I'm still not certain whether this is useful. However, this file could include settings and metadata to control subsequent processing. For example, it could include the Dronelogbook ID (in which case, additional metadata could be extracted via the API during processing), or it might include publication options (e.g. to control whether a dataset is made publicly available on GeoNode). Thoughts?
The general idea is that researchers could organise their data on MinIO more-or-less as they wish, as long as each flight is organised as illustrated above. For example, on MinIO we might have:
niva/
├─ 2022/
│ ├─ runde/
│ │ ├─ more-og-romsdal_remoy_20220831/
│ │ │ ├─ annotation/
│ │ │ ├─ dem/
│ │ │ ├─ gcp/
│ │ │ ├─ ground_truth/
│ │ │ ├─ orthomosaic/
│ │ │ ├─ other/
│ │ │ ├─ raw_images/
│ │ │ ├─ config.json
nina/
├─ 2022/
│ ├─ rogaland_risavika_20220627/
│ │ ├─ dem/
│ │ ├─ gcp/
│ │ ├─ orthomosaic/
│ │ ├─ other/
│ │ ├─ raw_images/
│ │ ├─ config.json
This is just meant as a starting point for discussion. What do you think, @knl88 @deviirmr @awigeon ?
We need to agree on a standard file and folder structure for SeaBee data. This needs to be simple enough to be human-readable (e.g. via the MinIO web interface), but structured enough for processing to be automated. Some considerations:
We should avoid ID codes or unique identifiers in file paths, as these are not human-readable
The system should allow for sensible groupings of data like, for example, the
year => mission => flighthierarchy that is currently used. This will make it easier for people to find what they needWe need to allow for a range of data types and sources (aerial drones, otters, RGB, MS, HS etc.)
The system used by Sindre for seabirds is pretty straightforward and covers everything we need at present (I think). The system originally proposed by NIVA seems unnecessarily complicated.
As a starting point, how about something like this for the data from each flight:
Where:
regionis coarse geographic descriptor (e.g. fylke) andareais more specific (e.g. an island, town or building name).annotation(optional). Contains any relevant annotation not already in the database, such as geopackages etc.dem(optional). Contains elevation datasets generated during orthorectification (DSMs and DTMs etc.).gcp(optional). Ground control points in a standard text format. Note: The format Sindre uses for ODM is slightly different to that used by e.g. Spectrofly for Pix4D. Assuming both are supported by both applications, it would be good to pick one as standard, as then we can easily use ODM to reprocess data from Pix4D etc.ground_truth(optional). Ground truth data.orthomosaic(optional). Georeferenced mosaic images created by ODM or Pix4D. Ideally a single, multi-band GeoTiffother(optional). Anything not included in the other folders (reports, logs etc.)raw_images(required). Images from a single flight (i.e. images that can be orthorectified to produce a single mosaic). This could also include raw images from e.g. the otter, as long as they are to be stitched togetherconfig.json(required?). I'm still not certain whether this is useful. However, this file could include settings and metadata to control subsequent processing. For example, it could include the Dronelogbook ID (in which case, additional metadata could be extracted via the API during processing), or it might include publication options (e.g. to control whether a dataset is made publicly available on GeoNode). Thoughts?The general idea is that researchers could organise their data on MinIO more-or-less as they wish, as long as each flight is organised as illustrated above. For example, on MinIO we might have:
This is just meant as a starting point for discussion. What do you think, @knl88 @deviirmr @awigeon ?