打开栅格数据的正确方式
作者:阿振
博客:https://blog.csdn.net/theonegis/article/details/80089375
修改时间:2018-05-16
声明:本文为博主原创文章,转载请注明原文出处
以一个简单例子说明如何打开栅格影像
下面的例子打开一副GeoTIFF影像,输出了影像的一些信息,然后遍历了所有波段,输出波段的一些信息
1 | import gdal |
输出如下:
1 | 投影信息:PROJCS["WGS 84 / UTM zone 49N",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",111],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],AUTHORITY["EPSG","32649"]] |
如何将Dataset转为Numpy的ndarray
当我们得到Band
对象以后,如果按照GDAL的C/C++接口惯例,我们可以使用WriteRaster()
方法进行数据写入(C/C++接口是WriteBlock()
),但是在Python中我们有很强大的ndarray
对象,所以我们一般是将Band
对象中存储的数据转为ndarray
进行处理以后,然后再写回去。
下面介绍几种转换的方法:
- 在
Dataset
级别进行转换,转换结果是一个三维数组,第一个维度是波段数 - 在
Band
级别进行转换,转换的结果是一个二维数据 - 使用
gdal_array
模块中的LoadFile()
函数直接进行(相当于第一种转换)
1 | import gdal |
输出结果:
1 | 数据的尺寸:(3, 4800, 4800) |
使用gdal_array
模块
1 | from osgeo import gdal_array |
在GDAL中使用Python的异常对象
1 | import gdal |