pyart icon indicating copy to clipboard operation
pyart copied to clipboard

Mapping of satellite borne Doppler radar data

Open winash12 opened this issue 6 years ago • 22 comments

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 ?

winash12 avatar Mar 18 '18 11:03 winash12

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 avatar Mar 19 '18 17:03 scollis

@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.

winash12 avatar Mar 20 '18 01:03 winash12

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.

swnesbitt avatar Mar 20 '18 09:03 swnesbitt

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.

kmuehlbauer avatar Mar 20 '18 09:03 kmuehlbauer

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.

scollis avatar Mar 20 '18 11:03 scollis

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..

vlouf avatar Mar 20 '18 14:03 vlouf

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.

winash12 avatar Mar 21 '18 01:03 winash12

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 avatar Mar 21 '18 15:03 vlouf

@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 ?

winash12 avatar Mar 21 '18 16:03 winash12

@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 avatar Mar 21 '18 16:03 kmuehlbauer

@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 avatar Mar 21 '18 16:03 winash12

@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.

kmuehlbauer avatar Mar 21 '18 16:03 kmuehlbauer

No, netcdf4 is capable of reading hdf. No need to convert.

kmuehlbauer avatar Mar 21 '18 16:03 kmuehlbauer

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.

winash12 avatar Mar 21 '18 16:03 winash12

@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 avatar Mar 21 '18 16:03 winash12

@winash12 Have a look at the paper of Warren which I linked above, there is guidance on how to correct for parallax and stuff.

kmuehlbauer avatar Mar 21 '18 16:03 kmuehlbauer

@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 avatar Mar 21 '18 16:03 kmuehlbauer

@kmuehlbauer No I need the 3D Product I am interested in studying mesoscale convective systems . So I need the 3D echo.

winash12 avatar Mar 21 '18 17:03 winash12

@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 avatar Mar 21 '18 17:03 winash12

@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.

kmuehlbauer avatar Mar 21 '18 17:03 kmuehlbauer

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.

scollis avatar Mar 21 '18 17:03 scollis

@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

winash12 avatar Mar 21 '18 17:03 winash12