@@ -561,6 +561,26 @@ def handle_geo_coverage():
561
561
562
562
return execute_query (q .query , q .params , fields_string , [], [])
563
563
564
+ @bp .route ("/indicator_geo_coverage" , methods = ("GET" , "POST" ))
565
+ def handle_indicator_geo_coverage ():
566
+ source_signal_sets = parse_source_signal_sets ()
567
+ source_signal_sets = restrict_by_roles (source_signal_sets )
568
+ source_signal_sets , alias_mapper = create_source_signal_alias_mapper (source_signal_sets )
569
+
570
+ q = QueryBuilder ("coverage_crossref_v" , "c" )
571
+ fields_string = ["geo_type" , "geo_value" ]
572
+
573
+ q .set_fields (fields_string )
574
+
575
+ q .apply_source_signal_filters ("source" , "signal" , source_signal_sets )
576
+ q .set_sort_order ("geo_type" , "geo_value" )
577
+ q .group_by = ["c." + field for field in fields_string ] # this condenses duplicate results, similar to `SELECT DISTINCT`
578
+
579
+ def transform_row (row , proxy ):
580
+ return f"{ row ['geo_type' ]} :{ row ['geo_value' ]} "
581
+
582
+ return execute_query (q .query , q .params , fields_string , [], [], transform = transform_row )
583
+
564
584
@bp .route ("/anomalies" , methods = ("GET" , "POST" ))
565
585
def handle_anomalies ():
566
586
"""
0 commit comments