# LIDAR ppi converation in gridded format

**URL:** <https://openradar.discourse.group/t/lidar-ppi-converation-in-gridded-format/548>\
**Category:** General\
**Tags:** py-art\
**Created:** [January 22, 2025, 4:34pm UTC](https://openradar.discourse.group/t/lidar-ppi-converation-in-gridded-format/548 "2025-01-22T16:34:55Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![imd](https://yyz2.discourse-cdn.com/free1/user_avatar/openradar.discourse.group/imd/32/380_2.png) [@imd](https://openradar.discourse.group/u/imd)\
**Post date:** [January 22, 2025, 4:34pm UTC](https://openradar.discourse.group/t/lidar-ppi-converation-in-gridded-format/548/1 "2025-01-22T16:34:55Z")

</div>

I have LiDAR data that I’d like to convert to radar format (because I want to use pyart package) and then grid it. However, after gridding, I noticed that the ds.rsw values are NaN. Could you please advise on how to retrieve valid values for ds.rsw?  
**I have also attached the google-drive link to the lidar data.**  
[lidar data](https://drive.google.com/drive/u/0/folders/1-N323zsaSfNy7C60kqE780j1kf2m-UPQ)

**Code:**

```python
import pyart
import numpy as np
from datetime import datetime
from netCDF4 import Dataset
import warnings
warnings.filterwarnings('ignore')

# Load data lidar data
file_path = "D:/lidar_ppi.nc"
data = Dataset(file_path)
sweep_group = data.groups["Sweep_860123"]
time = sweep_group.variables["time"][:]
latitude = data.variables["latitude"][:]
longitude = data.variables["longitude"][:]
altitude = data.variables["altitude"][:]
azimuth = sweep_group.variables["azimuth"][:]
elevation = sweep_group.variables["elevation"][:]
range_ = sweep_group.variables["range"][:]
radial_wind_speed = sweep_group.variables["radial_wind_speed"][:]
rsw = np.array(radial_wind_speed)

# Create radar object using pyart
radar = pyart.testing.make_empty_ppi_radar(rsw.shape[1], len(azimuth), 1)
radar.latitude['data'] = np.array([latitude])
radar.longitude['data'] = np.array([longitude])
radar.altitude['data'] = np.array([altitude])
#radar.time['data'] = np.array([(t - time_converted[0]).total_seconds() for t in time_converted])

radar.time = {
'standard_name': 'time',
'long_name': 'time in seconds since volume start',
'calendar': 'gregorian',
'units': 'seconds since 2023-09-23T04:35:05Z',
'comment': 'times are relative to the volume start_time',
'data': np.array([(t - time_converted[0]).total_seconds() for t in time_converted]),
'FillValue':1e+20
}
radar.azimuth['data'] = azimuth
radar.elevation['data'] = elevation
radar.range['data'] = range

radial_wind_speed_dict = {
'long_name': 'radial_wind_speed',
'standard_name': 'radial_wind_speed_of_scatterers_away_from_instrument',
'units': 'm/s',
'sampling_ratio': 1.0,
'_FillValue': -9999 ,
'grid_mapping': 'grid_mapping',
'coordinates': 'time range',
'data': np.ma.masked_invalid(rsw) # Mask invalid data
}
radar.fields = { 'rws': radial_wind_speed_dict}
#success plot this:
import matplotlib.pyplot as plt
from pyart.graph import RadarDisplay
display = RadarDisplay(radar)
fig, ax = plt.subplots(figsize=(10, 8))
display.plot_ppi("rws", sweep=0, ax=ax, cmap="coolwarm")
plt.show()

## Now grid

grid_limits = ((10., 4000.), (-4500., 4500.), (-4500., 4500.))
grid_shape = (20, 50, 50)
grid = pyart.map.grid_from_radars([radar], grid_limits=grid_limits, grid_shape=grid_shape)
ds = grid_dv.to_xarray()
print(ds)
<xarray.Dataset> Size: 641kB
Dimensions: (time: 1, z: 20, y: 50, x: 50, nradar: 1)
Coordinates: (12/16)

* time (time) object 8B 2023-09-23 04:35:05
* z (z) float64 160B 10.0 220.0 ... 3.79e+03 4e+03
lat (y, x) float64 20kB 45.02 45.02 ... 45.1 45.1
lon (y, x) float64 20kB 7.603 7.605 ... 7.715 7.717
* y (y) float64 400B -4.5e+03 -4.316e+03 ... 4.5e+03
* x (x) float64 400B -4.5e+03 -4.316e+03 ... 4.5e+03
...
origin_altitude (time) float64 8B nan
radar_altitude (nradar) float64 8B nan
radar_latitude (nradar) float64 8B 45.06
radar_longitude (nradar) float64 8B 7.66
radar_time (nradar) int64 8B 0
radar_name (nradar) <U10 40B 'fake_radar'
Dimensions without coordinates: nradar
Data variables:
rws (time, z, y, x) float64 400kB nan nan ... nan
ROI (time, z, y, x) float32 200kB 500.0 ... 500.0
Attributes:
radar_name: fake_radar
nradar: 1
instrument_name: fake_radar

```

```python
np.nanmax(ds.rws)
Out[18]: nan

```

```python
np.nanmin(ds.rws)
Out[19]: nan

```

---

<div class="post-metadata">

**Author:** ![zssherman](https://yyz2.discourse-cdn.com/free1/user_avatar/openradar.discourse.group/zssherman/32/35_2.png) [@zssherman](https://openradar.discourse.group/u/zssherman)\
**Post date:** [January 22, 2025, 4:46pm UTC](https://openradar.discourse.group/t/lidar-ppi-converation-in-gridded-format/548/2 "2025-01-22T16:46:59Z")

</div>

Just adding to this post, original issue was opened on Py-art, but my guess is the ROI might need to be changed, but I’m not too familiar with lidar data and if others have worked with lidar data, might have better responses.

---

<div class="post-metadata">

**Author:** ![mgrover1](https://yyz2.discourse-cdn.com/free1/user_avatar/openradar.discourse.group/mgrover1/32/7_2.png) [@mgrover1](https://openradar.discourse.group/u/mgrover1)\
**Post date:** [January 23, 2025, 2:53pm UTC](https://openradar.discourse.group/t/lidar-ppi-converation-in-gridded-format/548/3 "2025-01-23T14:53:58Z")

</div>

> [@imd](#):
>
> `radar.range['data'] = range</em>`

What is this? This could be a cause for the incorrect values… those do not look like array values

---

<div class="post-metadata">

**Author:** ![kmuehlbauer](https://yyz2.discourse-cdn.com/free1/user_avatar/openradar.discourse.group/kmuehlbauer/32/439_2.png) [@kmuehlbauer](https://openradar.discourse.group/u/kmuehlbauer)\
**Post date:** [January 24, 2025, 9:20am UTC](https://openradar.discourse.group/t/lidar-ppi-converation-in-gridded-format/548/4 "2025-01-24T09:20:43Z")

</div>

@mgrover1 Might be a leftover from my attempt to move the code part into backticks. If you have a look into the change history it looks like it wasn’t there before my change. Sorry for any inconvenience.
