Skip to content

Commit b1f1dbd

Browse files
committed
introduce grid metadata
1 parent 93927e2 commit b1f1dbd

4 files changed

Lines changed: 25 additions & 13 deletions

File tree

blitzortung/geom.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,15 +91,14 @@ def __repr__(self):
9191
class Grid(Envelope):
9292
""" grid characteristics"""
9393

94-
__slots__ = ['x_div', 'y_div', '__x_bin_count', '__y_bin_count', '_baselength']
94+
__slots__ = ['x_div', 'y_div', '__x_bin_count', '__y_bin_count']
9595

96-
def __init__(self, x_min, x_max, y_min, y_max, x_div, y_div, baselength, srid=Geometry.default_srid):
96+
def __init__(self, x_min, x_max, y_min, y_max, x_div, y_div, srid=Geometry.default_srid):
9797
super().__init__(x_min, x_max, y_min, y_max, srid)
9898
self.x_div = x_div
9999
self.y_div = y_div
100100
self.__x_bin_count = None
101101
self.__y_bin_count = None
102-
self._baselength = baselength
103102

104103
def get_x_bin(self, x_pos):
105104
return int(math.ceil(float(x_pos - self.x_min) / self.x_div)) - 1
@@ -168,7 +167,7 @@ def get_for(self, base_length):
168167
max_lat = self.fix_max(self.min_lat, self.max_lat, delta_lat)
169168

170169
self.grid_data[base_length] = Grid(self.min_lon, max_lon, self.min_lat, max_lat,
171-
delta_lon, delta_lat, base_length,
170+
delta_lon, delta_lat,
172171
Geometry.default_srid)
173172

174173
return self.grid_data[base_length]

blitzortung/service/strike_grid.py

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,19 @@
2828
from .. import db
2929

3030

31+
@dataclass(frozen=True)
32+
class GridMetadata:
33+
base_length: int
34+
region: Optional[int] = None
35+
36+
3137
class StrikeGridState(TimingState):
32-
__slots__ = ['grid_parameters', 'time_interval']
38+
__slots__ = ['grid_parameters', 'grid_metadata', 'time_interval']
3339

34-
def __init__(self, statsd_client, grid_parameters, time_interval):
40+
def __init__(self, statsd_client, grid_parameters, grid_metadata, time_interval):
3541
super().__init__("strikes_grid", statsd_client)
3642
self.grid_parameters = grid_parameters
43+
self.grid_metadata = grid_metadata
3744
self.time_interval = time_interval
3845

3946

@@ -42,10 +49,11 @@ class StrikeGridQuery:
4249
def __init__(self, strike_query_builder: db.query_builder.Strike):
4350
self.strike_query_builder = strike_query_builder
4451

45-
def create(self, grid_parameters, minute_length, minute_offset, count_threshold, connection, statsd_client):
52+
def create(self, grid_parameters, grid_metadata, minute_length, minute_offset, count_threshold, connection,
53+
statsd_client):
4654
time_interval = create_time_interval(minute_length, minute_offset)
4755

48-
state = StrikeGridState(statsd_client, grid_parameters, time_interval)
56+
state = StrikeGridState(statsd_client, grid_parameters, grid_metadata, time_interval)
4957

5058
query = self.strike_query_builder.grid_query(db.table.Strike.table_name, grid_parameters,
5159
time_interval=time_interval, count_threshold=count_threshold)
@@ -92,6 +100,10 @@ def build_grid_response(results, state):
92100
histogram_data = results[1]
93101

94102
state.log_gauge('strikes_grid.size', len(grid_data) if grid_data else 0)
103+
state.log_gauge(f'strikes_grid.size.{state.grid_metadata.baselength}', len(grid_data))
104+
if state.grid_metadata.region is None:
105+
state.log_gauge('local_strikes_grid.size', len(grid_data) if grid_data else 0)
106+
state.log_gauge(f'local_strikes_grid.size.baselength.{state.grid_metadata.baselength}', len(grid_data))
95107
state.log_incr('strikes_grid')
96108

97109
grid_parameters = state.grid_parameters
@@ -118,10 +130,11 @@ class GlobalStrikeGridQuery:
118130
def __init__(self, strike_query_builder: db.query_builder.Strike):
119131
self.strike_query_builder = strike_query_builder
120132

121-
def create(self, grid_parameters, minute_length, minute_offset, count_threshold, connection, statsd_client):
133+
def create(self, grid_parameters, grid_metadata, minute_length, minute_offset, count_threshold, connection,
134+
statsd_client):
122135
time_interval = create_time_interval(minute_length, minute_offset)
123136

124-
state = StrikeGridState(statsd_client, grid_parameters, time_interval)
137+
state = StrikeGridState(statsd_client, grid_parameters, grid_metadata, time_interval)
125138

126139
query = self.strike_query_builder.global_grid_query(db.table.Strike.table_name, grid_parameters,
127140
time_interval=time_interval,
@@ -168,7 +181,7 @@ def build_grid_response(results, state):
168181
histogram_data = results[1]
169182

170183
state.log_gauge('global_strikes_grid.size', len(grid_data))
171-
state.log_gauge(f'global_strikes_grid.size.{state.grid_parameters.baselength}', len(grid_data))
184+
state.log_gauge(f'global_strikes_grid.size.{state.grid_metadata.baselength}', len(grid_data))
172185
state.log_incr('global_strikes_grid')
173186

174187
grid_parameters = state.grid_parameters

tests/db/test_db_query.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ def test_add_parameters(self):
225225

226226
class GridQueryTest(TestCase):
227227
def test_with_raster(self):
228-
raster = blitzortung.geom.Grid(-10, 20, 15, 35, 1.5, 1, 5000)
228+
raster = blitzortung.geom.Grid(-10, 20, 15, 35, 1.5, 1)
229229

230230
query = blitzortung.db.query.GridQuery(raster)
231231
query.set_table_name('strikes')

tests/test_geom.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ def test_str(self):
102102

103103
class TestGrid(TestCase):
104104
def setUp(self):
105-
self.grid = blitzortung.geom.Grid(-5, 4, -3, 2, 0.5, 1.25, 5000)
105+
self.grid = blitzortung.geom.Grid(-5, 4, -3, 2, 0.5, 1.25)
106106

107107
def test_get_x_div(self):
108108
assert_that(self.grid.x_div).is_equal_to(0.5)

0 commit comments

Comments
 (0)