Di chuyển từ danh sách gửi thư gdal-dev:
Vào Thứ Hai, ngày 2 tháng 9 năm 2013 lúc 7:09 tối, David Shean đã viết:
Xin chào, tôi đang cố gắng đóng gói một bộ thời gian của các trình quét GTiff với phép chiếu / mức độ / độ phân giải giống hệt nhau như một tệp NetCDF để phân phối. Tôi đã dành một giờ qua để tư vấn tài liệu trực tuyến và chơi với gdal_translate, gdalbuildvrt và gdalwarp mà không thành công.
Có một cách dễ dàng để làm điều này bằng cách sử dụng các tiện ích dòng lệnh gdal hiện có? Tôi hình dung tôi sẽ hỏi trước khi sử dụng giải pháp tùy chỉnh bằng API Python của NetCDF.
Cảm ơn. -David
Trên Tue, ngày 3 tháng 9 năm 2013 lúc 10:15 sáng, Etienne Tourigny đã viết:
những gì bạn muốn có lẽ nằm ngoài phạm vi của gdal. Nó sẽ yêu cầu một số quản lý siêu dữ liệu thông minh để gdal_translate đặt chúng trong một tệp duy nhất ...
Tôi khuyên bạn nên chuyển đổi tất cả chúng thành netcdf bằng cách sử dụng gdal_translate và sau đó sử dụng python-netcdf4 (không phải từ numpy / scipy) để xếp chúng theo chiều thời gian.
Trên Tue, ngày 3 tháng 9 năm 2013, lúc 7:55 sáng, "Signell, Richard" đã viết:
David, Nếu bạn đăng câu hỏi của mình lên nhóm stackexchange của địa chỉ /gis// tôi sẽ cung cấp một mã ví dụ hữu ích.
-Giàu có
====================
Cập nhật 9/3/13 17:04 PDT
Đây là đầu ra gdalinfo cho một trong các bộ dữ liệu đầu vào của tôi:
gdalinfo 20120901T2024_align_x+22.19_y+3.68_z+14.97_warp.tif
Driver: GTiff/GeoTIFF
Files: 20120901T2024_align_x+22.19_y+3.68_z+14.97_warp.tif
Size is 10666, 13387
Coordinate System is:
PROJCS["unnamed",
GEOGCS["WGS 84",
DATUM["WGS_1984",
SPHEROID["WGS 84",6378137,298.257223563,
AUTHORITY["EPSG","7030"]],
AUTHORITY["EPSG","6326"]],
PRIMEM["Greenwich",0],
UNIT["degree",0.0174532925199433],
AUTHORITY["EPSG","4326"]],
PROJECTION["Polar_Stereographic"],
PARAMETER["latitude_of_origin",70],
PARAMETER["central_meridian",-45],
PARAMETER["scale_factor",1],
PARAMETER["false_easting",0],
PARAMETER["false_northing",0],
UNIT["metre",1,
AUTHORITY["EPSG","9001"]]]
Origin = (-211346.063781524338992,-2245136.291794800199568)
Pixel Size = (5.000000000000000,-5.000000000000000)
Metadata:
AREA_OR_POINT=Area
Image Structure Metadata:
COMPRESSION=LZW
INTERLEAVE=BAND
Corner Coordinates:
Upper Left ( -211346.064,-2245136.292) ( 50d22'39.70"W, 69d23'55.59"N)
Lower Left ( -211346.064,-2312071.292) ( 50d13'22.38"W, 68d48'10.75"N)
Upper Right ( -158016.064,-2245136.292) ( 49d 1'33.33"W, 69d26'16.42"N)
Lower Right ( -158016.064,-2312071.292) ( 48d54'35.06"W, 68d50'27.28"N)
Center ( -184681.064,-2278603.792) ( 49d38' 1.32"W, 69d 7'17.04"N)
Band 1 Block=256x256 Type=Float32, ColorInterp=Gray
NoData Value=-32767
Theo dõi cách tiếp cận được đề xuất của Luke.
Thế hệ vrt hoạt động tốt:
gdalbuildvrt -separate newtest.vrt *warp.tif
<VRTDataset rasterXSize="10666" rasterYSize="13387">
<SRS>PROJCS["unnamed",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433],AUTHORITY["EPSG","4326"]],PROJECTION["Polar_Stereographic"],PARAMETER["latitude_of_origin",70],PARAMETER["central_meridian",-45],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]]]</SRS>
<GeoTransform> -2.1134606378152434e+05, 5.0000000000000000e+00, 0.0000000000000000e+00, -2.2451362917948002e+06, 0.0000000000000000e+00, -5.0000000000000000e+00</GeoTransform>
<VRTRasterBand dataType="Float32" band="1">
<NoDataValue>-3.27670000000000E+04</NoDataValue>
<ComplexSource>
<SourceFilename relativeToVRT="1">20110619T2024_align_x+15.51_y+1.15_z+12.10_warp.tif</SourceFilename>
<SourceBand>1</SourceBand>
<SourceProperties RasterXSize="10666" RasterYSize="13387" DataType="Float32" BlockXSize="256" BlockYSize="256" />
<SrcRect xOff="0" yOff="0" xSize="10666" ySize="13387" />
<DstRect xOff="0" yOff="0" xSize="10666" ySize="13387" />
<NODATA>-32767</NODATA>
</ComplexSource>
</VRTRasterBand>
<VRTRasterBand dataType="Float32" band="2">
<NoDataValue>-3.27670000000000E+04</NoDataValue>
<ComplexSource>
<SourceFilename relativeToVRT="1">20110802T2024_align_x+16.33_y+2.14_z+12.02_warp.tif</SourceFilename>
<SourceBand>1</SourceBand>
<SourceProperties RasterXSize="10666" RasterYSize="13387" DataType="Float32" BlockXSize="256" BlockYSize="256" />
<SrcRect xOff="0" yOff="0" xSize="10666" ySize="13387" />
<DstRect xOff="0" yOff="0" xSize="10666" ySize="13387" />
<NODATA>-32767</NODATA>
</ComplexSource>
</VRTRasterBand>
...
Nhưng khi tôi cố dịch sang nc, tôi gặp lỗi sau:
gdal_translate -of netcdf newtest.vrt newtest.nc
Input file size is 10666, 13387
Warning 1: Variable has 0 dimension(s) - not supported.
0...10...20...30...40...50ERROR 1: netcdf error #-62 : NetCDF: One or more variable sizes violate format constraints .
at (netcdfdataset.cpp,SetDefineMode,1574)
ERROR 1: netcdf error #-39 : NetCDF: Operation not allowed in define mode .
at (netcdfdataset.cpp,IWriteBlock,1435)
ERROR 1: netCDF scanline write failed: NetCDF: Operation not allowed in define mode
ERROR 1: An error occured while writing a dirty block
...ERROR 1: netcdf error #-39 : NetCDF: Operation not allowed in define mode .
at (netcdfdataset.cpp,IWriteBlock,1435)
ERROR 1: netCDF scanline write failed: NetCDF: Operation not allowed in define mode
ERROR 1: netcdf error #-62 : NetCDF: One or more variable sizes violate format constraints .
at (netcdfdataset.cpp,~netCDFDataset,1548)
Vì vậy, khi kiểm tra kỹ hơn, có vẻ như gdal không hài lòng với phép chiếu lập thể cực mà tôi đang sử dụng (EPSG: 3413). Xem các dòng 1570-1582 của netcdfdataset.cpp:
Phép chiếu của tôi có latitude_of_origin được chỉ định nhưng không có giá trị tương đương tiêu chuẩn như trình điều khiển netcdf mong đợi.