Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

When using the resample_nearest function in pyresample for interpolation, it sometimes produces NaN values.

Abierto
#698 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
42/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
numpy, python
Área
data

Línea de trabajo

Empieza ejecutando el reproductor proporcionado con los datos de NumPy indicados y llamadas repetidas a resample_nearest. Lee el punto de entrada de resample_nearest y la ruta de remuestreo relevante del árbol kd de pyresample para determinar por qué un canal puede convertirse completamente en NaN a pesar de que haya datos de origen cercanos. Se considera terminado cuando las ejecuciones repetidas producen resultados deterministas sin la salida inesperada completamente all-NaN, con una prueba de regresión si la estructura de pruebas existente del proyecto lo permite.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

When I use the following code to interpolate the data, I find that the results occasionally contain NaN values after multiple runs.

import numpy as np
from pyresample.geometry import SwathDefinition, AreaDefinition
from pyresample.kd_tree import resample_nearest
import os
def resample_wgs84_to_grid(lat2d, lon2d, data2d,
                           lons_1d, lats_1d,
                           radius_of_influence=50000,
                           fill_value=np.nan):
    np.random.seed(42)

    src_swath = SwathDefinition(lons=np.asarray(lon2d),
                                lats=np.asarray(lat2d))


    proj_dict = {'proj': 'longlat', 'datum': 'WGS84'}
    area_extent = (lons_1d[0], lats_1d[0],
                   lons_1d[-1], lats_1d[-1])
    dst_area = AreaDefinition(
        'dst_grid', 'WGS84 regular', proj_dict,
        proj_dict,
        width=lons_1d.size,
        height=lats_1d.size,
        area_extent=area_extent
    )


    data_resampled = resample_nearest(
        src_swath, np.asarray(data2d),
        dst_area,
        radius_of_influence=radius_of_influence,
        fill_value=fill_value,nprocs=1

    )
    lon2d_dst, lat2d_dst = np.meshgrid(lons_1d, lats_1d)
    return data_resampled, lon2d_dst, lat2d_dst
fy4_data = np.load(r'H:\Yan\DATA\冰雹云\FY4\FY4B\AGRI\L1\FDI\DISK\4000M\2023\20230323\FY4B-_AGRI--_N_DISK_1330E_L1-_FDI-_MULT_NOM_20230323164500_20230323165959_4000M_V0001.npz')
ir = fy4_data['ir']
lat_f = fy4_data['lat']
lon_f = fy4_data['lon']
DeterministicInterpolator
target_lons = np.linspace(110,120,256)
target_lats = np.linspace(20,30,256)
for i in range(ir.shape[0]):
    d = copy.deepcopy(ir)
    grid_product, grid_x, grid_y = resample_wgs84_to_grid(
                    lat_f.astype(np.float64), lon_f.astype(np.float64), d[i].astype(np.float64),
                    lons_1d=target_lons.astype(np.float64),  # 目标经度轴
                    lats_1d=target_lats.astype(np.float64),  # 目标纬度轴
                    radius_of_influence=15000
            )
    print(np.nanmin(grid_product))

The expected result under normal operation should be

217.77999877929688
199.92999267578125
210.5399932861328
211.10000610351562
167.19000244140625
214.86000061035156
214.22999572753906
212.9199981689453
213.42999267578125

However, after repeated runs, a value of NaN may randomly appear in a certain channel, resulting in the following output:

217.77999877929688
nan
G:\py_project\radar_code\dor_2_nc\123.py:19: RuntimeWarning: All-NaN slice encountered
  print(np.nanmin(grid_product))
210.5399932861328
211.10000610351562
167.19000244140625
214.86000061035156
214.22999572753906
212.9199981689453
213.42999267578125
Lenguaje dominante
Python
Estrellas
388
Forks
102
Merge medio
5 d 17 h
PR fusionados (30 d)
5

Preparar el entorno

  • Sin Dockerfile ni archivo de Docker Compose
  • Tiene una plantilla de pull request
  • Sin guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de pytroll/pyresample

Todos los issues de pytroll/pyresample

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.