-
Notifications
You must be signed in to change notification settings - Fork 48
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Adding logically rectangular curvilinear grid generation to xesmf.util #42
Comments
Thanks, that's a really interesting point!
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?
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? |
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. Passing |
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. |
I’m new to using xESMF, and I’ve been finding it very useful in my research workflow, particularly in regridding from lat-lon coordinates to a conformal or equal area projection in order to perform image analysis. So, thank you for all your work!
One utility I’ve had to write myself, however, is generating those logically rectangular curvilinear grids to supply to xESMF. I think this could be a useful utility for more than just my own work, and so, would something like this be within scope to add to
xesmf.util
alongsidegrid_2d()
?If so, I’d be glad to submit a PR, but there could be a couple issues to discuss. First, I’ve been using
pyproj
to handle the projections and coordinate transformations. And so, would having that as an optional dependency be acceptable? (I could also implement it using another CRS handling library, butpyproj
seemed simplest as I was working on it.) Second, I’m not sure what the best API would be for this utility. Perhaps something liketo create a 850x600 LCC grid centered on the origin with 3 km grid spacing?
The text was updated successfully, but these errors were encountered: