Jak rozwiązać błąd Gdalwarp „zbyt wiele punktów nie udało się przekształcić” dla ponownego mapowania Geostationary na konformat Lamberta?


11

Próbuję przekształcić z Geostationary na konformizm Lambert za pomocą gdalwarp. Moje dane wejściowe są w netcdf i są we współrzędnych geograficznych (stopniach) i chciałbym wyrenderować odwzorowane dane do netcdf. Utworzyłem odpowiedni plik vrt dla wejściowych danych netcdf. Gdalwarp wyświetli plik netcdf, ale dane wyjściowe są zerami i pojawia się następujący błąd:

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.

Próbowałem wykonać następujące polecenie:

/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

Czy gdalwarp może odwzorowywać współrzędne geograficzne na rzutowane? A może najpierw muszę przełożyć geograficzny na rzutowany? Ponadto, czy gdalwarp może odczytać informacje o projekcji bezpośrednio z netcdf, czy najpierw musisz napisać do .vrt?

Oto, co gdalinfo wyprowadza z pliku wejściowego: (jest to plik GOES 13 z 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)

I dodatkowe informacje gdal na temat zmiennej danych:

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

Każda pomoc będzie mile widziana!


1
W rzutowaniu geograficznym nie będą używane stopnie; spróbuj metrów. Gdzie otrzymujesz wartości + x_0 / + y_0? Na podstawie gdalinfo nie jestem pewien, czy wejściowy raster jest georeferencyjny. W srs docelowym masz + a = + b, która jest kulą, ale także ustawisz + e. Jednak + ellps dotyczy zupełnie innej elipsoidy. Różne wartości + lat również wydają się dziwne. lat_ts to lat rzeczywistej skali, więc standardowy równoległy, podobnie jak lat_1.
mkennedy

Dziękuję Ci. Spróbuję użyć mierników. Otrzymuję x_0 i y_0 (skala i przesunięcia) z definicji GOES, chociaż nie są to wymagane dane wejściowe dla + proj = geos, więc mogę spróbować je usunąć. I dzięki za zwrócenie uwagi na dodanie elipsoidy + e. Definicje lat dla t_srs są dla definicji AWIPS Lamberta (określony rozmiar wyjściowy). Dodam to, co wylewa informacja gdal dla określonej zmiennej danych do postu pytań (za długo, by komentować)
Katie J

Definicja AWIPS, o której mowa, jest opisana na tej stronie: nws.noaa.gov/noaaport/html/icdtb48_2.html (pierwsza to Lambert, do którego próbuję zmienić mapę )
Katie J

1
Hmmm, więc mówi lat / lon WGS84, ale zgłaszane współrzędne narożne dotyczą mnie, ponieważ są to tylko surowe wartości komórek. LCC jest przypadkiem stycznym - pojedynczy standardowy równoległość / szerokość geograficzna źródła wynosi 25N. Nie pracowałem z żadnymi z tych danych, więc przechodzę do informacji o metadanych.
mkennedy

Obraz nie jest georeferencyjny, ale źródłem jest srs. Kilka pytań: * Czy możesz uruchomić z CPL_DEBUG = GDAL_netCDF? CPL_DEBUG = GDAL_netCDF / usr / bin / gdalwarp ... Podejrzewam, że może występować problem z tablicami geolokalizacji. * Czy możesz udostępnić swoje dane?

Odpowiedzi:


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.