|
20 | 20 |
|
21 | 21 | _SUPPORTED_GRID_DEFINITIONS = (0, 1, 5, 10, 12, 20, 30, 40, 90, 140)
|
22 | 22 |
|
| 23 | +# Alias names for eccodes spatial computed keys. |
| 24 | +KEY_ALIAS = { |
| 25 | + 'latitude': 'latitudes', |
| 26 | + 'longitude': 'longitudes', |
| 27 | + 'latitudes': 'latitude', |
| 28 | + 'longitudes': 'longitude', |
| 29 | +} |
| 30 | + |
23 | 31 |
|
24 | 32 | class _OpenFileRef:
|
25 | 33 | """
|
@@ -404,12 +412,18 @@ def __getitem__(self, key):
|
404 | 412 | if key not in self._cache:
|
405 | 413 | if key == 'numberOfSection':
|
406 | 414 | value = self._number
|
407 |
| - elif key not in self._keys: |
408 |
| - raise KeyError('{!r} not defined in section {}'.format( |
409 |
| - key, self._number)) |
410 | 415 | else:
|
| 416 | + if key not in self._keys: |
| 417 | + key2 = KEY_ALIAS.get(key) |
| 418 | + if key2 and key2 in self._keys: |
| 419 | + key = key2 |
| 420 | + else: |
| 421 | + emsg = f"{key} not defined in section {self._number}" |
| 422 | + raise KeyError(emsg) |
411 | 423 | value = self._get_key_value(key)
|
| 424 | + |
412 | 425 | self._cache[key] = value
|
| 426 | + |
413 | 427 | return self._cache[key]
|
414 | 428 |
|
415 | 429 | def __setitem__(self, key, value):
|
@@ -437,6 +451,7 @@ def _get_key_value(self, key):
|
437 | 451 | 'satelliteNumber', 'instrumentType',
|
438 | 452 | 'scaleFactorOfCentralWaveNumber',
|
439 | 453 | 'scaledValueOfCentralWaveNumber',
|
| 454 | + 'longitude', 'latitude', |
440 | 455 | 'longitudes', 'latitudes')
|
441 | 456 | if key in vector_keys:
|
442 | 457 | res = eccodes.codes_get_array(self._message_id, key)
|
|
0 commit comments