Comments (3)
Thanks, that's a really interesting point!
generating those logically rectangular curvilinear grids
By "those" are you referring to WRF's three types of map projections, i.e. Lambert conformal, polar stereographic, Mercator (see WRF technical note, 2.4 Map Projections), or the over 100 projections in Proj4? What projections do you typically use?
LCC grid centered on the origin with 3 km grid spacing
My understanding is that a map projection alone cannot define a grid mesh. WRF assumes constant dx and dy in the projected, Cartesian space, which can then be translated to a mesh in the original spherical coordinate. But the spacing is not uniform anymore on the sphere. Thus "3 km grid spacing" is not well defined. Here's a figure from Section 3.2.1 Map projections in Warner, T. T. (2010). Numerical weather and climate prediction:
Indeed, the distortion in grid spacing can be minimized by "using the Mercator projection for grids in tropical latitudes, the polar-stereographic projection for high-latitude grids, and the Lambert-conformal projection for midlatitude grids" (Warner 2010). But in any case the grid spacing will be varying on the sphere. A better API will be passing the total domain size and the resolution?
Also, is the mesh always uniform in the projected space? It is true for WRF but probably not true for all models. I guess for image analysis you can always assume uniform mesh because they are just pixels?
from xesmf.
In terms of dependency & API, I think Cartopy will be a great fit (it also depends on Proj.4, but not pyproj), if there is way to use it for explicit coordinate transform. Passingccrs.LambertConformal(...)
is more intuitive than passing pyproj.Proj(proj='lcc', ...)
, because people already use Cartopy for plotting.
from xesmf.
Thank you for the thorough response and I apologize for my ambiguity!
The map projections I typically use (and so, what I had in mind when I said "those") are the projections used in WRF as you mentioned (especially Lambert conformal) and Albers equal area. But, if this kind of utility could generalize to other projections without too much difficulty, it would make sense to do so.
Also, when I said "3 km grid spacing," I meant it in the projected space in the fashion of WRF, rather than true spacing on the sphere/ellipsoid, since I am indeed assuming a uniform mesh for the pixels in my calculations. Though, I can see now the importance of being careful with this based on what you said. For a grid generation utility like this, would it still be okay to make the assumption of the mesh being uniform in the projected space (so long as this assumption is made clear in documentation)?
Finally, doing this through Cartopy sounds good! When I next get the chance, I can adapt what I have based on the feedback and submit an initial work-in-progress PR if it still seems like something useful.
from xesmf.
Related Issues (20)
- Can I regrid between rectilinear grid and curvilinear grid?
- Install instructions to avoid ImportError failing? HOT 2
- regridder with dask is failing when multi-variables with differing dimensions HOT 1
- xesmf.Regridder(,,method='bilinear') issue
- After conda update, problem with cf_xarray: "Receive multiple variables for key 'longitude': ['i', 'lon']" HOT 4
- installation impossible with anaconda HOT 3
- MOAB support in ESMF 8.1.0 HOT 1
- repo not maintained see https://github.com/pangeo-data/xESMF
- ValueError: Dimensions {'bounds'} do not exist. Expected one or more of ('lon', 'bnds') HOT 1
- Example of interpolating 6 tiles cube-sphere grid to lat-lon grid HOT 2
- Error writing log file HOT 1
- xESMF regridding showing repeated values at latitude poles? HOT 2
- xESMF error after 12+ hour script run in downscaling grid/upsampling data HOT 2
- Misrepresentation of the number of precipitation events HOT 1
- ImportError: The ESMF shared library did not load properly. HOT 1
- How does xesmf treats grid cell with Nan values? HOT 1
- Hi, want to regrid wrfout (rainc+rainnc) data HOT 1
- ModuleNotFoundError: No module named 'ESMF' HOT 6
- ValueError: {'longitude', 'latitude'} are not variables in the underlying object. {'longitude', 'latitude'} are dimensions with no index.
- Using xesmf to efficiently regrid data to another resolution including vertical dimension
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from xesmf.