Создание файла Nexrad level 2 с использованием Metpy и Pyart, вычисления координат - PullRequest
0 голосов
/ 06 апреля 2019

Я пытался построить данные отражательной способности из одного и того же файла 2-го уровня nexrad, используя как Metpy, так и pyart, и результат, кажется, сильно отличается, особенно, я вижу, что metpy и pyart вычисляют координаты очень по-разному:

В MetPy координаты рассчитываются как:

(from NEXRAD_Level_2_File sample)
xlocs = ref_range * np.sin(np.deg2rad(az[:, np.newaxis]))
ylocs = ref_range * np.cos(np.deg2rad(az[:, np.newaxis]))

В pyart он рассчитывается как:

(antenna_to_cartesian method called by get_gate_x_y_z in radar.py)
theta_e = elevations * np.pi / 180.0    # elevation angle in radians.
theta_a = azimuths * np.pi / 180.0      # azimuth angle in radians.
R = 6371.0 * 1000.0 * 4.0 / 3.0     # effective radius of earth in meters.
r = ranges * 1000.0                 # distances to gates in meters.

z = (r ** 2 + R ** 2 + 2.0 * r * R * np.sin(theta_e)) ** 0.5 - R
s = R * np.arcsin(r * np.cos(theta_e) / (R + z))  # arc length in m.
x = s * np.sin(theta_a)
y = s * np.cos(theta_a)
return x, y, z

Подскажите, пожалуйста, в чем здесь разница?

1 Ответ

1 голос
/ 08 апреля 2019

В MetPy он вычисляет x и y, используя только то, что называется «наклонным диапазоном», то есть диапазоном вдоль пути, по которому распространяется радиолокационный луч.В PyART он вычисляет x и y с использованием диапазона земли и учитывает кривизну земли и типичные влияния распространения луча.Два вычисления будут очень похожи для низких углов места (как типичное сканирование с наименьшим 0,5 градуса для данных NEXRAD).Для более высоких отметок это приведет к совершенно разным результатам.

Метод PyART является более точным подходом и действительно необходим, если вы пытаетесь правильно геолокации радиолокационных ворот, например, на карте.

...