m0_59977945 2024-09-24 15:57 采纳率: 16.7%
浏览 3
问题最晚将于10月08日00:00点结题

如何把栅格数据的每个像素的中心点进行整体偏移?

如图,比如一个30m的栅格数据,将每个像素中心点向右整体偏移1m

img

  • 写回答

6条回答 默认 最新

  • 软件技术NINI 2024-09-24 16:15
    关注

    将栅格数据的每个像素中心点整体偏移通常涉及到地理空间分析中的坐标系统平移操作。在Python中,可以使用GDAL库(Geospatial Data Abstraction Library)或者一些专门处理遥感数据的库如Rasterio来实现这个过程。以下是一个简单的步骤:

    1. 导入所需库

      from osgeo import gdal, osr
      
    2. 读取原始栅格数据

      src_dataset = gdal.Open('input_raster.tif')
      src_band = src_dataset.GetRasterBand(1)
      
    3. 获取源数据的几何信息

      transform = src_dataset.GetGeoTransform()
      cols = src_dataset.RasterXSize
      rows = src_dataset.RasterYSize
      ul_x, ul_y = transform[0], transform[3]
      lr_x, lr_y = ul_x + transform[1] * cols, ul_y + transform[5] * rows
      
    4. 计算偏移量和新坐标系

      x_offset, y_offset = desired_offset_x, desired_offset_y
      new.ul_x = ul_x + x_offset
      new.lr_x = lr_x + x_offset
      new.ul_y = ul_y - y_offset  # 因为Y轴方向是向下的,所以需要减去偏移量
      new.lr_y = lr_y - y_offset
      
    5. 创建新文件并保存偏移后的图像

      driver = gdal.GetDriverByName('GTiff')
      dst_filename = 'output_raster_offset.tif'
      dst_dataset = driver.Create(dst_filename, cols, rows, 1, src_band.DataType)
      dst_dataset.SetGeoTransform(new)
      dst_band = dst_dataset.GetRasterBand(1)
      dst_band.WriteArray(src_band.ReadAsArray())
      dst_dataset.FlushCache()
      
    6. 关闭文件

      src_dataset = None
      dst_dataset = None
      
    评论

报告相同问题?

问题事件

  • 赞助了问题酬金15元 今天
  • 创建了问题 9月24日

悬赏问题

  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?