Skip to content

Commit 72b348e

Browse files
committed
adding aqi
1 parent 7f5271b commit 72b348e

File tree

2 files changed

+75
-29
lines changed

2 files changed

+75
-29
lines changed

_posts/2023-03-02-building-street-view-alternative-for-the-outdoors-part-2.md

Lines changed: 59 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -159,61 +159,91 @@ And some that are auto assigned;
159159
160160
* `uuid`: Trek View Sequence ID
161161
* `owner_uuid`: Trek View user ID of Sequence owner
162-
* `mapillary_id`
162+
* `mapillary.id`
163163
* data.sequence: string, ID of the sequence, which is a group of images captured in succession.
164-
* `mapillary_make`
164+
* `mapillary.make`
165165
* data.make: string, the manufacturer name of the camera device.
166-
* `mapillary_model`
166+
* `mapillary.model`
167167
* data.model: string, the model or product series name of the camera device.
168-
* `mapillary_height`
168+
* `mapillary.height`
169169
* data.height: int, height of the original image uploaded.
170-
* `mapillary_width`
170+
* `mapillary.width`
171171
* data.height: int, width of the original image uploaded.
172-
* `mapillary_is_pano` (should always be true)
172+
* `mapillary.is_pano` (should always be true)
173173
* data.is_pano: boolean, a true or false indicator for whether an image is 360 degree panorama.
174-
* `calculated_distance_meters`: (sum of distance between all ordered points in sequence, e.g. image 1 -> 2 -> 3)
175-
* `calculated_max_altitude_meters`: (image with highest mapillary_altitude)
176-
* `calculated_min_altitude_meters`: (image with lowest mapillary_altitude)
177-
* `calculated_elevation_change_meters`: (= calculated_max_altitude_meters - calculated_min_altitude_meters)
178-
* `calculated_average_speed_meters_second`: (speed = distance/time)
179-
* `calculated_sequence_bounding_box`: (discussed in part 1)
180-
* `calculated_nortern_hemisphere_season`: (spring, summer, autumn, winter)
181-
* `image_first_datetime`: timestamp of first image in sequence
182-
* `image_last_datetime`: timestamp of last image in sequence
174+
* `calculated.distance_meters`: (sum of distance between all ordered points in sequence, e.g. image 1 -> 2 -> 3)
175+
* `calculated.max_altitude_meters`: (image with highest mapillary_altitude)
176+
* `calculated.min_altitude_meters`: (image with lowest mapillary_altitude)
177+
* `calculated.elevation_change_meters`: (= calculated_max_altitude_meters - calculated_min_altitude_meters)
178+
* `calculated.average_speed_meters_second`: (speed = distance/time)
179+
* `calculated.sequence_bounding_box`: (discussed in part 1)
180+
* `calculated.nortern_hemisphere_season`: (spring, summer, autumn, winter)
181+
* `image.first_datetime`: timestamp of first image in sequence
182+
* `image.first_coordinates`: co-ordinated of first image
183+
* `image.last_datetime`: timestamp of last image in sequence
184+
* `image.last_coordinates`: co-ordinated of last image
185+
* `weather.temperature_celsius`
186+
* `weather.wind_speed_kmh`
187+
* `weather.wind_direction_degrees`
188+
* `weather.weather_descriptions`
189+
* `weather.precipitation_mm`
190+
* `weather.humidity_pc`
191+
* `weather.visibility_km`
192+
* `weather.pressure_millibar`
193+
* `weather.cloudcover_pc`
194+
* `weather.heatindex_celsius`
195+
* `weather.dewpoint_celsius`
196+
* `weather.windchill_celsius`
197+
* `weather.windgust_kmh`
198+
* `weather.feelslike_celsius`
199+
* `weather.uv_index_celsius`
200+
* `air_quality.aqi`
201+
* `air_quality.co`
202+
* `air_quality.no`
203+
* `air_quality.no2`
204+
* `air_quality.o3`
205+
* `air_quality.so2`
206+
* `air_quality.pm2_5`
207+
* `air_quality.pm10`
208+
* `air_quality.nh3`
183209
* `favourited_user_ids`: (a list of user IDs who have marked the sequence as a favourite)
184210
185211
Note, the assumption here is that the photo values (make, model, height and width) are the same for all images in the sequence, which is true in the way we import images as sequences.
186212
213+
All `weather.` data is pulled from hourly weather information using `image.first_datetime` and `image.first_coordinates` of the first photo in sequence. Data is pulled from WeatherStack ([as described here](/blog/historic-weather-data-lookup)).
214+
215+
All `air_quality.` data is pulled from the OpenWeather Air Pollution API using `image.first_datetime` and `image.first_coordinates` of the first photo in sequence. Also described in ([this post](/blog/historic-weather-data-lookup)).
216+
187217
For each sequence one or more image. For each image we hold the following data that is all auto-assigned
188218
189219
* `uuid`: Trek View Image ID
190220
* `owner_uuid`: Trek View user ID of Imgae owner
191221
* `sequence_uuid`: The sequence ID the image belongs too
192-
* `mapillary_id`
222+
* `mapillary.id`
193223
* data.id: string, ID of the image
194-
* `mapillary_altitude`
224+
* `mapillary.altitude`
195225
* data.altitude: float, original altitude from camera Exif calculated from sea level.
196-
* `mapillary_captured_at`
226+
* `mapillary.captured_at`
197227
* data.captured_at: timestamp, capture time.
198-
* `mapillary_compass_angle`
228+
* `mapillary.compass_angle`
199229
* data.compass_angle: float, original compass angle of the image.
200-
* `mapillary_geometry_coordinates`
230+
* `mapillary.geometry_coordinates`
201231
* data.geometry.coordinates: GeoJSON Point geometry.
202-
* `mapillary_computed_altitude`
232+
* `mapillary.computed_altitude`
203233
* data.computed_altitude: float, altitude after running image processing, from sea level.
204-
* `mapillary_computed_compass_angle`
234+
* `mapillary.computed_compass_angle`
205235
* data.computed_compass_angle: float, compass angle after running image processing.
206-
* `mapillary_computed_coordinates`
236+
* `mapillary.computed_coordinates`
207237
* data.computed_geometry.coordinates: GeoJSON Point, location after running image processing.
208-
* `mapillary_computed_rotation`
238+
* `mapillary.computed_rotation`
209239
* data.computed_rotation: enum, corrected orientation of the image.
210-
* `mapillary_thumb_original_url` (seems to be full size image, not thumbnail -- the name is confusing)
240+
* `mapillary.thumb_original_url` (seems to be full size image, not thumbnail -- the name is confusing)
211241
* data.thumb_original_url: string, URL to the original wide thumbnail.
212-
* `mapillary_thumb_256_url`
242+
* `mapillary.thumb_256_url`
213243
* data.thumb_256_url: string, URL to the 256px wide thumbnail.
214-
* `mapillary_thumb_1024_url`
244+
* `mapillary.thumb_1024_url`
215245
* data.thumb_1024_url: string, URL to the 1024px wide thumbnail.
216-
* `mapillary_thumb_2048_url`
246+
* `mapillary.thumb_2048_url`
217247
* data.thumb_2048_url: string, URL to the 2048px wide thumbnail.
218248
* `favourited_user_ids` (a list of user IDs who have marked the image viewpoint)
219249
@@ -327,4 +357,4 @@ Though that wasn't the aim of these posts. I wanted to see if I could build a St
327357
328358
No money was a little ambitious, although a small VPS would probably be more than adequate for the implementation described above, but actually building this thing seems totally possible.
329359
330-
Watch this space...
360+
In the next post I'll show you some early designs...
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
---
2+
date: 2023-03-16
3+
title: "Building a Street View Alternative for Exploration... with no money (part 3)"
4+
description: ""
5+
categories: developers
6+
tags: [YouTube, Meta, Mapillary, Facebook, GoPro, OpenSFM]
7+
author_staff_member: dgreenwood
8+
image: /assets/images/blog/2023-03-16/
9+
featured_image: /assets/images/blog/2023-03-16/
10+
layout: post
11+
published: false
12+
redirect_from:
13+
-
14+
---
15+
16+

0 commit comments

Comments
 (0)