编程_不使用gdal读取tif文件
编程_不使用gdal读取tif文件
ytkz读取tif文件
正常来说,读取tif文件,使用gdal库就能解决了。
gdal库在遥感行业过于强大、简单、易用,以至于很多商业软件的底层也调用了gdal。
平常在python环境下使用gdal库对tif文件进行读写是很简单的,大佬们都把函数、接口封装得很好,咱们直接调用对应的API就OK了。
常用的语句如下:
from osgeo import gdal # 导入gdal
tif_file = r'xxx.tif' # 待读取的tif文件
ds = gdal.Open(tif_file) # 调用gdal的接口,ds是gdal的对象
array = ds.ReadAsArray() # 这个对象中有ReadAsArray方法
以上四句语句,把tif_file全部读取在内存里。
不使用gdal读取tif文件
为什么会有这个奇怪的需求呢?
因为…
我有个朋友,他在linux因为没有linux的权限,安装不了 gdal。
这个朋友肯定不是我。
所以只能通过其他方法,把tif文件读取到内存里。
搜索一番,发现有2种方法可以成功实现这个需求。另外第2种方法只能实现部分需求。
- skimage = good
- tifffile = good
- opencv = no good
skimage
简单例子如下:
from skimage import io
tif_file = r'xxx.tif' # 待读取的tif文件
img = io.imread(tif_file)
从上图可以知道,这张TIF影像的长宽为6908x7300,有4个波段。
这种方法只能读取数值,不能读取坐标信息。但是对我而言是足够了,暂时能满足要求。
tifffile
简单例子如下:
import tifffile as tiff
tif_file = r'xxx.tif' # 待读取的tif文件
img = tiff.imread(tif_file)
显然,这张TIF影像的长宽为6908x7300,有4个波段。
tifffile库也是只能读取数值,不能读取坐标信息。
opencv
简单例子如下:
import cv2
tif_file = r'xxx.tif' # 待读取的tif文件
img = cv2.imread(tif_file)
显然,opencv不能打开tif文件。
小结
综上,对比其他的读取tif的方法,gdal显得格外强大,学地信遥感的人,特别是遥感er,是避不开gdal的。