Làm rõ: Tôi bằng cách nào đó đã bỏ qua khía cạnh chính: không sử dụng os.system hoặc subprocess - chỉ là python API.Làm thế nào để dự án và định lại mẫu lưới để khớp với lưới khác với python GDAL?
Tôi đang cố chuyển đổi một phần của lưới bù đắp NOX GTX cho các phép biến đổi dữ liệu dọc và không hoàn toàn theo cách thực hiện điều này trong GDAL bằng python. Tôi muốn lấy một lưới (trong trường hợp này là Lưới phân bổ độ sâu, nhưng nó có thể là một dấu địa lý) và sử dụng nó làm mẫu mà tôi muốn làm. Nếu tôi có thể làm điều này đúng, tôi có cảm giác rằng nó sẽ giúp mọi người tận dụng loại dữ liệu này.
Đây là những gì tôi có mà chắc chắn không hoạt động. Khi tôi chạy gdalinfo trên tập dữ liệu đích (dst_ds), nó không khớp với BAG lưới nguồn.
from osgeo import gdal, osr
bag = gdal.Open(bag_filename)
gtx = gdal.Open(gtx_filename)
bag_srs = osr.SpatialReference()
bag_srs.ImportFromWkt(bag.GetProjection())
vrt = gdal.AutoCreateWarpedVRT(gtx, None, bag_srs.ExportToWkt(), gdal.GRA_Bilinear, 0.125)
dst_ds = gdal.GetDriverByName('GTiff').Create(out_filename, bag.RasterXSize, bag.RasterYSize,
1, gdalconst.GDT_Float32)
dst_ds.SetProjection(bag_srs.ExportToWkt())
dst_ds.SetGeoTransform(vrt.GetGeoTransform())
def warp_progress(pct, message, user_data):
return 1
gdal.ReprojectImage(gtx, dst_ds, None, None, gdal.GRA_NearestNeighbour, 0, 0.125, warp_progress, None)
file Ví dụ (nhưng bất kỳ hai lưới nơi họ chồng chéo lên nhau, nhưng trong dự báo khác nhau sẽ làm gì):
- http://surveys.ngdc.noaa.gov/mgg/NOS/coast/F00001-F02000/F00574/BAG/ F00574_MB_2m_MLLW_2of3.bag
- http://vdatum.noaa.gov/download/data/VDatum_National.zip MENHMAgome01_8301/mllw.gtx
Dòng lệnh tương đương với những gì tôi đang cố gắng làm:
gdalwarp -tr 2 -2 -te 369179 4773093 372861 4775259 -of VRT -t_srs EPSG:2960 \
MENHMAgome01_8301/mllw.gtx mllw-2960-crop-resample.vrt
gdal_translate mllw-2960-crop-resample.{vrt,tif}
Đầu ra của WKT cho bag_srs là gì? Bạn đã xác minh nó là cùng một SRS mà "túi" cho? Tôi đã đi qua một số WKT đó là ... tốt, không được định dạng tốt ... Tôi nhận thấy phiên bản dòng lệnh xác định EPSG: 2960 (đó là NAD83?). Tôi đã không sử dụng gdal trong một thời gian dài, nhưng nếu tôi chạy vào điều này tôi đoán tôi sẽ bắt đầu bằng cách đảm bảo rằng reprojection đang sử dụng các giá trị SRS thích hợp. Xin lỗi, không phải là một câu trả lời hay ... đó là lý do tại sao nó là một bình luận. – Kasapo