html_url,issue_url,id,node_id,user,created_at,updated_at,author_association,body,reactions,performed_via_github_app,issue
https://github.com/pydata/xarray/issues/4470#issuecomment-1163460954,https://api.github.com/repos/pydata/xarray/issues/4470,1163460954,IC_kwDOAMm_X85FWQFa,22067021,2022-06-22T18:20:39Z,2022-06-22T18:20:39Z,CONTRIBUTOR,">do you want to add this to the ecosystem page in the docs?
I'd love to! Thanks for the suggestion @keewis! I'll track this in https://github.com/pyvista/pyvista-xarray/issues/21 to contribute after I make my next round of improvements to `pyvista-xarray`","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,710357592
https://github.com/pydata/xarray/issues/4470#issuecomment-1163301046,https://api.github.com/repos/pydata/xarray/issues/4470,1163301046,IC_kwDOAMm_X85FVpC2,14808389,2022-06-22T15:58:34Z,2022-06-22T15:58:46Z,MEMBER,do you want to add this to the ecosystem page in the docs?,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,710357592
https://github.com/pydata/xarray/issues/4470#issuecomment-1159196576,https://api.github.com/repos/pydata/xarray/issues/4470,1159196576,IC_kwDOAMm_X85FF--g,22067021,2022-06-17T20:10:39Z,2022-06-17T20:10:39Z,CONTRIBUTOR,"Following up to mention that I've developed `pyvista-xarray` which provides an interface between `vtkRectilinearGrid`s and xarrays DataArrays via PyVista: https://github.com/pyvista/pyvista-xarray
This is very much in its early stages and I’m hoping to take it quite a bit further. But first, I’d love to gather feedback and find how it works or doesn’t work for the types of data folks have.
At present, this accessor is specifically for rectilinear-style grids but if you have some other types of data, do share so that I can work towards supporting it in `pyvista-xarray` by opening an issue or discussion over there.
(there is limited support for `vtkStructuredGrid`s as well)","{""total_count"": 3, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 3, ""rocket"": 0, ""eyes"": 0}",,710357592
https://github.com/pydata/xarray/issues/4470#issuecomment-1086610757,https://api.github.com/repos/pydata/xarray/issues/4470,1086610757,IC_kwDOAMm_X85AxF1F,72196131,2022-04-02T10:30:44Z,2022-04-02T10:30:44Z,CONTRIBUTOR,Just have to find some time to start.,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,710357592
https://github.com/pydata/xarray/issues/4470#issuecomment-1078791368,https://api.github.com/repos/pydata/xarray/issues/4470,1078791368,IC_kwDOAMm_X85ATQzI,72196131,2022-03-25T08:49:19Z,2022-03-25T08:49:19Z,CONTRIBUTOR,"Ok, so a discussion:-
https://github.com/pyvista/pyvista/discussions/2375","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,710357592
https://github.com/pydata/xarray/issues/4470#issuecomment-1069668665,https://api.github.com/repos/pydata/xarray/issues/4470,1069668665,IC_kwDOAMm_X84_wdk5,14314623,2022-03-16T21:48:21Z,2022-03-16T21:48:21Z,CONTRIBUTOR,"I am very interested in this sort of functionality as an xarray accessor. If I can help in any way, please let me know. Ideally this work would come in very handy to visualize Oxygen Minimum Zones in the global ocean as isosurfaces of a 3D oxygen array.","{""total_count"": 2, ""+1"": 2, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,710357592
https://github.com/pydata/xarray/issues/4470#issuecomment-1069596655,https://api.github.com/repos/pydata/xarray/issues/4470,1069596655,IC_kwDOAMm_X84_wL_v,72196131,2022-03-16T20:31:38Z,2022-03-16T20:31:38Z,CONTRIBUTOR,"e.g. for a Uniform Grid

```python
data = result['density'].reshape(result.dimensions[2],result.dimensions[1],result.dimensions[0])
XC = [result.bounds[0]+200*i for i in range(result.dimensions[0])]
YC = [result.bounds[2]+200*i for i in range(result.dimensions[1])]
ZC = [result.bounds[4]+200*i for i in range(result.dimensions[2])]
da = xr.DataArray(data=data, dims=[""z"", ""y"",""x""], coords={""z"": ZC, ""y"": YC, ""x"": XC})
```

