gdal对栅格数据进行重投影以及重采样

最近要用服务器处理数据,但是服务器上没有arcpy,所以重投影以及重采样的任务只能交给gdal来做,目前网上的好多代码都是要有一个参考的栅格,但是像arcgis里往往不需要这么多参数

这里记录一下我的代码:

首先,我的目的是将landsat数据从投影坐标转成地理坐标,然后重采样到0.00025度。

GDAL库的Warp函数可以做到这一点,建议大家在使用的时候去仔细看看下面的官方文档(WarpOptions),看了之后才发现gdal真的可以完全取代arcpy(菜鸡发言)

https://gdal.org/python/osgeo.gdal-module.html#Warp

代码如下:

import gdal
pathin = ''
pathout = ''
gdal.Warp(pathout,pathin,dstSRS ='EPSG:4326',xRes=0.00025,yRes=0.00025,targetAlignedPixels=True)

代码其实就一行,解释一下dstSRS是destination Spatial Reference System(目标空间参考系统),就是要转成的目标坐标系。这里采用的是European Petroleum Survey Group [EPSG](欧洲石油勘探组织),这个组织发布了全球不同坐标系的基准文件,只要我们输入EPSG:num(范围1024-32767),计算机就可以识别这个坐标系,下面是Wikipedia的解释:

EPSG Geodetic Parameter Dataset (also EPSG registry) is a public registry of geodetic datums, spatial reference systems, Earth ellipsoids, coordinate transformations and related units of measurement. Each entity is assigned an EPSG code between 1024-32767 along with a standard machine-readable well-known text (WKT) representation. (竟然是一个石油组织发布的)

EPSG:4326就是现在最常见的WGS84。

另外Warp还提供了一个非常好用的选项,targetAlignedPixels:whether to force output bounds to be multiple of output resolution,是否强制让输出的坐标的边界是分辨率的整数倍,这个功能真的太好用了,因为很多时候如果投影坐标转成地理坐标,不加上targetAlignedPixels=True的话出来的坐标都是无限不循环小数,如果后期想编程处理的话就没有一个很好的坐标基准。

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
对于Python遥感影像采样,可以使用GDAL(Geospatial Data Abstraction Library)库来实现。GDAL是一个开源的地理信息系统(GIS)库,它提供了许多用于处理数据的功能,包括采样。 下面是一个简单的示例代码,演示如何使用GDAL进行遥感影像采样: ```python from osgeo import gdal def resample_image(input_path, output_path, pixel_size): # 打开输入影像 input_ds = gdal.Open(input_path) # 获取输入影像的投影和仿射变换参数 projection = input_ds.GetProjection() geotransform = input_ds.GetGeoTransform() # 获取输入影像的宽度和高度 width = input_ds.RasterXSize height = input_ds.RasterYSize # 计算采样后的宽度和高度 new_width = int(width / pixel_size) new_height = int(height / pixel_size) # 创建输出影像 driver = gdal.GetDriverByName('GTiff') output_ds = driver.Create(output_path, new_width, new_height, 1, gdal.GDT_Float32) # 设置输出影像的投影和仿射变换参数 output_ds.SetProjection(projection) output_ds.SetGeoTransform((geotransform[0], pixel_size, 0, geotransform[3], 0, -pixel_size)) # 执行采样 gdal.ReprojectImage(input_ds, output_ds, None, None, gdal.GRA_Bilinear) # 关闭数据集 input_ds = None output_ds = None # 使用示例 input_path = 'input_image.tif' output_path = 'resampled_image.tif' pixel_size = 10 # 新的像素大小(单位:米) resample_image(input_path, output_path, pixel_size) ``` 在上面的示例中,`input_path`是输入影像的路径,`output_path`是采样后的输出影像的路径,`pixel_size`是新的像素大小,用于指定采样后每个像素的大小(单位:米)。代码将使用双线性插值进行采样操作,并将结果保存为GeoTIFF式的影像文件。 请注意,执行此代码需要安装GDAL库。你可以使用pip安装它:`pip install gdal`。 希望这个示例对你有帮助!如果你有任何其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值