Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

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

Aperta
#698 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
42/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
numpy, python
Ambito
data

Direzione di ricerca

Inizia eseguendo il reproducer fornito con i dati NumPy indicati e chiamate ripetute a resample_nearest. Leggi l’entry point di resample_nearest e il percorso di ricampionamento rilevante dell’albero kd di pyresample per determinare perché un canale possa diventare interamente NaN nonostante la presenza di dati sorgente nelle vicinanze. Il lavoro è completato quando le esecuzioni ripetute producono risultati deterministici senza l’output imprevisto completamente all-NaN, con un test di regressione se la struttura di test esistente del progetto lo supporta.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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
Lingua principale
Python
Stelle
388
Fork
103
Merge medio
5g 17h
PR unite (30g)
5

Preparare l'ambiente

  • Nessun Dockerfile né file Docker Compose
  • Ha un modello di pull request
  • Nessuna guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di pytroll/pyresample

Tutte le issue di pytroll/pyresample

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.