Index Error when calling `boundary` with non full disk geos ara
Open
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 385
- Forks
- 102
- Avg merge
- 4d 2h
- Merged PRs (30d)
- 9
Description
When trying to get the boundary of a non full disk geostationaryAreaDefinition currently an IndexError will be thrown.
from satpy.resample import get_area_def
goes_east = get_area_def("goes_east_abi_c_1km")
goes_east.boundary()
Expected Output
The boundary lons/lats should be returned as in the full disk case.
Actual Result, Traceback if applicable
IndexError Traceback (most recent call last)
Cell In[3], line 5
1 from satpy.resample import get_area_def
3 goes_east = get_area_def("goes_east_abi_c_1km")
----> 5 goes_east.boundary()
File /dev/pytroll/pyresample/pyresample/geometry.py:1614, in AreaDefinition.boundary(self, frequency, force_clockwise)
1612 from pyresample.boundary import AreaBoundary
1613 if self.is_geostationary:
-> 1614 lon_sides, lat_sides = self._get_geo_boundary_sides(frequency=frequency)
1615 else:
1616 lon_sides, lat_sides = self.get_bbox_lonlats(frequency=frequency,
1617 force_clockwise=force_clockwise)
File /dev/pytroll/pyresample/pyresample/geometry.py:1585, in AreaDefinition._get_geo_boundary_sides(self, frequency)
1580 # Retrieve dummy sides for GEO (side1 and side3 always of length 2)
1581 side02_step = int(frequency / 2) - 1
1582 lon_sides = [lons[slice(0, side02_step + 1)],
1583 lons[slice(side02_step, side02_step + 1 + 1)],
1584 lons[slice(side02_step + 1, side02_step * 2 + 1 + 1)],
-> 1585 np.append(lons[side02_step * 2 + 1], lons[0])
1586 ]
1587 lat_sides = [lats[slice(0, side02_step + 1)],
1588 lats[slice(side02_step, side02_step + 1 + 1)],
1589 lats[slice(side02_step + 1, side02_step * 2 + 1 + 1)],
1590 np.append(lats[side02_step * 2 + 1], lats[0])
1591 ]
1592 return lon_sides, lat_sides
IndexError: index 49 is out of bounds for axis 0 with size 7
Versions of Python, package at hand and relevant dependencies
Python: 3.10.8
Pyresample: v1.27.1
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with pyresample/geometry.py, especially AreaDefinition.boundary and _get_geo_boundary_sides, then reproduce the issue with the provided goes_east_abi_c_1km example. Check the boundary path for non-full-disk geostationary areas and verify that boundary() returns longitude and latitude sides without an IndexError.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- data
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 42/100