GDAL(Python version)jpg 转 geotiff

问题来源

工作中需求方提出将遥感瓦片图像拼接后转存为tiff图像。即,如何将jpg转为geotiff?作为小白的我开始了研究,以下文章中如有不对的地方,欢迎评论区进行批评指正。

创建文件

GDAL 中有两种方法创建文件,分别是CreateCopy() 和 Create()。从字面意思上理解,一个是从现有的数据源进行拷贝复制,另一个则是显式地写入元数据和栅格数据。需要注意的是,所有创建文件的的驱动程序都支持CreateCopy(),而只有少数驱动程序支持Create()。

CreateCopy()

该方法从现有源数据中拷贝信息。可以传递特定格式的创建选项,可以报告复制进度。

Python代码:

src_ds = gdal.Open(src_filename)
dst_ds = driver.CreateCopy(dst_filename, src_ds, strict=0)
# Once we're done, close properly the dataset
dst_ds = None
src_ds = None

CreateCopy()方法返回一个可写的数据集,必须正确关闭它才能完成数据集的写入并将其刷新到磁盘。strict参数 表示是否严格执行拷贝,为0的时候表示不会出现致命错误。

更复杂的情况可能涉及传递创建选项和使用预定义的进度监视器

src_ds = gdal.Open(src_filename)
dst_ds = driver.CreateCopy(dst_filename, src_ds, strict=0,
                        options=["TILED=YES", "COMPRESS=PACKBITS"])
# Once we're done, close properly the dataset
dst_ds = None
src_ds = None

Create()

对于不只是从现有文件复制到新文件的情况,Create()方法采用与CreateCopy()类似的选项列表,但必须显式提供图像大小、带区数和带区类型。

dst_ds = driver.Create(dst_filename, xsize=512, ysize=512,
                    bands=1, eType=gdal.GDT_Byte)

这里的参数bands含义栅格图像Bands理解
成功创建数据集后,必须将所有适当的元数据和栅格数据写入文件,根据使用情况不同选择不同数据,以下是简单的一个例子。

from osgeo import osr
import numpy
dst_ds.SetGeoTransform([444720, 30, 0, 3751320, 0, -30])
srs = osr.SpatialReference()
srs.SetUTM(11, 1)
srs.SetWellKnownGeogCS("NAD27")
dst_ds.SetProjection(srs.ExportToWkt())
raster = numpy.zeros((512, 512), dtype=numpy.uint8)
dst_ds.GetRasterBand(1).WriteArray(raster)
# Once we're done, close properly the dataset
dst_ds = None

主要

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值