","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,710357592
https://github.com/pydata/xarray/issues/4470#issuecomment-1068478794,https://api.github.com/repos/pydata/xarray/issues/4470,1068478794,IC_kwDOAMm_X84_r7FK,72196131,2022-03-15T21:13:29Z,2022-03-15T21:13:29Z,CONTRIBUTOR,So reversing that would require storing the metadata etc. and whatever the meshgrid reversal is?,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,710357592
https://github.com/pydata/xarray/issues/4470#issuecomment-1068462054,https://api.github.com/repos/pydata/xarray/issues/4470,1068462054,IC_kwDOAMm_X84_r2_m,72196131,2022-03-15T20:52:10Z,2022-03-15T20:52:10Z,CONTRIBUTOR,"I use this sort of thing a lot, anyway. https://banesullivan.com/pyvista/examples/raster.html#sphx-glr-pyvista-examples-raster-py ","{""total_count"": 1, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 1, ""rocket"": 0, ""eyes"": 0}",,710357592
https://github.com/pydata/xarray/issues/4470#issuecomment-1068439766,https://api.github.com/repos/pydata/xarray/issues/4470,1068439766,IC_kwDOAMm_X84_rxjW,72196131,2022-03-15T20:30:49Z,2022-03-15T20:30:49Z,CONTRIBUTOR,"Yes, that sounds good. Definitely be useful to put this in some workflows.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,710357592
https://github.com/pydata/xarray/issues/4470#issuecomment-1068428147,https://api.github.com/repos/pydata/xarray/issues/4470,1068428147,IC_kwDOAMm_X84_rutz,22067021,2022-03-15T20:17:25Z,2022-03-15T20:17:25Z,CONTRIBUTOR,"I think a first step would be to make a data accessor between xarray and VTK/PyVista in accordance with https://xarray.pydata.org/en/stable/internals/extending-xarray.html
This keeps coming up again and again for me. @RichardScottOZ, if you're interested in kicking this off, I'd be happy to chat and help implement this and then outline some future direction for this sort of ""integration""","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,710357592
https://github.com/pydata/xarray/issues/4470#issuecomment-1067899770,https://api.github.com/repos/pydata/xarray/issues/4470,1067899770,IC_kwDOAMm_X84_ptt6,72196131,2022-03-15T11:52:52Z,2022-03-15T11:52:52Z,CONTRIBUTOR,"And again mesh to data array and back, by variety?","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,710357592
https://github.com/pydata/xarray/issues/4470#issuecomment-940952442,https://api.github.com/repos/pydata/xarray/issues/4470,940952442,IC_kwDOAMm_X844Fct6,72196131,2021-10-12T12:09:42Z,2021-10-12T12:09:42Z,CONTRIBUTOR,Ryan what would you start with? I had a use case this week.,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,710357592
https://github.com/pydata/xarray/issues/4470#issuecomment-810683846,https://api.github.com/repos/pydata/xarray/issues/4470,810683846,MDEyOklzc3VlQ29tbWVudDgxMDY4Mzg0Ng==,1197350,2021-03-31T01:22:29Z,2021-03-31T01:22:29Z,MEMBER,"I just saw this very [cool tweet](https://twitter.com/billjameslittle/status/1377064778036822017) about ipyvista / iris integration and it reminded me of this thread.
Are there any clear steps we can take to help advance the vtk / pyvista / xarray integration further?","{""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,710357592
https://github.com/pydata/xarray/issues/4470#issuecomment-727238101,https://api.github.com/repos/pydata/xarray/issues/4470,727238101,MDEyOklzc3VlQ29tbWVudDcyNzIzODEwMQ==,1695496,2020-11-14T17:20:54Z,2020-11-14T17:21:16Z,CONTRIBUTOR,"The same dataset as in that Visualizing_Meshes notebook is also shown in https://examples.pyviz.org/bay_trimesh, which is more self-contained and may be a better starting point.
Also note that VTK and pyvista are well supported by [Panel](http://panel.holoviz.org), as illustrated in various examples at https://panel.holoviz.org/gallery. It would be great to update those examples to include xarray data sources to more fully capture the pipeline from data to display.
I'm not sure what the specific pain points are with UGRID or what specifically is being requested at https://github.com/pyviz-topics/EarthSim/issues/326, but we'd be happy to have examples either in EarthSim or at examples.pyviz.org that start with UGRID datasets and go via Xarray to either 2D or VTK-based 3D visualizations.
","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,710357592
https://github.com/pydata/xarray/issues/4470#issuecomment-727222443,https://api.github.com/repos/pydata/xarray/issues/4470,727222443,MDEyOklzc3VlQ29tbWVudDcyNzIyMjQ0Mw==,1872600,2020-11-14T15:22:49Z,2020-11-14T15:23:28Z,NONE,"Just a note that the only unstructured grid (triangular mesh) example I have is:
http://gallery.pangeo.io/repos/rsignell-usgs/esip-gallery/01_hurricane_ike_water_levels.html
I figured out how to make that notebook from the info at:
https://earthsim.holoviz.org/user_guide/Visualizing_Meshes.html
The ""earthsim"" project was developed by the Holoviz team (@jbednar & co) funded by USACE when @dharhas was there. Would be cool to revive this.
The Holoviz team and USACE might not have been aware of the [UGRID conventions](http://ugrid-conventions.github.io/ugrid-conventions/) when they developed that code, so currently it's a bit awkward to go from a UGRID-compliant NetCDF dataset to visualization with Holoviz (as you can see from the Hurricane Ike notebook). That would be low-hanging fruit for any future effort.
","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,710357592
https://github.com/pydata/xarray/issues/4470#issuecomment-719464990,https://api.github.com/repos/pydata/xarray/issues/4470,719464990,MDEyOklzc3VlQ29tbWVudDcxOTQ2NDk5MA==,4160723,2020-10-30T10:13:35Z,2020-10-30T10:13:35Z,MEMBER,"> if downstream packages or accessor implementers know how to do something useful with these extra coordinates, they are free to do so! The data are there...xarray just doesn't currently make much use of them.
FWIW, we are working on the https://github.com/ESM-VFC/xoak package to easily index and select unstructured data in xarray datasets. This [works well](https://nbviewer.jupyter.org/github/ESM-VFC/xoak/blob/master/examples/basic_examples.ipynb) with multi-dimensional coordinates and xarray's advanced indexing features. Support for custom indexes and chunked (dask) coordinates is coming up too!","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,710357592
https://github.com/pydata/xarray/issues/4470#issuecomment-700670814,https://api.github.com/repos/pydata/xarray/issues/4470,700670814,MDEyOklzc3VlQ29tbWVudDcwMDY3MDgxNA==,1197350,2020-09-29T12:31:42Z,2020-09-29T20:06:51Z,MEMBER,"You can see an example of using xarray with structured curvilinear coordinates here:
- http://xarray.pydata.org/en/stable/examples/multidimensional-coords.html
- http://xarray.pydata.org/en/stable/examples/ROMS_ocean_model.html
And with unstructured data here:
- http://gallery.pangeo.io/repos/rsignell-usgs/esip-gallery/02_National_Water_Model.html
- http://gallery.pangeo.io/repos/rsignell-usgs/esip-gallery/01_hurricane_ike_water_levels.html
The key concept is that xarray supports both *dimensions coordinates* and *non-dimension coordinates*. The dimension coordinates must be 1D, but the non-dimension coordinates can have any dimensionality. For a regular lat-lon grid, a variable might have dimensions like this
```
temp(time, depth, lat, lon)
```
A structured curvilinear 2D grid might instead look like
```
temp(time, depth, j, i)
```
with additional coordinate variables
```
lon(j, i)
lat(j, i)
```
which can be used for visualization (but not, currently, for indexing)
A fully unstructured mesh in 2D would instead look like
```
temp(time, depth, cell_id)
lon(cell_id)
lat(cell_id)
```
This is exactly what netCDF does to encode these data types. Anything that can go into a netCDF file can be represented in Xarray. You just don't get the full functionality in terms of label-based selection. That will hopefully change as we implement more flexible indexing (see https://github.com/pydata/xarray/projects/1).
Another limitation of xarray is that it has no explicit notion of ""cell bounds,"" other than recognizing these as coordinates (see #2844). Our [xgcm](http://xgcm.readthedocs.org/) package works around this limitation in some simple ways.","{""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,710357592
https://github.com/pydata/xarray/issues/4470#issuecomment-700671843,https://api.github.com/repos/pydata/xarray/issues/4470,700671843,MDEyOklzc3VlQ29tbWVudDcwMDY3MTg0Mw==,1197350,2020-09-29T12:33:46Z,2020-09-29T12:33:46Z,MEMBER,"A key point I forgot to make...if downstream packages or [accessor implementers](http://xarray.pydata.org/en/stable/internals.html#extending-xarray) know how to do something useful with these extra coordinates, they are free to do so! The data are there...xarray just doesn't currently make much use of them.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,710357592
https://github.com/pydata/xarray/issues/4470#issuecomment-700500208,https://api.github.com/repos/pydata/xarray/issues/4470,700500208,MDEyOklzc3VlQ29tbWVudDcwMDUwMDIwOA==,12543466,2020-09-29T07:15:49Z,2020-09-29T07:15:49Z,NONE,Thank @banesullivan to bring us to the loop. Is there some example somewhere using xarray for unstructured data or that is exactly what are you going to try next?,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,710357592
https://github.com/pydata/xarray/issues/4470#issuecomment-700184650,https://api.github.com/repos/pydata/xarray/issues/4470,700184650,MDEyOklzc3VlQ29tbWVudDcwMDE4NDY1MA==,22067021,2020-09-28T17:46:21Z,2020-09-28T17:46:21Z,CONTRIBUTOR,"I'm really excited about this effort, thanks @rabernat! One thing I'd like to do before I forget is mention a project from the Software Underground (SWUNG) to create a new `subsurface` package: https://github.com/softwareunderground/subsurface
Over there, we are working to create a set of low-level data structures for sharing spatial data between various subsurface modeling/analysis software (e.g. GemPy, SimPEG, PyGIMLi, Fatiando, Welly, and more) with close ties to PyVista (VTK) for 3D visualization. At present, we are using xarray as the base data container for structured data types. This morning, @rabernat gave me some great insight into how xarray can be used to contain unstructured data as well and so I will be investigating how to do that so we leverage xarray as the base data container all around in `subsurface`. Then with `subsurface`'s close ties to PyVista, there comes a bridge between xarray and VTK (via PyVista).
cc @Leguark and @prisae
This would be a proof of concept for the round-trip data interoperability going between xarray and VTK leaving us with some good lessons on what the value would be of a direct interface between VTK and xarray for better handling of large data and leveraging Dask.
Either way, it'd be awesome to have the `subsurface` development team in the loop here as there appears to be a lot of shared goals","{""total_count"": 3, ""+1"": 3, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,710357592