簡體   English   中英

GDAL 的 GetProjection() 和 GetGeoTransform() 的 Rasterio 等價物?

[英]Rasterio equivalent for GDAL's GetProjection() and GetGeoTransform()?

我有一個 GeoTIFF,我在 OpenCV 中做了很多處理。 處理后,它丟失了它的空間信息,所以我需要將它重新插入。在 GDAL 中,我會在處理之前從原始圖像中提取它,然后將其與后處理的圖像一起推回,如下所示:

#open original geotiff
original_img = gdal.Open('/path-to-file/original_img.tif', 1)
crs = original_img.GetProjection()
gt = original_img.GetGeoTransform()
del original_ds

#open cv processes here....write post-processed file

# open processed raster and set the projection and geotransform
img = gdal.Open('/path-to-file/processed_img.tif', 1)
img.SetProjection(crs)
img.SetGeoTransform(gt)

有沒有辦法在 Rasterio 中做到這一點?

根據RasterIO 文檔,您可以簡單地訪問開放數據集上的crstransform屬性,以分別獲取投影和地理變換。 然后,您可以在打開時將它們傳遞回 output 圖像文件。

例子:

# Open original Geotiff
original_img = rasterio.open("path/to/input.tif")
# Extract spatial metadata
input_crs = original_img.crs
input_gt  = original.transform

# Do your processing. For this example, just read first band of input dataset
processed_img = original_img.read(1)

# Prepare output geotiff file. We give crs and gt read from input as spatial metadata
with rasterio.open(
  'path/to/output.tif',
  'w',
  driver = 'GTiff',
  count = 1,
  height = processed_img.shape[0],
  width  = processed_img.shape[1],
  dtype  = processed_img.dtype,
  crs    = input_crs,
  transform = input_gt  
) as output:
  output.write(processed_img, 1)

上述示例的注釋

  • 假設在處理圖像時保留圖像尺寸。 如果沒有,您將不得不相應地推導出空間變換。
  • 假設單波段數據集

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM