Come posso risolvere l'errore di Gdalwarp "troppi punti non sono riusciti a trasformare" per rimappare Geostationary in Lambert conforme?


11

Sto cercando di rimappare da Geostationary a Lambert conforme usando gdalwarp. I miei dati di input sono in netcdf, ed è in coordinate geografiche (gradi) e vorrei inviare i dati rimappati su netcdf. Ho creato un file vrt corrispondente per i dati di input netcdf. Gdalwarp produrrà il file netcdf, ma i dati di output sono tutti zeri e ricevo il seguente errore:

Creating output file that is 5120P x 5120L.
Processing input file netcdf.vrt.
ERROR 1: Too many points (441 out of 441) failed to transform,
unable to compute output bounds.
Warning 1: Unable to compute source region for output window 0,0,5120,5120, skipping.
0...10...20...30...40...50...60...70...80...90...100 - done.

Ho provato il seguente comando:

/usr/bin/gdalwarp -s_srs "+proj=geos +h=35785831 +lon_0=-75 +x_0=-0.151844 +y_0=0.151844 +a=6378140 +b=6356754.99999591 +units=degrees +no_defs" -t_srs "+proj=lcc +ellps=clrk66 +a=6378137 +b=6378137 +e=0.0818191910435 +lat_0=24.9999 +lon_0=-95 +lat_1=24.9999 +lat_ts=25.0001 +units=meters +no_defs" -te -1952976.3246 -828316.5944 3248431.6754 4373091.4056 -of netCDF -geoloc -overwrite -r bilinear -ts 5120 5120 netcdf.vrt out.nc

Gdalwarp può rimappare dalle coordinate geografiche ai proiettati? O devo prima tradurre l'area geografica in proiettata? Inoltre, gdalwarp può leggere le informazioni di proiezione direttamente da netcdf o DEVI scrivere prima a .vrt?

Ecco cosa genera gdalinfo dal file di input: (è un file GOES 13 da CLASS)

Size is 512, 512
Coordinate System is `'
Metadata:
  NC_GLOBAL#Conventions=CF-1.4
  NC_GLOBAL#Satellite Sensor=G-13 IMG    
  NC_GLOBAL#Source=McIDAS Area File
Subdatasets:
  SUBDATASET_1_NAME=NETCDF:"goes13.2013.100.165517.BAND_04.nc":auditTrail
  SUBDATASET_1_DESC=[3x80] auditTrail (8-bit character)
  SUBDATASET_2_NAME=NETCDF:"goes13.2013.100.165517.BAND_04.nc":data
  SUBDATASET_2_DESC=[1x665x2036] data (32-bit floating-point)
  SUBDATASET_3_NAME=NETCDF:"goes13.2013.100.165517.BAND_04.nc":lat
  SUBDATASET_3_DESC=[665x2036] lat (32-bit floating-point)
  SUBDATASET_4_NAME=NETCDF:"goes13.2013.100.165517.BAND_04.nc":lon
  SUBDATASET_4_DESC=[665x2036] lon (32-bit floating-point)
Corner Coordinates:
Upper Left  (    0.0,    0.0)
Lower Left  (    0.0,  512.0)
Upper Right (  512.0,    0.0)
Lower Right (  512.0,  512.0)
Center      (  256.0,  256.0)

E ulteriori informazioni gdal sulla variabile di dati:

Driver: netCDF/Network Common Data Format
Files: goes13.2013.100.174518.BAND_04.nc
Size is 2036, 665
Coordinate System is `'
Metadata:
  data#coordinates=lon lat
  data#long_name=0-255 Brightness Temperature
  data#type=VISR
  NC_GLOBAL#Conventions=CF-1.4
  NC_GLOBAL#Satellite Sensor=G-13 IMG    
  NC_GLOBAL#Source=McIDAS Area File
  NETCDF_DIM_EXTRA={time}
  NETCDF_DIM_time_DEF={1,4}
  NETCDF_DIM_time_VALUES=1365615900
  time#long_name=seconds since 1970-1-1 0:0:0
  time#units=seconds since 1970-1-1 0:0:0
Geolocation:
  LINE_OFFSET=0
  LINE_STEP=1
  PIXEL_OFFSET=0
  PIXEL_STEP=1
  SRS=GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9108"]],AUTHORITY["EPSG","4326"]]
  X_BAND=1
  X_DATASET=NETCDF:"goes13.2013.100.174518.BAND_04.nc":lon
  Y_BAND=1
  Y_DATASET=NETCDF:"goes13.2013.100.174518.BAND_04.nc":lat
Corner Coordinates:
Upper Left  (    0.0,    0.0)
Lower Left  (    0.0,  665.0)
Upper Right ( 2036.0,    0.0)
Lower Right ( 2036.0,  665.0)
Center      ( 1018.0,  332.5)
Band 1 Block=2036x1 Type=Float32, ColorInterp=Undefined
  NoData Value=9.96920996838686905e+36
  Metadata:
    coordinates=lon lat
    long_name=0-255 Brightness Temperature
    NETCDF_DIM_time=1365615900
    NETCDF_VARNAME=data
    type=VISR

Qualsiasi aiuto sarà molto apprezzato!


1
La proiezione geografica non utilizzerà gradi; prova i metri. Dove stai ottenendo i valori + x_0 / + y_0? Basato su gdalinfo, non sono sicuro che l'input raster sia georeferenziato. Nelle srs target, hai + a = + b che è una sfera, ma imposta anche + e. Tuttavia, + ellps è per un ellissoide completamente diverso. Anche i vari valori + lat sembrano tutti strani. lat_ts è lat di scala reale, quindi un parallelo standard proprio come lat_1.
mkennedy,

Grazie. Proverò ad usare i metri. Ricevo x_0 e y_0 (scala e offset) dalla definizione GOES anche se questi non sono input richiesti per + proj = geos, quindi posso provare a eliminarli. E grazie per aver sottolineato l'aggiunta dell'ellissoide + e Le definizioni lat per t_srs sono per la definizione AWIPS di lambert (una dimensione di output specifica). Aggiungerò quali informazioni gdal sputano per la specifica variabile di dati al post della domanda (troppo tempo per un commento)
Katie J

La definizione di AWIPS a cui mi riferisco è descritta in questa pagina: nws.noaa.gov/noaaport/html/icdtb48_2.html (il primo è il Lambert che sto tentando di rimappare)
Katie J

1
Hmmm, quindi dice lat / lon WGS84, ma le coordinate degli angoli riportate mi riguardano perché sono solo valori di celle non elaborate. L'LCC è un caso tangente: il singolo standard parallelo / latitudine di origine sono tutti a 25N. Non ho lavorato con nessuno di questi dati, quindi sto solo seguendo le informazioni sui metadati.
mkennedy,

L'immagine non è georeferenziata, ma una fonte è rappresentata da materiali di consumo. Alcune domande: * È possibile eseguire con CPL_DEBUG = GDAL_netCDF? Quindi CPL_DEBUG = GDAL_netCDF / usr / bin / gdalwarp ... Ho il sospetto che ci possa essere un problema con le matrici di geolocalizzazione. * Puoi rendere disponibili i tuoi dati?

Risposte:


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.