pytroll / pytroll/python-geotiepoints
miscalculation in `Interpolator._extrapolate_rows`
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 30
- Forks
- 19
- Avg merge
- 5d 1h
- Merged PRs (30d)
- 5
Description
Hello!
Somehow I was recreating something similar to your modis5kmto1km function, when I realized we were building the same thing I thought let's compare and noticed some differences, so I deconstructed the code behind to understand the differences and I believe I found a major issue into it:
In the modis5kmto1km function I noticed at line 83 (on main) what I believe is the root of the issue:
satint.fill_borders("y", "x") => here
Somehow that line increases the dimensions of your self.tie_data entries containing the x, y, z coordinnates.
A typical 406 x 271 modis latitude 2d array becomes a 812 x 273. Going from 271 to 273 make sense to allow the interpolation of border but I can't get how going from 406 to 812 can make sense.
Especially considering the fact that your self.row_indices (which reflects the increment of the axis been used later in the RectBivariateSpline function), in cahnging in such a way as if it meant one pixel was added to the top border while 405 pixels are added at the bootom of the image.
The culprit to me is the _extrapolate_rows function from your Interpolator class which receives two rows as entry and systematically returns 4 while looping over the rows.
I hope I'm wrong, please correct me if so.
Note, the RectBivariateSpline function support the bbox parameter that would strongly simplify your code by allowing the extrapolation natively.
https://docs.scipy.org/doc/scipy-1.15.0/reference/generated/scipy.interpolate.RectBivariateSpline.html
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 in geotiepoints/init.py at the modis5kmto1km call to fill_borders, then inspect Interpolator._extrapolate_rows and how row_indices are built. Reproduce the reported 406 x 271 input and check the resulting tie-data dimensions and indices; done means the border extrapolation behavior is verified and corrected or clearly explained, with RectBivariateSpline's bbox option assessed.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- data
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100