Quantcast
Channel: Active questions tagged python - Stack Overflow
Viewing all articles
Browse latest Browse all 23160

Looking for a simple method to re-grid spatial velocity data (vector components) to a native latitude longitude coordinate system

$
0
0

I'm trying to regrid vector component data (u and v representing positive x and y) on an EASE coordinate system to East and West components on a latitude longitude coordinate system. The vector components need to be rotated in addition to any interpolation. Below is a brute force method I used but it's slow - I'm new to programming and feel there should be a better way.

I'm getting confused by the indexing when trying to use xr.interp(). The data is indexed u(y, x, time) - with x, y in meters. Latitude and longitude variables are included and indexed(y, x).

Thank you!

xn = np.arange(-179.75, 179.75, 0.5)yn = np.arange(-90, -60, 0.5)# Initialize array for East componentE_1 = np.zeros((len(yn), len(xn)))# Iterate through each new lon and lat grid pointfor i in range(len(xn)):    for j in range(len(yn)):        # Find absolute value distances of j'th lat from entire lat_ease array and store in array        dy = (yn[j]-lat_ease)**2        # Find absolute value distances of i'th lat from entire lat_ease array and store in array          dx1 = (xn[i]-lon_ease)**2        # Account for possibilities with periodicity        dx2 = (xn[i]-lon_ease+360)**2        dx3 = (xn[i]-lon_ease-360)**2        # Find miniumum dx array between the three different arrays accounting for periodicity        dx = np.minimum.reduce([dx1, dx2, dx3])        # Find distances (we don't need sqrt here b/c not using actual value, just minimum)        ds = dx + dy        # Find indices of minimum ds value        i_neighbors = np.where(ds == np.min(ds))        ii = np.min(i_neighbors[0])        jj = np.min(i_neighbors[1])        # NOTE: Could use np.argmin() to return the index of first minimum occuring value        E_1[j, i] = u_ease[0, jj, ii]*np.cos(np.radians(lon_ease[jj, ii])) - v_ease[0, jj, ii]*np.sin(np.radians(lon_ease[jj,ii]))```

Viewing all articles
Browse latest Browse all 23160

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>