ย้ายจากรายชื่อผู้รับจดหมาย gdal-dev:
ในวันจันทร์ที่ 2 ก.ย. 2013 เวลา 19:09 น. David Shean เขียนว่า:
สวัสดีรายการฉันพยายามที่จะทำแพคเกจชุด rasters ของ GTiff ที่มีการฉาย / ขอบเขต / ความละเอียดที่เหมือนกันเป็นไฟล์ NetCDF เดียวสำหรับการกระจาย ฉันใช้เวลาในชั่วโมงที่ผ่านมาเพื่อปรึกษา doc ออนไลน์และเล่นกับ gdal_translate, gdalbuildvrt และ gdalwarp โดยไม่ประสบความสำเร็จ
มีวิธีง่ายๆในการทำเช่นนี้โดยใช้ยูทิลิตี้บรรทัดคำสั่ง gdal ที่มีอยู่? ฉันคิดว่าฉันจะถามก่อนที่จะใช้โซลูชันที่กำหนดเองโดยใช้ NetCDF Python API
ขอบคุณ เดวิด
ในวันอังคารที่ 3 กันยายน 2013 เวลา 10:15 น. Etienne Tourigny เขียนว่า:
สิ่งที่คุณต้องการอาจอยู่นอกขอบเขตของ gdal มันจะต้องมีการจัดการข้อมูลเมตาที่ชาญฉลาดเพื่อให้ gdal_translate ใส่ไว้ในไฟล์เดียว ...
ฉันอยากจะแนะนำให้คุณแปลงพวกมันทั้งหมดเป็น netcdf โดยใช้ gdal_translate แล้วใช้ python-netcdf4 (ไม่ใช่อันจาก numpy / scipy) เพื่อสแต็คพวกมันในมิติชั่วคราว
ในวันอังคารที่ 3 กันยายน 2013 เวลา 7:55 น. "Signell, Richard" เขียนว่า:
เดวิดถ้าคุณโพสต์คำถามของคุณในกลุ่ม GIS stackexchange /gis// ฉันจะให้รหัสตัวอย่างที่น่าจะมีประโยชน์
อุดมไปด้วย
====================
อัปเดต 9/3/13 17:04 PDT
นี่คือเอาต์พุต gdalinfo สำหรับหนึ่งในชุดข้อมูลของฉัน:
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
ติดตามแนวทางการแนะนำของลุค
การสร้าง vrt ทำงานได้ดี:
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>
...
แต่เมื่อฉันพยายามแปลเป็น NC ฉันได้รับข้อผิดพลาดดังต่อไปนี้:
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)
ดังนั้นเมื่อตรวจสอบอย่างใกล้ชิดปรากฏว่า gdal ไม่พึงพอใจกับโปรเจคเตอเรเตอร์เชิงขั้วที่ฉันใช้ (EPSG: 3413) ดูบรรทัดที่ 1570-1582 ของ netcdfdataset.cpp:
การฉายภาพของฉันมีการระบุละติจูด_of_origin แต่ไม่มีการเปรียบเทียบมาตรฐานตามที่คาดไว้โดยไดรเวอร์ netcdf