From 0c7f06568cf68df3bf3fe4378cf53ceb0a9bb8b9 Mon Sep 17 00:00:00 2001 From: Matthew Plant Date: Tue, 30 Apr 2024 18:02:21 -0400 Subject: [PATCH 1/2] Bundle usa geofence into urbanization --- mobile_verifier/src/boosting_oracles/mod.rs | 51 +++++++++------------ mobile_verifier/src/cli/server.rs | 2 +- 2 files changed, 22 insertions(+), 31 deletions(-) diff --git a/mobile_verifier/src/boosting_oracles/mod.rs b/mobile_verifier/src/boosting_oracles/mod.rs index 146ddf59f..452488c8e 100644 --- a/mobile_verifier/src/boosting_oracles/mod.rs +++ b/mobile_verifier/src/boosting_oracles/mod.rs @@ -1,9 +1,6 @@ pub mod assignment; -use crate::{ - geofence::{Geofence, GeofenceValidator}, - Settings, -}; +use crate::Settings; pub use assignment::{Assignment, HexAssignments}; use hextree::disktree::DiskTreeMap; @@ -13,22 +10,17 @@ pub trait BoostedHexAssignments: Send + Sync { pub struct HexBoostData { urbanized: DiskTreeMap, - usa_geofence: Geofence, footfall: DiskTreeMap, landtype: DiskTreeMap, } -pub fn make_hex_boost_data( - settings: &Settings, - usa_geofence: Geofence, -) -> anyhow::Result { +pub fn make_hex_boost_data(settings: &Settings) -> anyhow::Result { let urban_disktree = DiskTreeMap::open(&settings.urbanization_data_set)?; let footfall_disktree = DiskTreeMap::open(&settings.footfall_data_set)?; let landtype_disktree = DiskTreeMap::open(&settings.landtype_data_set)?; let hex_boost_data = HexBoostData { urbanized: urban_disktree, - usa_geofence, footfall: footfall_disktree, landtype: landtype_disktree, }; @@ -51,13 +43,13 @@ impl BoostedHexAssignments for HexBoostData { impl HexBoostData { fn urbanized_assignment(&self, cell: hextree::Cell) -> anyhow::Result { - if !self.usa_geofence.in_valid_region(&cell) { - return Ok(Assignment::C); - } - - match self.urbanized.get(cell)?.is_some() { - true => Ok(Assignment::A), - false => Ok(Assignment::B), + match self.urbanized.get(cell)? { + Some((_, &[1])) => Ok(Assignment::A), + Some((_, &[0])) => Ok(Assignment::B), + None => Ok(Assignment::C), + Some((_, other)) => { + anyhow::bail!("unexpected urbanization disktree data: {cell:?} {other:?}") + } } } @@ -281,15 +273,15 @@ mod tests { // Not Urban - nothing in the map, but in the geofence // Outside - not in the geofence, urbanized hex never considered let mut urbanized = HexTreeMap::::new(); - urbanized.insert(poi_built_urbanized, 0); - urbanized.insert(poi_grass_urbanized, 0); - urbanized.insert(poi_water_urbanized, 0); - urbanized.insert(poi_no_data_built_urbanized, 0); - urbanized.insert(poi_no_data_grass_urbanized, 0); - urbanized.insert(poi_no_data_water_urbanized, 0); - urbanized.insert(no_poi_built_urbanized, 0); - urbanized.insert(no_poi_grass_urbanized, 0); - urbanized.insert(no_poi_water_urbanized, 0); + urbanized.insert(poi_built_urbanized, 1); + urbanized.insert(poi_grass_urbanized, 1); + urbanized.insert(poi_water_urbanized, 1); + urbanized.insert(poi_no_data_built_urbanized, 1); + urbanized.insert(poi_no_data_grass_urbanized, 1); + urbanized.insert(poi_no_data_water_urbanized, 1); + urbanized.insert(no_poi_built_urbanized, 1); + urbanized.insert(no_poi_grass_urbanized, 1); + urbanized.insert(no_poi_water_urbanized, 1); let inside_usa = [ poi_built_urbanized, @@ -311,9 +303,9 @@ mod tests { no_poi_grass_not_urbanized, no_poi_water_not_urbanized, ]; - let geofence_set: HexTreeSet = inside_usa.iter().collect(); - let usa_geofence = Geofence::new(geofence_set, h3o::Resolution::Twelve); - + for inside_usa in inside_usa.into_iter() { + urbanized.entry(inside_usa).or_insert(0); + } // These vectors are a standin for the file system let mut urbanized_buf = vec![]; let mut footfall_buff = vec![]; @@ -331,7 +323,6 @@ mod tests { // Let the testing commence let data = HexBoostData { urbanized, - usa_geofence, footfall, landtype, }; diff --git a/mobile_verifier/src/cli/server.rs b/mobile_verifier/src/cli/server.rs index 3aa382f64..33381f2c8 100644 --- a/mobile_verifier/src/cli/server.rs +++ b/mobile_verifier/src/cli/server.rs @@ -148,7 +148,7 @@ impl Cmd { file_upload.clone(), report_ingest.clone(), auth_client.clone(), - boosting_oracles::make_hex_boost_data(settings, usa_geofence)?, + boosting_oracles::make_hex_boost_data(settings)?, ) .await?, ) From 7f909a1a65104a47e8893dae64bcedc206a28dbc Mon Sep 17 00:00:00 2001 From: Matthew Plant Date: Wed, 1 May 2024 09:25:23 -0400 Subject: [PATCH 2/2] Warning --- mobile_verifier/src/boosting_oracles/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mobile_verifier/src/boosting_oracles/mod.rs b/mobile_verifier/src/boosting_oracles/mod.rs index 452488c8e..5b13f10af 100644 --- a/mobile_verifier/src/boosting_oracles/mod.rs +++ b/mobile_verifier/src/boosting_oracles/mod.rs @@ -165,7 +165,7 @@ mod tests { use std::io::Cursor; - use hextree::{HexTreeMap, HexTreeSet}; + use hextree::HexTreeMap; use super::*;