最近要用服务器处理数据,但是服务器上没有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的话出来的坐标都是无限不循环小数,如果后期想编程处理的话就没有一个很好的坐标基准。