|
233 | 233 | "EFI_TCT16": (
|
234 | 234 | "https://earth.esa.int/eogateway/documents/20142/37627/swarm-EFI-TII-cross-track-flow-dataset-release-notes.pdf",
|
235 | 235 | ),
|
| 236 | + "DNS_POD": ("https://swarmhandbook.earth.esa.int/catalogue/SW_DNSxPOD_2_",), |
| 237 | + "DNS_ACC": ("https://swarmhandbook.earth.esa.int/catalogue/SW_DNSxACC_2_",), |
| 238 | + "DNS_ACC_CHAMP": ("https://swarmhandbook.earth.esa.int/catalogue/CH_DNS_ACC_2_",), |
| 239 | + "DNS_ACC_GRACE": ("https://swarmhandbook.earth.esa.int/catalogue/GR_DNSxACC_2_",), |
| 240 | + "DNS_ACC_GFO": ("https://swarmhandbook.earth.esa.int/catalogue/GF_DNSxACC_2_",), |
| 241 | + "WND_ACC_CHAMP": ("https://swarmhandbook.earth.esa.int/catalogue/CH_WND_ACC_2_",), |
| 242 | + "WND_ACC_GRACE": ("https://swarmhandbook.earth.esa.int/catalogue/GR_WNDxACC_2_",), |
| 243 | + "WND_ACC_GFO": ("https://swarmhandbook.earth.esa.int/catalogue/GF_WNDxACC_2_",), |
| 244 | + "MM_CON_EPH_2_": ("https://swarmhandbook.earth.esa.int/catalogue/MM_CON_EPH_2_",), |
236 | 245 | }
|
237 | 246 | for mission in ("SW", "OR", "CH", "CR", "CO"):
|
238 | 247 | for cadence in ("1M", "4M"):
|
@@ -493,6 +502,14 @@ class SwarmRequest(ClientRequest):
|
493 | 502 | (("Swarm", "A"), ("Swarm", "B")),
|
494 | 503 | }
|
495 | 504 |
|
| 505 | + FILE_OPTIONS = { |
| 506 | + "MM_CON_EPH_2_:crossover": { |
| 507 | + "time_variable": "time_1", |
| 508 | + "secondary_time_variables": ["time_2"], |
| 509 | + }, |
| 510 | + "MM_CON_EPH_2_:plane_alignment": {"time_variable": "time"}, |
| 511 | + } |
| 512 | + |
496 | 513 | COLLECTIONS = {
|
497 | 514 | "MAG": [
|
498 | 515 | *(f"SW_OPER_MAG{x}_LR_1B" for x in "ABC"),
|
@@ -635,6 +652,19 @@ class SwarmRequest(ClientRequest):
|
635 | 652 | *(f"SW_OPER_MOD{x}_SC_1B" for x in "ABC"),
|
636 | 653 | *(f"SW_FAST_MOD{x}_SC_1B" for x in "ABC"),
|
637 | 654 | ],
|
| 655 | + # Swarm thermospheric density products: |
| 656 | + "DNS_POD": [f"SW_OPER_DNS{spacecraft}POD_2_" for spacecraft in "ABC"], |
| 657 | + "DNS_ACC": [f"SW_OPER_DNS{spacecraft}ACC_2_" for spacecraft in "ABC"], |
| 658 | + # TOLEOS thermospheric density and crosswind products: |
| 659 | + "DNS_ACC_CHAMP": ["CH_OPER_DNS_ACC_2_"], |
| 660 | + "DNS_ACC_GRACE": ["GR_OPER_DNS1ACC_2_", "GR_OPER_DNS2ACC_2_"], |
| 661 | + "DNS_ACC_GFO": ["GF_OPER_DNS1ACC_2_"], # empty GF_OPER_DNS2ACC_2_ exists |
| 662 | + "WND_ACC_CHAMP": ["CH_OPER_WND_ACC_2_"], |
| 663 | + "WND_ACC_GRACE": ["GR_OPER_WND1ACC_2_", "GR_OPER_WND2ACC_2_"], |
| 664 | + "WND_ACC_GFO": ["GF_OPER_WND1ACC_2_"], # empty GF_OPER_WND2ACC_2_ exists |
| 665 | + # TOLEOS conjunctions |
| 666 | + "MM_CON_EPH_2_:crossover": ["MM_OPER_CON_EPH_2_:crossover"], |
| 667 | + "MM_CON_EPH_2_:plane_alignment": ["MM_OPER_CON_EPH_2_:plane_alignment"], |
638 | 668 | }
|
639 | 669 |
|
640 | 670 | OBS_COLLECTIONS = [
|
@@ -709,6 +739,16 @@ class SwarmRequest(ClientRequest):
|
709 | 739 | "MIT_TEC:ID": "PT20M",
|
710 | 740 | "PPI_FAC": "PT20M",
|
711 | 741 | "PPI_FAC:ID": "PT20M",
|
| 742 | + "DNS_POD": "PT30S", |
| 743 | + "DNS_ACC": "PT10S", |
| 744 | + "DNS_ACC_CHAMP": "PT10S", |
| 745 | + "DNS_ACC_GRACE": "PT10S", |
| 746 | + "DNS_ACC_GFO": "PT10S", |
| 747 | + "WND_ACC_CHAMP": "PT10S", |
| 748 | + "WND_ACC_GRACE": "PT10S", |
| 749 | + "WND_ACC_GFO": "PT10S", |
| 750 | + "MM_CON_EPH_2_:crossover": "PT20M", |
| 751 | + "MM_CON_EPH_2_:plane_alignment": "P1D", |
712 | 752 | }
|
713 | 753 |
|
714 | 754 | PRODUCT_VARIABLES = {
|
@@ -1132,6 +1172,107 @@ class SwarmRequest(ClientRequest):
|
1132 | 1172 | "Longitude_QD",
|
1133 | 1173 | ],
|
1134 | 1174 | "MOD_SC": [],
|
| 1175 | + "DNS_POD": [ |
| 1176 | + "Height_GD", |
| 1177 | + "Latitude_GD", |
| 1178 | + "Longitude_GD", |
| 1179 | + "Height_GD", |
| 1180 | + "local_solar_time", |
| 1181 | + "density", |
| 1182 | + "density_orbitmean", |
| 1183 | + "validity_flag", |
| 1184 | + ], |
| 1185 | + "DNS_ACC": [ |
| 1186 | + "Height_GD", |
| 1187 | + "Latitude_GD", |
| 1188 | + "Longitude_GD", |
| 1189 | + "Height_GD", |
| 1190 | + "density", |
| 1191 | + "local_solar_time", |
| 1192 | + ], |
| 1193 | + "DNS_ACC_CHAMP": [ |
| 1194 | + "Height_GD", |
| 1195 | + "Latitude_GD", |
| 1196 | + "Longitude_GD", |
| 1197 | + "density", |
| 1198 | + "density_orbitmean", |
| 1199 | + "local_solar_time", |
| 1200 | + "validity_flag", |
| 1201 | + "validity_flag_orbitmean", |
| 1202 | + ], |
| 1203 | + "DNS_ACC_GRACE": [ |
| 1204 | + "Height_GD", |
| 1205 | + "Latitude_GD", |
| 1206 | + "Longitude_GD", |
| 1207 | + "density", |
| 1208 | + "density_orbitmean", |
| 1209 | + "local_solar_time", |
| 1210 | + "validity_flag", |
| 1211 | + "validity_flag_orbitmean", |
| 1212 | + ], |
| 1213 | + "DNS_ACC_GFO": [ |
| 1214 | + "Height_GD", |
| 1215 | + "Latitude_GD", |
| 1216 | + "Longitude_GD", |
| 1217 | + "density", |
| 1218 | + "density_orbitmean", |
| 1219 | + "local_solar_time", |
| 1220 | + "validity_flag", |
| 1221 | + "validity_flag_orbitmean", |
| 1222 | + ], |
| 1223 | + "WND_ACC_CHAMP": [ |
| 1224 | + "Height_GD", |
| 1225 | + "Latitude_GD", |
| 1226 | + "Longitude_GD", |
| 1227 | + "crosswind", |
| 1228 | + "crosswind_direction", |
| 1229 | + "local_solar_time", |
| 1230 | + "validity_flag", |
| 1231 | + ], |
| 1232 | + "WND_ACC_GRACE": [ |
| 1233 | + "Height_GD", |
| 1234 | + "Latitude_GD", |
| 1235 | + "Longitude_GD", |
| 1236 | + "crosswind", |
| 1237 | + "crosswind_direction", |
| 1238 | + "local_solar_time", |
| 1239 | + "validity_flag", |
| 1240 | + ], |
| 1241 | + "WND_ACC_GFO": [ |
| 1242 | + "Height_GD", |
| 1243 | + "Latitude_GD", |
| 1244 | + "Longitude_GD", |
| 1245 | + "crosswind", |
| 1246 | + "crosswind_direction", |
| 1247 | + "local_solar_time", |
| 1248 | + "validity_flag", |
| 1249 | + ], |
| 1250 | + "MM_CON_EPH_2_:crossover": [ |
| 1251 | + "time_1", |
| 1252 | + "time_2", |
| 1253 | + "time_difference", |
| 1254 | + "satellite_1", |
| 1255 | + "satellite_2", |
| 1256 | + "latitude", |
| 1257 | + "longitude", |
| 1258 | + "altitude_1", |
| 1259 | + "altitude_2", |
| 1260 | + "magnetic_latitude", |
| 1261 | + "magnetic_longitude", |
| 1262 | + "local_solar_time_1", |
| 1263 | + "local_solar_time_2", |
| 1264 | + ], |
| 1265 | + "MM_CON_EPH_2_:plane_alignment": [ |
| 1266 | + "time", |
| 1267 | + "altitude_1", |
| 1268 | + "altitude_2", |
| 1269 | + "ltan_1", |
| 1270 | + "ltan_2", |
| 1271 | + "ltan_rate_1", |
| 1272 | + "ltan_rate_2", |
| 1273 | + "satellite_1", |
| 1274 | + "satellite_2", |
| 1275 | + ], |
1135 | 1276 | }
|
1136 | 1277 |
|
1137 | 1278 | AUXILIARY_VARIABLES = [
|
@@ -1559,6 +1700,13 @@ def set_collection(self, *args, verbose=True):
|
1559 | 1700 | self._detect_AUX_OBS(collections)
|
1560 | 1701 | self._collection_list = collections
|
1561 | 1702 | self._request_inputs.set_collections(collections)
|
| 1703 | + |
| 1704 | + # type specific file options |
| 1705 | + self._file_options = ( |
| 1706 | + self.FILE_OPTIONS.get(self._available["collections_to_keys"][collection]) |
| 1707 | + or {} |
| 1708 | + ) |
| 1709 | + |
1562 | 1710 | return self
|
1563 | 1711 |
|
1564 | 1712 | def set_products(
|
|
0 commit comments