{
"cells": [
{
"attachments": {
"image.png": {
"image/png": "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ADVjMk9omYDpECBAgAABAgQIEJi2gAA1bSoPJECAQGkC6iFAgAABAgRGLSBAjVrc+ggQIECAAIGUGBAgQKChAgJUQxunbAIECBAgQIAAgXoErLXbAgJUt/tv9gQIECBAgAABAgQIzECg4QFqBjP1UAIECBAgQIAAAQIECMxSQICaJaCnExhYwBMJECBAgAABAgQaJyBANa5lCiZAgED9AiogQIAAAQJdFRCgutp58yZAgAABAt0UMGsCBAjMSkCAmhWfJxMgQIAAAQIECBAYlYD1lCAgQJXQBTUQIECAAAECBAgQINAIAQFqwDZ5GgECBAgQIECAAAEC3RMQoLrXczMmQIAAAQIECBAgQGBAAQFqQDhPI0CAAIE6BKyTAAECBAjUKyBA1etv7QQIECBAgEBXBMyTAIFWCAhQrWijSRAgQIAAAQIECBCoTsDILwoIUC9auESAAAECBAgQIECAAIEDCghQB+Qp8U41ESBAgAABAgQIECBQl4AAVZe89RLoooA5EyBAgAABAgQaLiBANbyByidAgACB0QhYCwECBAgQCAEBKhQsBAgQIECAAIH2CpgZAQJDFBCghohpKAIECBAgQIAAAQIEhilQ3lgCVHk9UREBAgQIECBAgAABAoUKCFCFNqbEstREgAABAgQIECBAoOsCAlTXfwLMn0A3BMySAAECBAgQIDAUAQFqKIwGIUCAAAECVQkYlwABAgRKEogA9ZYoaMniQ9IxRx1uKdDgqMOXRovS0oVz0zVnHGkp1OBnjlyU+2RbKvf3SH9bmjt3jt91Bf6u678GHbRooW2p4P5En2xL5f6ei/70lwXz59e/LRX+s9y3quv88KWLc4+8LpW9TfW3pV6zcm6KANW77B8BAgQIECBAgAABAgQI9AUmO48A9e24c92GTeknTz9nKdDg6efWRovSjh079afA/vS3mxc2b8l9si2V+3vEtlRub/rbUZzblsrvk22p/B7FtrR12zavSwW/b4gePbd2Q+6R93hlb1P9banXrJybIkD1LvtHoGQBtREgQIAAAQIECBAoQ0CAKqMPqiBAoK0C5kWAAAECBAi0SkCAalU7TYYAAQIECAxPwEgECBAg8FIBAeqlJm4hQIAAAQIECBBotoDqCVQmIEBVRmtgAgQIECBAgAABAgTaJlB9gGqbmPkQIECAAAECBAgQINBZAQGqs6038ekIeAwBAgQIECBAgACBvQUEqL01XCZAgEB7BMyEAAECBAgQqEBAgKoA1ZAECBAgQIDAbAQ8lwABAuUKCFDl9kZlBAgQIECAAAECTRNQb+sFBKjWt9gECRAgQIAAAQIECBAYlkCbA9SwjIxDgAABAgQIECBAgACBLCBAZQYnBEoTUA8BAgQIECBAgECJAgJUiV1REwECBJosoHYCBAgQINBiAQGqxc01NQIECBAgQGBmAh5NgACBqQQEqKmE3E+AAAECBAgQIECgfAEVjkhAgBoRtNUQIECAAAECBAgQINB8AQGqih4akwABAgQIECBAgACBVgoIUK1sq0kRGFzAMwkQIECAAAECBCYXEKAmt3EPAQIECDRLQLUECBAgQKByAQGqcmIrIECAAAECBAhMJeB+AgSaIiBANaVT6iRAgAABAgQIECBQokDHahKgOtZw0yVAgAABAgQIECBAYHABAWpwuxKfqSYCBAgQIECAAAECBCoUEKAqxDU0AQIzEfBYAgQIECBAgED5AgJU+T1SIQECBAiULqA+AgQIEOiMgADVmVabKAECBAgQIEDgpQJuIUBgZgIC1My8PJoAAQIECBAgQIAAgTIEaqlCgKqF3UoJECBAgAABAgQIEGiigADVxK6VWLOaCBAgQIAAAQIECHRAQIDqQJNNkQCBAwu4lwABAgQIECAwXQEBarpSHkeAAAECBMoTUBEBAgQIjFhAgBoxuNURIECAAAECBAiEgIVAMwUEqGb2TdUECBAgQIAAAQIECNQgkANUDeu1SgIECBAgQIAAAQIECDROQIBqXMsUvJ+AqwQIECBAgAABAgRGJiBAjYzaiggQILC/gOsECBAgQIBA0wQEqKZ1TL0ECBAgQKAEATUQIECgowICVEcbb9oECBAgQIAAga4KmDeB2QgIULPR81wCBAgQIECAAAECBDolUHOA6pS1yRIgQIAAAQIECBAg0HABAarhDVR+jQJWTYAAAQIECBAg0DkBAapzLTdhAgQIpMSAAAECBAgQGExAgBrMzbMIECBAgACBegSslQABArUKCFC18ls5AQIECBAgQIBAdwTMtA0CAlQbumgOBAgQIECAAAECBAiMRKCzAWokulZCgAABAgQIECBAgECrBASoVrXTZDoiYJoECBAgQIAAAQI1CQhQNcFbLQECBLopYNYECBAgQKDZAgJUs/unegIECBAgQGBUAtZDgACBnoAA1UPwjwABAgQIECBAgECbBcxteAIC1PAsjUSAAAECBAgQIECAQMsFBKiRN9gKCRAgQIAAAQIECBBoqoAA1dTOqZtAHQLWSYAAAQIECBDouIAA1fEfANMnQIBAVwTMkwABAgQIDENAgBqGojEIECBAgAABAtUJGJkAgYIEBKiCmqEUAgQIECBAgAABAu0SaN9sBKj29dSMCBAgQIAAAQIECBCoSECAqgi2xGHVRIAAAQIECBAgQIDA7AQEqNn5eTYBAqMRsBYCBAgQIECAQBECAlQRbVAEAQIECLRXwMwIECBAoE0CAlSbumkuBAgQIECAAIFhChiLAIGXCAhQLyFxAwECBAgQIECAAAECTReoqn4BqipZ4xIgQIAAAQIECBAg0DoBAap1LS1xQmoiQIAAAQIECBAg0A4BAaodfTQLAgSqEjAuAQIECBAgQGAvAQFqLwwXCRAgQIBAmwTMhQABAgSGLyBADd/UiAQIECBAgAABArMT8GwCxQoIUMW2RmEECBAgQIAAAQIECJQmMHWAKq1i9RAgQIAAAQIECBAgQKAmAQGqJnirHY2AtRAgQIAAAQIECBAYpoAANUxNYxEgQGB4AkYiQIAAAQIEChQQoApsipIIECBAgECzBVRPgACB9goIUO3trZkRIECAAAECBAjMVMDjCUwhIEBNAeRuAgQIECBAgAABAgQI9AVKDlD9Gp0TIECAAAECBAgQIECgCAEBqog2KKJ9AmZEgAABAgQIECDQRgEBqo1dNScCBAjMRsBzCRAgQIAAgUkFBKhJadxBgAABAgQINE1AvQQIEKhaQICqWtj4BAgQIECAAAECBKYW8IiGCAhQDWmUMgkQIECAAAECBAgQqF9AgJqoB24jQIAAAQIECBAgQIDABAIC1AQobiLQZAG1EyBAgAABAgQIVCcgQFVna2QCBAgQmJmARxMgQIAAgeIFBKjiW6RAAgQIECBAoHwBFRIg0BUBAaornTZPAgQIECBAgAABAhMJuG1GAgLUjLg8mAABAgQIECBAgACBLgsIUGV1XzUECBAgQIAAAQIECBQsIEAV3BylEWiWgGoJECBAgAABAu0XEKDa32MzJECAAIGpBNxPgAABAgSmKSBATRPKwwgQIECAAAECJQqoiQCB0QoIUKP1tjYCBAgQIECAAAECBMYFGnkqQDWybYomQIAAAQIECBAgQKAOAQGqDvUS16kmAgQIECBAgAABAgSmFBCgpiTyAAIEShdQHwECBAgQIEBgVAIC1KikrYcAAQIECLxUwC0ECBAg0DABAaphDVMuAQIECBAgQKAMAVUQ6KaAANXNvps1AQIECBAgQIAAge4KzGLmAtQs8DyVAAECBAgQIECAAIFuCQhQ3ep3ibNVEwECBAgQIECAAIHGCAhQjWmVQgkQKE9ARQQIECBAgEDXBASornXcfAkQIECAQAhYCBAgQGAgAQFqIDZPIkCAAAECBAgQqEvAegnUKRABakkUMG/u3LRg/nxLgQbz589L8d/Y2Jj+FNif/nYzZ86caFOyLZX7e8S2VG5v+ttRnNuWyu+Tban8HuVtqfe+IV6YvC6V26/58+ZGi9LY2Jj3eCW/x+v1JzcqpZyb5vSunNZb0iEHL0qHL108w8XjR2G2dPGh0aI0Z86Y/hT8M7pwwfzcJ9tSub8XbEvl9mbv36W2pfL7ZFsqv0exTc2bN8/rUsHvG6JHiw89OPfIe7zFRb/H7W9LvWbl3BQB6rHelbW95e97yzcsqUSDe1NK0aM1KaUS62tmTcO3/EEa75Ntafi2w/oZsy2V25u9e2xbKr9PtqXyexTb1JNel1I4lLzcl8bfO3iPV/Y21d+WHu/1K80ZGxt7R295WW/5md5ytmWsRIOzxsbGokcvHxsbK7E+NY335dVj432yLY17lPhz0ZptqfezVqLvsGqyLZW7DfV7bFsqv0fRq+W93xXx/sHrUrn9euPuHnmPV26P9t6Wro0A9f8BAAD//1X9EMgAAAAGSURBVAMA8BDGIIrsjrkAAAAASUVORK5CYII="
}
},
"cell_type": "markdown",
"metadata": {},
"source": [
"# 📍 Pick Points\n",
"\n",
"## Extract Model Grid Data at Specific Points with Herbie\n",
"\n",
"**Extract weather model data at point locations | Interpolate gridded data | Sample NWP grids**\n",
"\n",
"Herbie's `pick_points` xarray accessor extracts values from weather and climate model grids at specific latitude/longitude locations. Whether you need to sample HRRR, GFS, or other numerical weather prediction (NWP) model output at station locations, city coordinates, or arbitrary points, this tool provides efficient nearest-neighbor and distance-weighted interpolation.\n",
"\n",
"\n",
"\n",
"## What you'll learn: Extract and Interpolate Model Data\n",
"\n",
"In this tutorial, you'll learn how to:\n",
"- **Extract point values** from gridded model data (HRRR, GFS, NAM, etc.)\n",
"- **Sample weather models** at specific latitude/longitude coordinates\n",
"- Work with both **regular grids** (lat/lon) and **curvilinear grids** (Lambert Conformal, polar stereographic)\n",
"- Use **nearest-neighbor** vs **distance-weighted interpolation** methods\n",
"- Create **time series** from model forecasts at station locations\n",
"- Extract **vertical profiles** (model soundings) at points\n",
"- **Interpolate GRIB2 data** to observation sites\n",
"- Optimize performance for extracting hundreds or thousands of points\n",
"- Cache spatial indices (BallTree) for faster repeated queries\n",
"\n",
"### Common Use Cases\n",
"- Compare model output to weather station observations\n",
"- Extract forecast data for specific cities or locations\n",
"- Create model soundings at radiosonde sites\n",
"- Sample gridded forecasts along flight paths or trajectories\n",
"- Validate NWP models against point measurements\n",
"- Extract model data for machine learning training datasets\n",
"\n",
"**Requirements:** This tutorial requires the `scikit-learn` package for spatial indexing:\n",
"```bash\n",
"pip install scikit-learn\n",
"# or install with all Herbie extras\n",
"pip install 'herbie-data[extras]'\n",
"```\n",
"\n",
"## How it Works: Spatial Indexing with BallTree\n",
"\n",
"Herbie uses **scikit-learn's BallTree algorithm** with the **haversine formula** for accurate nearest-neighbor queries on Earth's spherical surface. This approach works for any model grid projection without requiring coordinate transformations.\n",
"\n",
"### Advantages over other methods:\n",
"- ✅ Works with **curvilinear/projected grids** (HRRR, NAM, WRF)\n",
"- ✅ Handles **longitude convention differences** (0-360° vs ±180°)\n",
"- ✅ Returns **distance to nearest grid points** (great-circle distance in km)\n",
"- ✅ Supports **k-nearest neighbors** for interpolation and uncertainty quantification\n",
"- ✅ **Fast queries** even for thousands of points\n",
"- ✅ No coordinate transformation required\n",
"\n",
"## Background: When to Use Pick Points\n",
"\n",
"For regular latitude-longitude grids (e.g., GFS, IFS), you could use xarray's [advanced indexing](https://docs.xarray.dev/en/stable/user-guide/indexing.html#more-advanced-indexing) to select your points of interest. However, `pick_points` is necessary when:\n",
"\n",
"- **Curvilinear grids**: Models like HRRR use Lambert Conformal or other map projections\n",
"- **Longitude conventions differ**: Model uses [0, 360) but your points are in [-180, 180)\n",
"- **Distance matters**: You need to know how far the nearest grid point is from your location\n",
"- **Multiple neighbors**: You want k-nearest points for interpolation or statistics\n",
"- **Performance**: Extracting many points at once (spatial indexing is very fast)\n",
"- **Batch processing**: Repeatedly querying the same grid (BallTree caching)\n",
"\n",
"Development History: Why I Built This
\n",
"\n",
"Picking values at nearest-neighbor points in a [curvilinear grid](https://en.wikipedia.org/wiki/Curvilinear_coordinates) has been one of my longstanding challenges. In November 2019, I asked [How to select the nearest lat/lon location with multi-dimension coordinates](https://stackoverflow.com/q/58758480/2383070) on Stack Overflow, which has had over 28k views. My initial solution found the minimum distance between points and grid cells, but it didn't scale well for many points.\n",
"\n",
"I iterated through several approaches:\n",
"\n",
"**Previous approach (deprecated):** `ds.herbie.nearest_points` used MetPy's [assign_y_x](https://unidata.github.io/MetPy/latest/tutorials/xarray_tutorial.html?highlight=assign_y_x) to transform coordinates to the model's projection (e.g., Lambert Conformal for HRRR), then selected nearest neighbors. This worked but required Cartopy coordinate transformations, and not all datasets have sufficient projection metadata.\n",
"\n",
"**Current approach:** Using BallTree with haversine distance:\n",
"- ✅ No coordinate transformation needed\n",
"- ✅ Can extract k-nearest neighbors\n",
"- ✅ Returns actual distances (km) using haversine formula\n",
"- ✅ Supports inverse-distance weighted interpolation\n",
"- ✅ Much faster for bulk queries\n",
"\n",
"I later discovered the [xoak](https://xoak.readthedocs.io/) package, which also uses BallTree for nearest neighbors.\n",
"\n",
"
<xarray.Dataset> Size: 120B\n",
"Dimensions: (latitude: 3, longitude: 3)\n",
"Coordinates:\n",
" * latitude (latitude) int64 24B 44 45 46\n",
" * longitude (longitude) int64 24B -99 -100 -101\n",
"Data variables:\n",
" a (latitude, longitude) int64 72B 0 1 2 0 1 0 0 0 0| \n", " | longitude | \n", "latitude | \n", "
|---|---|---|
| 0 | \n", "-100.25 | \n", "44.25 | \n", "
| 1 | \n", "-99.40 | \n", "45.40 | \n", "
<xarray.Dataset> Size: 96B\n",
"Dimensions: (point: 2)\n",
"Coordinates:\n",
" latitude (point) int64 16B 44 45\n",
" longitude (point) int64 16B -100 -99\n",
" point_grid_distance (point) float64 16B 34.22 54.41\n",
" point_longitude (point) float64 16B -100.2 -99.4\n",
" point_latitude (point) float64 16B 44.25 45.4\n",
"Dimensions without coordinates: point\n",
"Data variables:\n",
" a (point) int64 16B 1 0<xarray.Dataset> Size: 240B\n",
"Dimensions: (point: 2, k: 4)\n",
"Coordinates:\n",
" point_longitude (point) float64 16B -100.2 -99.4\n",
" point_latitude (point) float64 16B 44.25 45.4\n",
" latitude (k, point) int64 64B 44 45 44 45 45 46 45 46\n",
" longitude (k, point) int64 64B -100 -99 -101 ... -99 -101 -100\n",
" point_grid_distance (k, point) float64 64B 34.22 54.41 66.0 ... 102.4 81.38\n",
"Dimensions without coordinates: point, k\n",
"Data variables:\n",
" a (point) float64 16B 1.082 0.2588\n",
"Attributes:\n",
" pick_point_method: weighted\n",
" pick_point_k: 4<xarray.Dataset> Size: 46MB\n",
"Dimensions: (y: 1059, x: 1799)\n",
"Coordinates:\n",
" time datetime64[ns] 8B 2024-03-01\n",
" step timedelta64[ns] 8B 00:00:00\n",
" heightAboveGround float64 8B 2.0\n",
" latitude (y, x) float64 15MB 21.14 21.15 21.15 ... 47.85 47.84\n",
" longitude (y, x) float64 15MB 237.3 237.3 237.3 ... 299.0 299.1\n",
" valid_time datetime64[ns] 8B 2024-03-01\n",
" gribfile_projection object 8B None\n",
"Dimensions without coordinates: y, x\n",
"Data variables:\n",
" t2m (y, x) float32 8MB 292.5 292.5 292.4 ... 266.8 266.8\n",
" d2m (y, x) float32 8MB 287.3 287.2 287.2 ... 262.2 262.2\n",
"Attributes:\n",
" GRIB_edition: 2\n",
" GRIB_centre: kwbc\n",
" GRIB_centreDescription: US National Weather Service - NCEP\n",
" GRIB_subCentre: 0\n",
" Conventions: CF-1.7\n",
" institution: US National Weather Service - NCEP\n",
" model: hrrr\n",
" product: sfc\n",
" description: High-Resolution Rapid Refresh - CONUS\n",
" remote_grib: https://noaa-hrrr-bdp-pds.s3.amazonaws.com/hrrr....\n",
" local_grib: /home/blaylock/data/hrrr/20240301/subset_e0ef89f...\n",
" search: :(?:TMP|DPT):2 m| \n", " | latitude | \n", "longitude | \n", "stid | \n", "
|---|---|---|---|
| 0 | \n", "44.000 | \n", "-100.00 | \n", "McIntosh | \n", "
| 1 | \n", "44.375 | \n", "-100.25 | \n", "Golden | \n", "
| 2 | \n", "44.750 | \n", "-100.50 | \n", "Fuji | \n", "
| 3 | \n", "45.125 | \n", "-100.75 | \n", "Gala | \n", "
| 4 | \n", "45.500 | \n", "-101.00 | \n", "Honeycrisp | \n", "
<xarray.Dataset> Size: 320B\n",
"Dimensions: (point: 5)\n",
"Coordinates:\n",
" time datetime64[ns] 8B 2024-03-01\n",
" step timedelta64[ns] 8B 00:00:00\n",
" heightAboveGround float64 8B 2.0\n",
" latitude (point) float64 40B 43.99 44.37 44.76 45.13 45.5\n",
" longitude (point) float64 40B 260.0 259.8 259.5 259.3 259.0\n",
" valid_time datetime64[ns] 8B 2024-03-01\n",
" gribfile_projection object 8B None\n",
" point_grid_distance (point) float64 40B 0.8515 1.07 1.611 1.41 1.318\n",
" point_latitude (point) float64 40B 44.0 44.38 44.75 45.12 45.5\n",
" point_longitude (point) float64 40B -100.0 -100.2 -100.5 -100.8 -101.0\n",
" point_stid (point) object 40B 'McIntosh' 'Golden' ... 'Honeycrisp'\n",
"Dimensions without coordinates: point\n",
"Data variables:\n",
" t2m (point) float32 20B 288.0 286.7 286.1 282.3 284.8\n",
" d2m (point) float32 20B 268.8 271.8 270.5 274.1 270.5\n",
"Attributes:\n",
" GRIB_edition: 2\n",
" GRIB_centre: kwbc\n",
" GRIB_centreDescription: US National Weather Service - NCEP\n",
" GRIB_subCentre: 0\n",
" Conventions: CF-1.7\n",
" institution: US National Weather Service - NCEP\n",
" model: hrrr\n",
" product: sfc\n",
" description: High-Resolution Rapid Refresh - CONUS\n",
" remote_grib: https://noaa-hrrr-bdp-pds.s3.amazonaws.com/hrrr....\n",
" local_grib: /home/blaylock/data/hrrr/20240301/subset_e0ef89f...\n",
" search: :(?:TMP|DPT):2 m<xarray.Dataset> Size: 320B\n",
"Dimensions: (point: 5)\n",
"Coordinates:\n",
" time datetime64[ns] 8B 2024-03-01\n",
" step timedelta64[ns] 8B 00:00:00\n",
" heightAboveGround float64 8B 2.0\n",
" latitude (point) float64 40B 43.99 44.37 44.76 45.13 45.5\n",
" longitude (point) float64 40B 260.0 259.8 259.5 259.3 259.0\n",
" valid_time datetime64[ns] 8B 2024-03-01\n",
" gribfile_projection object 8B None\n",
" point_grid_distance (point) float64 40B 0.8515 1.07 1.611 1.41 1.318\n",
" point_latitude (point) float64 40B 44.0 44.38 44.75 45.12 45.5\n",
" point_longitude (point) float64 40B -100.0 -100.2 -100.5 -100.8 -101.0\n",
" point_stid (point) object 40B 'McIntosh' 'Golden' ... 'Honeycrisp'\n",
"Dimensions without coordinates: point\n",
"Data variables:\n",
" t2m (point) float32 20B 288.0 286.7 286.1 282.3 284.8\n",
" d2m (point) float32 20B 268.8 271.8 270.5 274.1 270.5\n",
"Attributes:\n",
" GRIB_edition: 2\n",
" GRIB_centre: kwbc\n",
" GRIB_centreDescription: US National Weather Service - NCEP\n",
" GRIB_subCentre: 0\n",
" Conventions: CF-1.7\n",
" institution: US National Weather Service - NCEP\n",
" model: hrrr\n",
" product: sfc\n",
" description: High-Resolution Rapid Refresh - CONUS\n",
" remote_grib: https://noaa-hrrr-bdp-pds.s3.amazonaws.com/hrrr....\n",
" local_grib: /home/blaylock/data/hrrr/20240301/subset_e0ef89f...\n",
" search: :(?:TMP|DPT):2 m<xarray.Dataset> Size: 128B\n",
"Dimensions: ()\n",
"Coordinates:\n",
" time datetime64[ns] 8B 2024-03-01\n",
" step timedelta64[ns] 8B 00:00:00\n",
" heightAboveGround float64 8B 2.0\n",
" latitude float64 8B 45.5\n",
" longitude float64 8B 259.0\n",
" valid_time datetime64[ns] 8B 2024-03-01\n",
" gribfile_projection object 8B None\n",
" point_grid_distance float64 8B 1.318\n",
" point_latitude float64 8B 45.5\n",
" point_longitude float64 8B -101.0\n",
" point_stid <U10 40B 'Honeycrisp'\n",
"Data variables:\n",
" t2m float32 4B 284.8\n",
" d2m float32 4B 270.5\n",
"Attributes:\n",
" GRIB_edition: 2\n",
" GRIB_centre: kwbc\n",
" GRIB_centreDescription: US National Weather Service - NCEP\n",
" GRIB_subCentre: 0\n",
" Conventions: CF-1.7\n",
" institution: US National Weather Service - NCEP\n",
" model: hrrr\n",
" product: sfc\n",
" description: High-Resolution Rapid Refresh - CONUS\n",
" remote_grib: https://noaa-hrrr-bdp-pds.s3.amazonaws.com/hrrr....\n",
" local_grib: /home/blaylock/data/hrrr/20240301/subset_e0ef89f...\n",
" search: :(?:TMP|DPT):2 m<xarray.Dataset> Size: 704B\n",
"Dimensions: (isobaricInhPa: 39, point: 1)\n",
"Coordinates:\n",
" time datetime64[ns] 8B 2024-03-28\n",
" step timedelta64[ns] 8B 00:00:00\n",
" * isobaricInhPa (isobaricInhPa) float64 312B 1e+03 975.0 ... 75.0 50.0\n",
" latitude (point) float64 8B 40.75\n",
" longitude (point) float64 8B 248.1\n",
" valid_time datetime64[ns] 8B 2024-03-28\n",
" gribfile_projection object 8B None\n",
" point_grid_distance (point) float64 8B 1.193\n",
" point_latitude (point) float64 8B 40.76\n",
" point_longitude (point) float64 8B -111.9\n",
" point_stid (point) object 8B 'KSLC'\n",
"Dimensions without coordinates: point\n",
"Data variables:\n",
" t (isobaricInhPa, point) float32 156B ...\n",
" dpt (isobaricInhPa, point) float32 156B ...\n",
"Attributes:\n",
" GRIB_edition: 2\n",
" GRIB_centre: kwbc\n",
" GRIB_centreDescription: US National Weather Service - NCEP\n",
" GRIB_subCentre: 0\n",
" Conventions: CF-1.7\n",
" institution: US National Weather Service - NCEP\n",
" model: hrrr\n",
" product: prs\n",
" description: High-Resolution Rapid Refresh - CONUS\n",
" remote_grib: https://noaa-hrrr-bdp-pds.s3.amazonaws.com/hrrr....\n",
" local_grib: /home/blaylock/data/hrrr/20240328/subset_0befd2f...\n",
" search: (?:DPT|TMP):[0-9]* mb| \n", " | latitude | \n", "longitude | \n", "stid | \n", "
|---|---|---|---|
| 0 | \n", "29.718029 | \n", "274.785946 | \n", "SkNxqxCY | \n", "
| 1 | \n", "26.961634 | \n", "255.333244 | \n", "DONsGClt | \n", "
| 2 | \n", "47.380357 | \n", "258.360720 | \n", "zBYYWqvk | \n", "
| 3 | \n", "48.499379 | \n", "236.466228 | \n", "PNKRmpQX | \n", "
| 4 | \n", "37.763784 | \n", "272.271894 | \n", "kgiLfUwp | \n", "
| ... | \n", "... | \n", "... | \n", "... | \n", "
| 95 | \n", "34.706803 | \n", "275.869335 | \n", "RrdbpPvj | \n", "
| 96 | \n", "25.423777 | \n", "256.984473 | \n", "ELGWpzoF | \n", "
| 97 | \n", "21.841066 | \n", "285.435707 | \n", "iSCwEgju | \n", "
| 98 | \n", "35.878342 | \n", "285.655062 | \n", "UQBJvXzT | \n", "
| 99 | \n", "45.136663 | \n", "294.870079 | \n", "KYvNRgCr | \n", "
100 rows × 3 columns
\n", "<xarray.Dataset> Size: 24kB\n",
"Dimensions: (k: 5, isobaricInhPa: 5, point: 100)\n",
"Coordinates:\n",
" time datetime64[ns] 8B 2024-03-28\n",
" step timedelta64[ns] 8B 00:00:00\n",
" * isobaricInhPa (isobaricInhPa) float64 40B 1e+03 925.0 ... 700.0 500.0\n",
" latitude (k, point) float64 4kB 29.72 26.96 47.38 ... 35.9 45.11\n",
" longitude (k, point) float64 4kB 274.8 255.3 ... 285.7 294.9\n",
" valid_time datetime64[ns] 8B 2024-03-28\n",
" gribfile_projection object 8B None\n",
" point_grid_distance (k, point) float64 4kB 0.0 0.0 0.0 ... 2.997 2.979\n",
" point_latitude (point) float64 800B 29.72 26.96 47.38 ... 35.88 45.14\n",
" point_longitude (point) float64 800B 274.8 255.3 258.4 ... 285.7 294.9\n",
" point_stid (point) object 800B 'SkNxqxCY' ... 'KYvNRgCr'\n",
"Dimensions without coordinates: k, point\n",
"Data variables:\n",
" t (k, isobaricInhPa, point) float32 10kB 293.1 ... 259.9\n",
"Attributes:\n",
" GRIB_edition: 2\n",
" GRIB_centre: kwbc\n",
" GRIB_centreDescription: US National Weather Service - NCEP\n",
" GRIB_subCentre: 0\n",
" Conventions: CF-1.7\n",
" institution: US National Weather Service - NCEP\n",
" model: hrrr\n",
" product: sfc\n",
" description: High-Resolution Rapid Refresh - CONUS\n",
" remote_grib: https://noaa-hrrr-bdp-pds.s3.amazonaws.com/hrrr....\n",
" local_grib: /home/blaylock/data/hrrr/20240328/subset_0befe27...\n",
" search: TMP:\\d* mb<xarray.Dataset> Size: 28kB\n",
"Dimensions: (isobaricInhPa: 5, point: 100, k: 9)\n",
"Coordinates:\n",
" time datetime64[ns] 8B 2024-03-28\n",
" step timedelta64[ns] 8B 00:00:00\n",
" * isobaricInhPa (isobaricInhPa) float64 40B 1e+03 925.0 ... 700.0 500.0\n",
" valid_time datetime64[ns] 8B 2024-03-28\n",
" gribfile_projection object 8B None\n",
" point_latitude (point) float64 800B 29.72 26.96 47.38 ... 35.88 45.14\n",
" point_longitude (point) float64 800B 274.8 255.3 258.4 ... 285.7 294.9\n",
" point_stid (point) object 800B 'SkNxqxCY' ... 'KYvNRgCr'\n",
" latitude (k, point) float64 7kB 29.72 26.96 47.38 ... 35.91 45.1\n",
" longitude (k, point) float64 7kB 274.8 255.3 ... 285.6 294.9\n",
" point_grid_distance (k, point) float64 7kB 0.0 0.0 0.0 ... 4.238 4.213\n",
"Dimensions without coordinates: point, k\n",
"Data variables:\n",
" t (isobaricInhPa, point) float64 4kB 293.1 ... 259.8\n",
"Attributes:\n",
" pick_point_method: weighted\n",
" pick_point_k: 9<xarray.Dataset> Size: 282kB\n",
"Dimensions: (k: 100, point: 100)\n",
"Coordinates:\n",
" time datetime64[ns] 8B 2024-01-01\n",
" step timedelta64[ns] 8B 00:00:00\n",
" surface float64 8B 0.0\n",
" latitude (k, point) float64 80kB 29.72 26.96 ... 35.96 45.07\n",
" longitude (k, point) float64 80kB 274.8 255.3 ... 285.8 294.7\n",
" valid_time datetime64[ns] 8B 2024-01-01\n",
" gribfile_projection object 8B None\n",
" point_grid_distance (k, point) float64 80kB 0.0 0.0 0.0 ... 16.95 16.85\n",
" point_latitude (point) float64 800B 29.72 26.96 47.38 ... 35.88 45.14\n",
" point_longitude (point) float64 800B 274.8 255.3 258.4 ... 285.7 294.9\n",
" point_stid (point) object 800B 'SkNxqxCY' ... 'KYvNRgCr'\n",
"Dimensions without coordinates: k, point\n",
"Data variables:\n",
" orog (k, point) float32 40kB 6.263 1.444e+03 ... 0.01339\n",
"Attributes:\n",
" GRIB_edition: 2\n",
" GRIB_centre: kwbc\n",
" GRIB_centreDescription: US National Weather Service - NCEP\n",
" GRIB_subCentre: 0\n",
" Conventions: CF-1.7\n",
" institution: US National Weather Service - NCEP\n",
" model: hrrr\n",
" product: sfc\n",
" description: High-Resolution Rapid Refresh - CONUS\n",
" remote_grib: https://noaa-hrrr-bdp-pds.s3.amazonaws.com/hrrr....\n",
" local_grib: /home/blaylock/data/hrrr/20240101/subset_6bef832...\n",
" search: HGT:surface<xarray.DataArray 'orog' (point: 100)> Size: 400B\n",
"array([3.74864864e+00, 7.70284042e+01, 3.17707424e+01, 1.59296356e+02,\n",
" 8.50554657e+00, 2.69303436e+02, 2.61035797e+02, 0.00000000e+00,\n",
" 7.76310120e+01, 1.48034021e-02, 3.39158669e+01, 1.53166565e+02,\n",
" 1.60940230e+00, 0.00000000e+00, 7.13127975e+01, 1.51575775e+01,\n",
" 6.64364319e+01, 0.00000000e+00, 1.12974800e+02, 0.00000000e+00,\n",
" 2.69054890e+00, 0.00000000e+00, 3.99752159e+01, 3.41971703e+01,\n",
" 6.46535950e+01, 3.35994232e+02, 1.60176880e+02, 1.26123024e+02,\n",
" 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 9.03021851e+01,\n",
" 1.89539986e+01, 0.00000000e+00, 4.04688110e+01, 0.00000000e+00,\n",
" 0.00000000e+00, 4.26026802e+01, 0.00000000e+00, 6.81077968e-03,\n",
" 1.19178711e+02, 2.45614243e+01, 0.00000000e+00, 6.05588112e+01,\n",
" 1.23778839e+02, 1.43709764e+01, 1.18544037e+02, 1.87431240e+01,\n",
" 2.04521179e+02, 1.97443123e+01, 1.72476761e+02, 9.15527344e-05,\n",
" 0.00000000e+00, 1.38174944e+01, 2.12805542e+02, 2.74857578e+01,\n",
" 1.04479446e+01, 1.16316414e+02, 1.93214893e+01, 6.84824142e+01,\n",
" 1.96816833e+02, 5.76621933e+01, 0.00000000e+00, 2.23715057e+01,\n",
" 0.00000000e+00, 0.00000000e+00, 1.37994690e+02, 2.15656357e+01,\n",
" 5.08315516e+00, 0.00000000e+00, 0.00000000e+00, 3.51489334e+01,\n",
" 1.04980412e+01, 0.00000000e+00, 2.73795258e+02, 3.37753448e+02,\n",
" 1.87713989e+02, 2.93994026e+01, 0.00000000e+00, 0.00000000e+00,\n",
" 2.48333950e+01, 1.72831936e+01, 3.04587769e+02, 4.41159105e+00,\n",
" 2.12090187e+01, 4.74487686e+01, 1.65152624e-01, 0.00000000e+00,\n",
" 0.00000000e+00, 1.64283066e+01, 1.11062164e+02, 0.00000000e+00,\n",
" 4.81408958e+01, 0.00000000e+00, 1.59145447e+02, 1.24982613e+02,\n",
" 6.93545532e+01, 0.00000000e+00, 0.00000000e+00, 3.61904716e+01],\n",
" dtype=float32)\n",
"Coordinates:\n",
" time datetime64[ns] 8B 2024-01-01\n",
" step timedelta64[ns] 8B 00:00:00\n",
" surface float64 8B 0.0\n",
" valid_time datetime64[ns] 8B 2024-01-01\n",
" gribfile_projection object 8B None\n",
" point_latitude (point) float64 800B 29.72 26.96 47.38 ... 35.88 45.14\n",
" point_longitude (point) float64 800B 274.8 255.3 258.4 ... 285.7 294.9\n",
" point_stid (point) object 800B 'SkNxqxCY' ... 'KYvNRgCr'\n",
"Dimensions without coordinates: point