|
16 | 16 | fetch_gfs_file_return_dataset, |
17 | 17 | fetch_hiresw_file_return_dataset, |
18 | 18 | fetch_nam_file_return_dataset, |
19 | | - fetch_noaaruc_sounding, |
20 | 19 | fetch_open_elevation, |
21 | 20 | fetch_rap_file_return_dataset, |
22 | 21 | fetch_wyoming_sounding, |
@@ -142,11 +141,11 @@ class Environment: |
142 | 141 | Environment.atmospheric_model_type : string |
143 | 142 | Describes the atmospheric model which is being used. Can only assume the |
144 | 143 | following values: ``standard_atmosphere``, ``custom_atmosphere``, |
145 | | - ``wyoming_sounding``, ``NOAARucSounding``, ``Forecast``, ``Reanalysis``, |
| 144 | + ``wyoming_sounding``, ``Forecast``, ``Reanalysis``, |
146 | 145 | ``Ensemble``. |
147 | 146 | Environment.atmospheric_model_file : string |
148 | 147 | Address of the file used for the atmospheric model being used. Only |
149 | | - defined for ``wyoming_sounding``, ``NOAARucSounding``, ``Forecast``, |
| 148 | + defined for ``wyoming_sounding``, ``Forecast``, |
150 | 149 | ``Reanalysis``, ``Ensemble`` |
151 | 150 | Environment.atmospheric_model_dict : dictionary |
152 | 151 | Dictionary used to properly interpret ``netCDF`` and ``OPeNDAP`` files. |
@@ -1053,24 +1052,6 @@ def set_atmospheric_model( # pylint: disable=too-many-statements |
1053 | 1052 |
|
1054 | 1053 | .. _weather.uwyo: http://weather.uwyo.edu/upperair/sounding.html |
1055 | 1054 |
|
1056 | | - - ``NOAARucSounding``: sets pressure, temperature, wind-u |
1057 | | - and wind-v profiles and surface elevation obtained from |
1058 | | - an upper air sounding given by the file parameter through |
1059 | | - an URL. This URL should point to a data webpage obtained |
1060 | | - through NOAA's Ruc Sounding servers, which can be accessed |
1061 | | - in `rucsoundings`_. Selecting ROABs as the |
1062 | | - initial data source, specifying the station through it's |
1063 | | - WMO-ID and opting for the ASCII (GSD format) button, the |
1064 | | - following example URL opens up: |
1065 | | -
|
1066 | | - https://rucsoundings.noaa.gov/get_raobs.cgi?data_source=RAOB&latest=latest&start_year=2019&start_month_name=Feb&start_mday=5&start_hour=12&start_min=0&n_hrs=1.0&fcst_len=shortest&airport=83779&text=Ascii%20text%20%28GSD%20format%29&hydrometeors=false&start=latest |
1067 | | -
|
1068 | | - Any ASCII GSD format page from this server can be read, |
1069 | | - so information from virtual soundings such as GFS and NAM |
1070 | | - can also be imported. |
1071 | | -
|
1072 | | - .. _rucsoundings: https://rucsoundings.noaa.gov/ |
1073 | | -
|
1074 | 1055 | - ``windy_atmosphere``: sets pressure, temperature, wind-u and |
1075 | 1056 | wind-v profiles and surface elevation obtained from the Windy API. |
1076 | 1057 | See file argument to specify the model as either ``ECMWF``, |
@@ -1279,8 +1260,6 @@ def set_atmospheric_model( # pylint: disable=too-many-statements |
1279 | 1260 | self.process_standard_atmosphere() |
1280 | 1261 | elif type == "wyoming_sounding": |
1281 | 1262 | self.process_wyoming_sounding(file) |
1282 | | - elif type == "noaarucsounding": |
1283 | | - self.process_noaaruc_sounding(file) |
1284 | 1263 | elif type == "custom_atmosphere": |
1285 | 1264 | self.process_custom_atmosphere(pressure, temperature, wind_u, wind_v) |
1286 | 1265 | elif type == "windy": |
@@ -1689,107 +1668,18 @@ def process_noaaruc_sounding(self, file): # pylint: disable=too-many-statements |
1689 | 1668 |
|
1690 | 1669 | See also |
1691 | 1670 | -------- |
1692 | | - More details can be found at: https://rucsoundings.noaa.gov/. |
| 1671 | + This method is deprecated and will be fully deleted in version 1.8.0. |
1693 | 1672 |
|
1694 | 1673 | Returns |
1695 | 1674 | ------- |
1696 | 1675 | None |
1697 | 1676 | """ |
1698 | | - # Request NOAA Ruc Sounding from file url |
1699 | | - response = fetch_noaaruc_sounding(file) |
1700 | | - |
1701 | | - # Split response into lines |
1702 | | - lines = response.text.split("\n") |
1703 | | - |
1704 | | - # Process GSD format (https://rucsoundings.noaa.gov/raob_format.html) |
1705 | | - |
1706 | | - # Extract elevation data |
1707 | | - for line in lines: |
1708 | | - # Split line into columns |
1709 | | - columns = re.split(" +", line)[1:] |
1710 | | - if len(columns) > 0: |
1711 | | - if columns[0] == "1" and columns[5] != "99999": |
1712 | | - # Save elevation |
1713 | | - self.elevation = float(columns[5]) |
1714 | | - else: |
1715 | | - # No elevation data available |
1716 | | - pass |
1717 | | - |
1718 | | - pressure_array = [] |
1719 | | - barometric_height_array = [] |
1720 | | - temperature_array = [] |
1721 | | - wind_speed_array = [] |
1722 | | - wind_direction_array = [] |
1723 | | - |
1724 | | - for line in lines: |
1725 | | - # Split line into columns |
1726 | | - columns = re.split(" +", line)[1:] |
1727 | | - if len(columns) < 6: |
1728 | | - # skip lines with less than 6 columns |
1729 | | - continue |
1730 | | - if columns[0] in ["4", "5", "6", "7", "8", "9"]: |
1731 | | - # Convert columns to floats |
1732 | | - columns = np.array(columns, dtype=float) |
1733 | | - # Select relevant columns |
1734 | | - altitude, pressure, temperature, wind_direction, wind_speed = columns[ |
1735 | | - [2, 1, 3, 5, 6] |
1736 | | - ] |
1737 | | - # Check for missing values |
1738 | | - if altitude == 99999: |
1739 | | - continue |
1740 | | - # Save values only if they are not missing |
1741 | | - if pressure != 99999: |
1742 | | - pressure_array.append([altitude, pressure]) |
1743 | | - barometric_height_array.append([pressure, altitude]) |
1744 | | - if temperature != 99999: |
1745 | | - temperature_array.append([altitude, temperature]) |
1746 | | - if wind_direction != 99999: |
1747 | | - wind_direction_array.append([altitude, wind_direction]) |
1748 | | - if wind_speed != 99999: |
1749 | | - wind_speed_array.append([altitude, wind_speed]) |
1750 | | - |
1751 | | - # Convert lists to arrays |
1752 | | - pressure_array = np.array(pressure_array) |
1753 | | - barometric_height_array = np.array(barometric_height_array) |
1754 | | - temperature_array = np.array(temperature_array) |
1755 | | - wind_speed_array = np.array(wind_speed_array) |
1756 | | - wind_direction_array = np.array(wind_direction_array) |
1757 | | - |
1758 | | - # Converts 10*hPa to Pa and save values |
1759 | | - pressure_array[:, 1] = 10 * pressure_array[:, 1] |
1760 | | - self.__set_pressure_function(pressure_array) |
1761 | | - # Converts 10*hPa to Pa and save values |
1762 | | - barometric_height_array[:, 0] = 10 * barometric_height_array[:, 0] |
1763 | | - self.__set_barometric_height_function(barometric_height_array) |
1764 | | - |
1765 | | - # Convert C to K and save values |
1766 | | - temperature_array[:, 1] = temperature_array[:, 1] / 10 + 273.15 |
1767 | | - self.__set_temperature_function(temperature_array) |
1768 | | - |
1769 | | - # Process wind-u and wind-v |
1770 | | - # Converts Knots to m/s |
1771 | | - wind_speed_array[:, 1] = wind_speed_array[:, 1] * 1.852 / 3.6 |
1772 | | - wind_heading_array = wind_direction_array[:, :] * 1 |
1773 | | - # Convert wind direction to wind heading |
1774 | | - wind_heading_array[:, 1] = (wind_direction_array[:, 1] + 180) % 360 |
1775 | | - wind_u = wind_speed_array[:, :] * 1 |
1776 | | - wind_v = wind_speed_array[:, :] * 1 |
1777 | | - wind_u[:, 1] = wind_speed_array[:, 1] * np.sin( |
1778 | | - np.deg2rad(wind_heading_array[:, 1]) |
1779 | | - ) |
1780 | | - wind_v[:, 1] = wind_speed_array[:, 1] * np.cos( |
1781 | | - np.deg2rad(wind_heading_array[:, 1]) |
| 1677 | + warnings.warn( |
| 1678 | + "NOAA RUC models are no longer available. " |
| 1679 | + "This method is deprecated and will be fully deleted in version 1.8.0.", |
| 1680 | + DeprecationWarning, |
1782 | 1681 | ) |
1783 | | - |
1784 | | - # Save wind data |
1785 | | - self.__set_wind_direction_function(wind_direction_array) |
1786 | | - self.__set_wind_heading_function(wind_heading_array) |
1787 | | - self.__set_wind_speed_function(wind_speed_array) |
1788 | | - self.__set_wind_velocity_x_function(wind_u) |
1789 | | - self.__set_wind_velocity_y_function(wind_v) |
1790 | | - |
1791 | | - # Save maximum expected height |
1792 | | - self.max_expected_height = pressure_array[-1, 0] |
| 1682 | + return file |
1793 | 1683 |
|
1794 | 1684 | def process_forecast_reanalysis( |
1795 | 1685 | self, file, dictionary |
|
0 commit comments