pyart
pyart copied to clipboard
Mapping of satellite borne Doppler radar data
Based on my question in the mailing list and this reference - https://journals.ametsoc.org/doi/pdf/10.1175/1520-0426%281994%29011%3C0572%3AMOADRD%3E2.0.CO%3B2 I do not understand why mapping (or interpolating) satellite borne Doppler radar data(for e.g. GPM precipitation radar) into a Cartesian coordinate system would not be part of PyArt. NCAR currently has two tools for this - REORDER and SPRINT but they are not being maintained right now. Any interest in adding this functionality to PyArt ?
Hey @winash12 ! Why no code for GPM? Just because no one has submitted code yet. The core developers are DoE funded and the project enjoys DoE support so Scanning radars similar to the ones ARM uses are our focus. We will keep this open as an indication there is interest.
@scollis Thanks for adding this as an enhancement. Please correct me if I am wrong but the functionality /implementation code required for GPM should be a subset of the airborne borne Doppler radar given that the satellite moves in a constant trajectory around the earth unlike an aeroplane. An aeroplane conceivably could be involved in a motion that could involve changes to all three Euler angles but not a satellite.
There is open source IDL code for this purpose https://opensource.gsfc.nasa.gov/projects/GPM/index.php#software
Turns out to be more difficult to do this in practice than you might think, because the satellite geolocation is typically uncertain by as much as a few kilometers in the case of TRMM due to the failure of the star tracker on board. GPM is probably better, but may be several hundred meters off. This was solved in TRMM by minimizing the differences in reflectivity by shifting the position of the satellite data around until it matches best, then proceed with the colocation. See work by Bolen and Chandrasekar.
Just as a sidenote there is the paper of Schwaller and Morris (2011) and the recent paper of Warren et al. (2017) which handle 3D matching of ground based radar and space born radar.
@scollis If there is interest in python code, there is this repo from @vlouf using pyart for ground radar reading. The georeferencing and matching from the latter paper is also implemented in wradlib.
I should also add wradlib has some capabilities
-sent from a mobile device-
On Mar 20, 2018, at 6:24 AM, winash12 [email protected] wrote:
I found another one here - https://github.com/vecoveco/gpm
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.
If you want, I volunteer to rework my script (the current repo is not up-to-date with what we use at the BOM), to look like more something we could implement in pyart..
I also volunteer my time to work with @vlouf and @kmuehlbauer(if he is interested as well). We could take the best ideas of both repos and come up with a solution for PyArt. At the moment I am a noob but I can come up to speed very quickly.
I thought about it and I think I can port the latest version of the matching code used at the BOM into PyART without too much work. However, it requires pyproj (and the PROJ4 library)... I am almost certain that basemap already requires it, thus it wouldn't be a problem. But if it isn't something installed by basemap, I suppose it could be an optional package loaded when the matching function is called.
I'll create a new repo for that development.
@vlouf i have not tried running your code yet. Can it handle stand alone SR data ? I am talking about situations like over the oceans or over the mountains where ground radars may or may not be present. Also please correct me if I am wrong - your code requires installation of both HDF5 and HDF4 ?
@vlouf @winash12 I can recommend using netcdf4 to read the gpm and trmm files. If you need some inspiration, have a look into wradlib read_gpm and read_trmm functions. This prevents using hdf4 for reading the trmm data.
@kmuehlbauer We may need to take this offline but correct me if I am wrong. Since the GPM data that I download from NASA is in HDF5 you are suggesting I convert from HDF5 to netCDF4 before I call read_gpm ?
@winash12 reading gpm or trmm data is not the problem. But correct georeferencing is needed to get the xyz coordinates of the 3D SR bins. And of course what projection to use.
No, netcdf4 is capable of reading hdf. No need to convert.
I would be hoping to use the lat lon grid or the cylindrical equidistant projection but of course others may have other projections in which case we do need pyproj and proj.
@kmuehlbauer if I understood you correctly one needs to go from radar coordinate system to Cartesian and then you do a projection from that is that correct?
@winash12 Have a look at the paper of Warren which I linked above, there is guidance on how to correct for parallax and stuff.
@winash12 OK, I think we talk different things. Do you use 2D near surface products or 3D products? The matching stuff @vlouf and me were referring to is in 3D.
If you just want to use 2D near surface products than you are almost ready. Just getting the swath 2d data and use the provided lat lon coordinates. But I'm possibly missing something.
@kmuehlbauer No I need the 3D Product I am interested in studying mesoscale convective systems . So I need the 3D echo.
@kmuehlbauer So both of NCAR's SPRINT and REORDER(no longer supported) I believe use bilinear interpolation from radar coordinate system to the xyz Cartesian grid.
@winash12 What is your destination resolution of your xyz grid? The SR 'grid' is quite huge. Also, for GR comparison one would assume GR centric aeqd. Over ocean and the like you would need to fix your xyz grid at some point.
There are underlying functions that can easily do interpolation. In fact, because the TRMM data is nearly columns scipy’s griddata could work https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.griddata.html
Ping @DopplerChase in case he is working on something similar.
@kmuehlbauer I think that resolution would be determined by data storage limitations as you rightly point out that the SR 'grid' is huge. So 2 km by 2 km in the horizontal and 0.5 km in the vertical. The total interpolation grid would be around 100 km x 100 km x 12 kms.
@scollis I will definitely ping @dopplerchase offline