Queries
Campaigns, Missions, and Recordings
List all recordings with their campaign, mission, platform, and sensor:
SELECT
campaign.name AS campaign,
mission.name AS mission,
recording.name AS recording,
recording.start_date,
recording.end_date,
platform.name AS platform,
sensor.name AS sensor,
sensor.type AS sensor_type
FROM sensordb.campaign
JOIN sensordb.mission ON mission.campaign_id = campaign.id
JOIN sensordb.recording ON recording.mission_id = mission.id
LEFT JOIN sensordb.platform ON recording.platform_id = platform.id
LEFT JOIN sensordb.sensor ON recording.sensor_id = sensor.id
ORDER BY campaign.name, mission.name, recording.name;Trajectories
List all trajectories with their sensor and platform, and reconstruct each as a line geometry:
SELECT
trajectory.id,
sensor.name AS sensor_name,
platform.name AS platform_name,
ST_MakeLine(trajectory_pose.position ORDER BY timestamp_sec ASC, timestamp_nanosec ASC) AS trajectory_line
FROM sensordb.trajectory
JOIN sensordb.trajectory_pose ON trajectory.id = trajectory_pose.trajectory_id
JOIN sensordb.recording ON trajectory.recording_id = recording.id
LEFT JOIN sensordb.sensor ON recording.sensor_id = sensor.id
LEFT JOIN sensordb.platform ON recording.platform_id = platform.id
GROUP BY trajectory.id, sensor.name, platform.id;Point Clouds Summary
List all point clouds with their total cell count and point count:
SELECT
campaign.name AS campaign,
mission.name AS mission,
recording.name AS recording,
point_cloud.name AS point_cloud,
COUNT(point_cloud_cell.id) AS cell_count,
SUM(point_cloud_cell.point_count) AS total_points
FROM sensordb.point_cloud
JOIN sensordb.recording ON point_cloud.recording_id = recording.id
JOIN sensordb.mission ON recording.mission_id = mission.id
JOIN sensordb.campaign ON mission.campaign_id = campaign.id
LEFT JOIN sensordb.point_cloud_cell ON point_cloud_cell.point_cloud_id = point_cloud.id
GROUP BY campaign.name, mission.name, recording.name, point_cloud.id, point_cloud.name
ORDER BY campaign.name, mission.name, recording.name;Point Cloud Cells by Bounding Box
Retrieve all point cloud cells that intersect a 2D bounding box (replace coordinates and SRID as needed):
SELECT
point_cloud_cell.id,
point_cloud_cell.level,
point_cloud_cell.point_count,
point_cloud_cell.cell_envelope
FROM sensordb.point_cloud_cell
WHERE point_cloud_cell.cell_envelope && ST_MakeEnvelope(690000, 5334000, 691000, 5335000, 25832)
ORDER BY point_cloud_cell.level;Point Cloud Attributes
List all attributes stored in a point cloud (replace 1 with the target point_cloud.id):
SELECT * FROM sensordb_pkg.get_point_cloud_attributes(1);Association Coverage
Count how many cells per point cloud have association data:
SELECT
recording.name AS recording,
point_cloud.name AS point_cloud,
COUNT(DISTINCT point_cloud_cell.id) AS total_cells,
COUNT(DISTINCT pcd.point_cloud_cell_id) AS associated_cells
FROM sensordb.point_cloud
JOIN sensordb.recording ON point_cloud.recording_id = recording.id
JOIN sensordb.point_cloud_cell ON point_cloud_cell.point_cloud_id = point_cloud.id
LEFT JOIN sensordb.point_cloud_cell_data AS pcd
ON pcd.point_cloud_cell_id = point_cloud_cell.id
AND pcd.name = 'FeatureGeometryId'
GROUP BY recording.name, point_cloud.id, point_cloud.name
ORDER BY recording.name;Last updated on