Skip to content

Commit

Permalink
chore: remove quite unnecessary constants.py
Browse files Browse the repository at this point in the history
  • Loading branch information
CyanideCN committed Dec 9, 2024
1 parent 432131b commit 936c9cb
Show file tree
Hide file tree
Showing 12 changed files with 68 additions and 69 deletions.
8 changes: 4 additions & 4 deletions cinrad/calc.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from functools import wraps

import numpy as np
from xarray import DataArray, Dataset, merge
from xarray import DataArray, Dataset

try:
from pykdtree.kdtree import KDTree
Expand All @@ -17,7 +17,6 @@
from cinrad.utils import *
from cinrad.grid import grid_2d, resample
from cinrad.projection import height, get_coordinate
from cinrad.constants import deg2rad
from cinrad.error import RadarCalculationError
from cinrad._typing import Volume_T
from cinrad.common import get_dtype
Expand Down Expand Up @@ -364,12 +363,13 @@ def get_section(
stlon = self.rl[0].site_longitude
stp = np.round(
get_coordinate(
start_polar[0], start_polar[1] * deg2rad, 0, stlon, stlat
start_polar[0], np.deg2rad(start_polar[1]), 0, stlon, stlat
),
2,
)
enp = np.round(
get_coordinate(end_polar[0], end_polar[1] * deg2rad, 0, stlon, stlat), 2
get_coordinate(end_polar[0], np.deg2rad(end_polar[1]), 0, stlon, stlat),
2,
)
elif start_cart and end_cart:
stp = start_cart
Expand Down
13 changes: 0 additions & 13 deletions cinrad/constants.py

This file was deleted.

3 changes: 1 addition & 2 deletions cinrad/grid.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
except ImportError:
from scipy.spatial import KDTree

from cinrad.constants import deg2rad
from cinrad._typing import Number_T


Expand Down Expand Up @@ -61,7 +60,7 @@ def resample(
"""
# Target grid
Rrange = np.arange(d_reso, distance.max() + d_reso, d_reso)
Trange = np.linspace(0, 360, a_reso + 1) * deg2rad
Trange = np.linspace(0, np.pi * 2, a_reso + 1)
dist, theta = np.meshgrid(Rrange, Trange)
# Original grid
d, t = np.meshgrid(distance, azimuth)
Expand Down
2 changes: 1 addition & 1 deletion cinrad/hca.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

import numpy as np

from cinrad.constants import MODULE_DIR
from cinrad.utils import MODULE_DIR
from cinrad._typing import Boardcast_T

PARAMS = np.load(os.path.join(MODULE_DIR, "data", "hca_params.npy"))
Expand Down
2 changes: 1 addition & 1 deletion cinrad/io/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

import numpy as np

from cinrad.constants import MODULE_DIR
from cinrad.utils import MODULE_DIR
from cinrad._typing import Number_T

with open(os.path.join(MODULE_DIR, "data", "radar_station.json"), "r") as buf:
Expand Down
28 changes: 14 additions & 14 deletions cinrad/io/level2.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import numpy as np
import xarray as xr

from cinrad.constants import deg2rad, con
from cinrad.projection import get_coordinate, height
from cinrad.error import RadarDecodeError
from cinrad.io.base import RadarBase, prepare_file
Expand Down Expand Up @@ -162,6 +161,7 @@ def __init__(
f.close()

def _SAB_reader(self, f: Any, dtype: str = "SAB"):
ANGLE_CONVERSION = (180 / 4096) * 0.125
_header_size = 128
if dtype == "SAB":
radar_dtype = SAB_dtype
Expand All @@ -181,8 +181,8 @@ def _SAB_reader(self, f: Any, dtype: str = "SAB"):
self.Rreso = data["gate_length_r"][0] / 1000
self.Vreso = data["gate_length_v"][0] / 1000
boundary = np.where(data["radial_num"] == 1)[0]
self.el = data["elevation"][boundary] * con
self.azimuth = data["azimuth"] * con * deg2rad
self.el = data["elevation"][boundary] * ANGLE_CONVERSION
self.azimuth = np.deg2rad(data["azimuth"] * ANGLE_CONVERSION)
dv = data["v_reso"][0]
self.nyquist_v = data["nyquist_vel"][boundary] / 100
self.task_name = "VCP{}".format(data["vcp_mode"][0])
Expand Down Expand Up @@ -360,7 +360,7 @@ def _CC2_reader(self, f: Any):
other_info = np.frombuffer(f.read(CC2_other.itemsize), CC2_other)
self.task_name = other_info["sScanName"][0].decode()
data_block = np.frombuffer(f.read(), CC2_data)
raw_azimuth = data_block["usAzimuth"] / 100 * deg2rad
raw_azimuth = np.deg2rad(data_block["usAzimuth"] / 100)
raw_dbz = np.ma.masked_equal(data_block["ucCorZ"].astype(int), 0)
dbz = (raw_dbz - 64) / 2
zdr = np.ma.masked_equal(data_block["siZDR"].astype(int), -32768) * 0.01
Expand Down Expand Up @@ -402,20 +402,20 @@ def get_azimuth_angles(self, scans: Optional[int] = None) -> np.ndarray:
return self.data[scans]["azimuth"]
elif self.radartype == "CC":
if scans is None:
return (
np.array(np.linspace(0, 360, 512).tolist() * self.get_nscans())
* deg2rad
return np.array(
np.linspace(0, np.pi * 2, 512).tolist() * self.get_nscans()
)

else:
return np.array(np.linspace(0, 360, 512).tolist()) * deg2rad
return np.linspace(0, np.pi * 2, 512)
elif self.radartype in ["SC", "CD"]:
if scans is None:
return (
np.array(np.linspace(0, 360, 360).tolist() * self.get_nscans())
* deg2rad
return np.array(
np.linspace(0, np.pi * 2, 360).tolist() * self.get_nscans()
)

else:
return np.array(np.linspace(0, 360, 360).tolist()) * deg2rad
return np.linspace(0, np.pi * 2, 360)

def get_elevation_angles(
self, scans: Optional[int] = None
Expand Down Expand Up @@ -871,7 +871,7 @@ def get_data(self, tilt: int, drange: Number_T, dtype: str) -> xr.Dataset:
start_lon = self.stationlon
start_lat = self.stationlat
end_lon, end_lat = get_coordinate(
self.drange, azimuth * deg2rad, 0, self.stationlon, self.stationlat
self.drange, np.deg2rad(azimuth), 0, self.stationlon, self.stationlat
)
ds = xr.Dataset(
{dtype: da},
Expand All @@ -897,7 +897,7 @@ def get_data(self, tilt: int, drange: Number_T, dtype: str) -> xr.Dataset:

def projection(self, reso: float) -> tuple:
r = self.get_range(self.drange, reso)
theta = np.array(self.aux[self.tilt]["azimuth"]) * deg2rad
theta = np.deg2rad(self.aux[self.tilt]["azimuth"])
lonx, latx = get_coordinate(
r, theta, self.elev, self.stationlon, self.stationlat
)
Expand Down
31 changes: 15 additions & 16 deletions cinrad/io/level3.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
from xarray import Dataset, DataArray

from cinrad.projection import get_coordinate, height
from cinrad.constants import deg2rad
from cinrad._typing import Boardcast_T
from cinrad.io.base import RadarBase, prepare_file, _get_radar_info
from cinrad.io._dtype import *
Expand Down Expand Up @@ -89,7 +88,7 @@ def __init__(self, file: Any):
az = np.linspace(0, 360, data.shape[0])
az += start_az
az[az > 360] -= 360
self.az = az * deg2rad
self.az = np.deg2rad(az)
self.reso = self.max_range / data.shape[1]
self.rng = np.arange(self.reso, self.max_range + self.reso, self.reso)
else:
Expand Down Expand Up @@ -324,7 +323,7 @@ def current(self, storm_id: str) -> tuple:
curpos = self.info[storm_id]["current storm position"]
dist, az = xy2polar(*curpos)
lonlat = get_coordinate(
dist, az * deg2rad, 0, self.handler.lon, self.handler.lat, h_offset=False
dist, np.deg2rad(az), 0, self.handler.lon, self.handler.lat, h_offset=False
)
return lonlat

Expand All @@ -348,7 +347,7 @@ def track(self, storm_id: str, tracktype: str) -> Optional[tuple]:
for dis, azi in zip(pol_pos[0], pol_pos[1]):
pos_tup = get_coordinate(
dis,
azi * deg2rad,
np.deg2rad(azi),
0,
self.handler.lon,
self.handler.lat,
Expand Down Expand Up @@ -394,7 +393,7 @@ def get_hail_param(self, storm_id: str) -> dict:
xy = out.get("current storm position")
dist, az = xy2polar(*xy)
lonlat = get_coordinate(
dist, az * deg2rad, 0, self.handler.lon, self.handler.lat, h_offset=False
dist, np.deg2rad(az), 0, self.handler.lon, self.handler.lat, h_offset=False
)
out["position"] = tuple(lonlat)
return out
Expand Down Expand Up @@ -568,7 +567,7 @@ def _parse_radial_fmt(self):
az = np.linspace(0, 360, raw.shape[0])
az += azi[0]
az[az > 360] -= 360
azi = az * deg2rad
azi = np.deg2rad(az)
# self.azi = np.deg2rad(azi)
dist = np.arange(start_range // reso + 1, end_range // reso + 1, 1) * reso
lon, lat = get_coordinate(
Expand Down Expand Up @@ -618,7 +617,7 @@ def _parse_raster_fmt(self):
max_range = int(nx / 2 * reso)
y = np.linspace(max_range, max_range * -1, ny) / 111 + self.stationlat
x = (
np.linspace(max_range * -1, max_range, nx) / (111 * np.cos(y * deg2rad))
np.linspace(max_range * -1, max_range, nx) / (111 * np.cos(np.deg2rad(y)))
+ self.stationlon
)
lon, lat = np.meshgrid(x, y)
Expand Down Expand Up @@ -676,7 +675,7 @@ def _parse_cappi_fmt(self):
az = np.linspace(0, 360, raw.shape[0])
az += azi0[0]
az[az > 360] -= 360
azi = az * deg2rad
azi = np.deg2rad(az)
dist = np.arange(start_range + reso, end_range + reso, reso)
raw = np.vstack(data).astype(int)
raw = np.ma.masked_less(raw, 5)
Expand Down Expand Up @@ -760,7 +759,7 @@ def _parse_swp_fmt(self):
swp_percent = DataArray(swp["swp"])
lon, lat = get_coordinate(
swp_range / 1000,
swp_azimuth * deg2rad,
np.deg2rad(swp_azimuth),
self.params["elevation"],
self.stationlon,
self.stationlat,
Expand Down Expand Up @@ -794,7 +793,7 @@ def _parse_hail_fmt(self):
hail_severe_possibility = DataArray(hail_table["hail_severe_possibility"])
lon, lat = get_coordinate(
hail_range / 1000,
hail_azimuth * deg2rad,
np.deg2rad(hail_azimuth),
self.params["elevation"],
self.stationlon,
self.stationlat,
Expand Down Expand Up @@ -832,7 +831,7 @@ def _parse_meso_fmt(self):
meso_range = np.array(meso_table["meso_range"])[:, np.newaxis]
lon, lat = get_coordinate(
meso_range / 1000,
meso_azimuth * deg2rad,
np.deg2rad(meso_azimuth),
self.params["elevation"],
self.stationlon,
self.stationlat,
Expand Down Expand Up @@ -871,7 +870,7 @@ def _parse_tvs_fmt(self):
tvs_range = np.array(tvs_table["tvs_range"])[:, np.newaxis]
lon, lat = get_coordinate(
tvs_range / 1000,
tvs_azimuth * deg2rad,
np.deg2rad(tvs_azimuth),
self.params["elevation"],
self.stationlon,
self.stationlat,
Expand Down Expand Up @@ -910,7 +909,7 @@ def _parse_sti_fmt(self):
curr_direction = sti_current["direction"]
curr_lon, curr_lat = get_coordinate(
curr_range / 1000,
curr_azimuth * deg2rad,
np.deg2rad(curr_azimuth),
self.params["elevation"],
self.stationlon,
self.stationlat,
Expand All @@ -929,7 +928,7 @@ def _parse_sti_fmt(self):
fore_range = np.array(forecast_positon["range"])[:, np.newaxis]
fore_lon, fore_lat = get_coordinate(
fore_range / 1000,
fore_azimuth * deg2rad,
np.deg2rad(fore_azimuth),
self.params["elevation"],
self.stationlon,
self.stationlat,
Expand All @@ -948,7 +947,7 @@ def _parse_sti_fmt(self):
his_range = np.array(history_positon["range"])[:, np.newaxis]
his_lon, his_lat = get_coordinate(
his_range / 1000,
his_azimuth * deg2rad,
np.deg2rad(his_azimuth),
self.params["elevation"],
self.stationlon,
self.stationlat,
Expand Down Expand Up @@ -1009,7 +1008,7 @@ def _parse_uam_fmt(self):
uam_deg = DataArray(uam_table["deg"])
lon, lat = get_coordinate(
uam_range / 1000,
uam_azimuth * deg2rad,
np.deg2rad(uam_azimuth),
self.params["elevation"],
self.stationlon,
self.stationlat,
Expand Down
18 changes: 10 additions & 8 deletions cinrad/projection.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@

import numpy as np

from cinrad.constants import deg2rad, rm
from cinrad._typing import Boardcast_T, Number_T

RM = 8500


def height(
distance: Boardcast_T, elevation: Union[int, float], radarheight: Number_T
Expand All @@ -27,9 +28,10 @@ def height(
-------
height
"""

return (
distance * np.sin(elevation * deg2rad)
+ distance**2 / (2 * rm)
distance * np.sin(np.deg2rad(elevation))
+ distance**2 / (2 * RM)
+ radarheight / 1000
)

Expand Down Expand Up @@ -67,13 +69,13 @@ def get_coordinate(
"""
elev = elevation if h_offset else 0
if isinstance(azimuth, np.ndarray):
deltav = np.cos(azimuth[:, np.newaxis]) * distance * np.cos(elev * deg2rad)
deltah = np.sin(azimuth[:, np.newaxis]) * distance * np.cos(elev * deg2rad)
deltav = np.cos(azimuth[:, np.newaxis]) * distance * np.cos(np.deg2rad(elev))
deltah = np.sin(azimuth[:, np.newaxis]) * distance * np.cos(np.deg2rad(elev))
else:
deltav = np.cos(azimuth) * distance * np.cos(elev * deg2rad)
deltah = np.sin(azimuth) * distance * np.cos(elev * deg2rad)
deltav = np.cos(azimuth) * distance * np.cos(np.deg2rad(elev))
deltah = np.sin(azimuth) * distance * np.cos(np.deg2rad(elev))
deltalat = deltav / 111
actuallat = deltalat + centerlat
deltalon = deltah / (111 * np.cos(actuallat * deg2rad))
deltalon = deltah / (111 * np.cos(np.deg2rad(actuallat)))
actuallon = deltalon + centerlon
return actuallon, actuallat
Loading

0 comments on commit 936c9cb

Please sign in to comment.