|
1 | 1 | import pytest |
2 | | -from shapely.geometry import Point |
| 2 | +from shapely.geometry import LineString, MultiPolygon, Point, Polygon |
3 | 3 |
|
4 | 4 | from dist_s1_enumerator.exceptions import NoMGRSCoverage |
5 | 5 | from dist_s1_enumerator.mgrs_burst_data import ( |
@@ -161,3 +161,20 @@ def test_all_bursts_in_lut() -> None: |
161 | 161 | df_merged = df_bursts.merge(df_mgrs_lut, on='jpl_burst_id', indicator=True, how='left') |
162 | 162 | burst_ids_not_in_lut = df_merged[df_merged['_merge'] == 'left_only'].jpl_burst_id.unique().tolist() |
163 | 163 | assert len(burst_ids_not_in_lut) == 0 |
| 164 | + |
| 165 | + |
| 166 | +def test_antimeridian_crossing() -> None: |
| 167 | + df_mgrs = get_mgrs_table() |
| 168 | + df_burst = get_burst_table() |
| 169 | + antimeridian_0 = LineString(coordinates=((-180, 90), (-180, -90))).buffer(0.00000001) |
| 170 | + antimeridian_1 = LineString(coordinates=((180, 90), (180, -90))).buffer(0.00000001) |
| 171 | + |
| 172 | + for df in [df_mgrs, df_burst]: |
| 173 | + for antimeridian in [antimeridian_0, antimeridian_1]: |
| 174 | + ind_anti = df.geometry.intersects(antimeridian) |
| 175 | + df_antimerid = df[ind_anti].reset_index(drop=True) |
| 176 | + any_polygons = (df_antimerid.geometry.map(lambda geo: isinstance(geo, Polygon))).sum() |
| 177 | + assert any_polygons == 0 |
| 178 | + df_antimerid_not = df[~ind_anti].reset_index(drop=True) |
| 179 | + any_multis = (df_antimerid_not.geometry.map(lambda geo: isinstance(geo, MultiPolygon))).sum() |
| 180 | + assert any_multis == 0 |
0 commit comments