You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I wonder if it would be in scope for the xvec accessor to have a method that can be used to convert two bounds coordinates to shapely geometry columns?
That would require xvec to broadcast or stack lat and lon, so we might also require doing that first (but ideally, we'd support 2D geometry variables):
Yes creating Xarray geometry variables from coordinate variables is perfectly in the scope of xvec IMO. I'd try to be as generic as possible though, i.e., keep close of shapely's geometry creation functions.
From my understanding of xarray-cf (and CF conventions), the bounds variables are already compatible with shapely's geometry creation API?
From my understanding of xarray-cf (and CF conventions), the bounds variables are already compatible with shapely's geometry creation API?
At the very least I couldn't figure out how to do the transformation when I posted the issue. Looking at the functions again, something like this might work:
Hmm, not sure but shapely.box is a convenient function for creating rectangle polygons? If so, it might be easier here to directly use shapely.polygons (possibly via shapely.linearrings) with (N, 2) arrays of coordinates and also providing indices?
From CF-conventions: cell boundaries, it seems that for (n, 2) bounds shapely.box should be sufficient since the cell can only be rectangular.
There's also the option of having (n, m, p) bounds variables which would allow non-rectangular cells, and for those I guess we'd actually need shapely.polygons.
Implementation-wise I think we could either normalize the bounds to (n, m, 4) and use shapely.polygons, or special-case (n, 2) to use shapely.box (not sure which is easier).
Activity
[-]creating geometry variables[/-][+]creating geometry variables from bounds[/+]benbovy commentedon Dec 8, 2022
Yes creating Xarray geometry variables from coordinate variables is perfectly in the scope of xvec IMO. I'd try to be as generic as possible though, i.e., keep close of shapely's geometry creation functions.
From my understanding of xarray-cf (and CF conventions), the bounds variables are already compatible with shapely's geometry creation API?
keewis commentedon Dec 8, 2022
At the very least I couldn't figure out how to do the transformation when I posted the issue. Looking at the functions again, something like this might work:
(though of course I don't have any experience with
shapelyso I might be missing a better way)benbovy commentedon Dec 8, 2022
Hmm, not sure but
shapely.boxis a convenient function for creating rectangle polygons? If so, it might be easier here to directly use shapely.polygons (possibly viashapely.linearrings) with (N, 2) arrays of coordinates and also providingindices?keewis commentedon Dec 8, 2022
From CF-conventions: cell boundaries, it seems that for
(n, 2)boundsshapely.boxshould be sufficient since the cell can only be rectangular.There's also the option of having
(n, m, p)bounds variables which would allow non-rectangular cells, and for those I guess we'd actually needshapely.polygons.Implementation-wise I think we could either normalize the bounds to
(n, m, 4)and useshapely.polygons, or special-case(n, 2)to useshapely.box(not sure which is easier).dcherian commentedon Jan 18, 2023
Somewhat related see https://cf-xarray.readthedocs.io/en/latest/geometry.html
cc @aulemahal
dcherian commentedon Jul 18, 2024
xarray-contrib/cf-xarray#478 solves this I think and just needs some tests to be complete