位置: IT常识 - 正文

基于python的gdal读取遥感影像(基于Python的图书馆信息管理系统研发)

编辑:rootadmin
基于python的gdal读取遥感影像 基于python的gdal读写遥感影像1. gdal介绍2. 代码详解2.1 读取数据2.2 写入影像3. 完整案例1. gdal介绍

推荐整理分享基于python的gdal读取遥感影像(基于Python的图书馆信息管理系统研发),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:基于Python的逻辑回归算法,基于Python的招聘网站数据分析,基于Python的电影推荐系统,基于Python的大数据分析,基于Python的旅游推荐系统,基于Python的金融分析与风险管理(第2版)pdf,基于python的GDP增长模型,基于Python的大数据分析,内容如对您有帮助,希望把文章链接给更多的朋友!

GDAL(Geospatial Data Abstraction Library)主要用来读取地理空间数据,现在的GDAL包并不是单独的GDAL,而是集成了GDAL和OGR的。OGR用于处理矢量数据。因此,GDAL既可以用来处理栅格也可以处理矢量文件。

2. 代码详解基于python的gdal读取遥感影像(基于Python的图书馆信息管理系统研发)

下面代码主要为读写tif的代码,图像其实就是一个二维矩阵,其他格式的遥感影像都可以参考。包括nc,hdf等等。

2.1 读取数据# 调包from osgeo import gdalimport numpy as np打开影像:gdal.Open()为打开图像的操作,gdal.GetDriverByName()为注册哪种格式的数据。通常影像为Geotiff格式,也可以不写参数,默认注册所有格式。# 打开图像并创建空间 data = gdal.Open(filename) driver = gdal.GetDriverByName('GTiff')获取数据的基本信息:# 数据集的基本信息 print('Raster Driver : {d}\n'.format(d=driver.ShortName)) print('影像的波段数: ', data.RasterCount) img_width, img_height = data.RasterXSize, data.RasterYSize print('影像的列,行数: {r}rows * {c}colums'.format(r=img_width, c=img_height)) print('栅格数据的空间参考:{}'.format(data.GetGeoTransform())) # 栅格数据的6参数 print('投影信息:{}\n'.format(data.GetProjection())) # 栅格数据的投影

输出如下: 关于数据的基本信息,其中数据的空间参考和投影信息最为重要。在写影像时是必不可少的参数。GetGeoTransform()为获取数据的仿射变换矩阵,6个参数,记录了影像的左上角坐标,旋转,xy方向上的分辨率;GetProjection()为获取影响的投影信息,即影像的地理参考,一般都为WGS84。 若数据格式为NC或者HDF,仿射变换矩阵需要计算。

Raster Driver : GTiff影像的波段数: 6影像的列行数: 1143rows * 721colums栅格数据的空间参考:(429255.0, 30.0, 0.0, 4429725.0, 0.0, -30.0)投影信息:PROJCS["WGS 84 / UTM zone 50N",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",117],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","32650"]]将数据转换为数组形式,方便进行后期处理。 注意:python中的索引从0开始到n-1,而波段读取的索引从1到n。# 读取第一个波段并将其转为array band_1 = data.GetRasterBand(1) band_1 = band_1.ReadAsArray(0, 0, img_width, img_height) # 行,列2.2 写入影像

写一个遥感影像分为两部分:①完成这张图像,包括图像的行列号,像素点的数据类型。②影像在地球上的位置,即空间信息。包括仿射变换矩阵和地理位置。

# ①存储参数设置driver = gdal.GetDriverByName("GTiff")etype = gdal.GDT_Float32# ②orginal_file为原始影像,获取原始影像的空间参考和投影信息。将其写入新的影像proj = gdal.Open(orginal_file).GetProjection()transform = gdal.Open(orginal_file).GetGeoTransform()# 创建存储影像基本信息:# result_file结果影像# arr为需要存储的影像矩阵(行*列),写如的格式为先列后行。band表示波段数量,etype是数据类型ds = driver.Create(result_file, arr.shape[1], arr.shape[0], band, etype) # eg.写单波段图像,并且将空间参考和投影信息写入。ds.GetRasterBand(1).WriteArray(arr)ds.SetGeoTransform(transform)ds.SetProjection(proj)ds.FlushCache()del ds3. 完整案例

两个函数,分别为文件的读写。此处随意选择一张tif格式的数据尝试,对需要更改的参数进行了详细的说明。

# 导入所需要的包from osgeo import gdalimport numpy as np# 读取遥感影像,获取影像的基本信息def read_tif(filename, b=1):'''filename为文件名称,b为波段数量;读取遥感影像并将其每个band转化为一列变量。b=1是默认参数,如果读取单波段影像,不需要输入;当输入影像为多波段时,需要将b改为影像的波段数。'''# 打开图像并创建空间 data = gdal.Open(filename) driver = gdal.GetDriverByName('GTiff') # driver = data.GetDriver() # 数据集的基本信息 print('Raster Driver : {d}\n'.format(d=driver.ShortName)) print('影像的波段数: ', data.RasterCount) img_width, img_height = data.RasterXSize, data.RasterYSize print('影像的列,行数: {r}rows * {c}colums'.format(r=img_width, c=img_height)) print('栅格数据的空间参考:{}'.format(data.GetGeoTransform())) # 栅格数据的6参数 print('投影信息:{}\n'.format(data.GetProjection())) # 栅格数据的投影 # 读取影像的元数据,获取各个波段的信息 print(data.GetMetadata()) band = None for i in range(b): band_1 = data.GetRasterBand(i + 1) band_1 = band_1.ReadAsArray(0, 0, img_width, img_height).flatten() # 行,列 if band is None: band = band_1 else: band = np.vstack((band, band_1)) return band.T def arr2raster(self, orginal_file, result_file, arr, band=1): ''' orginal_file为原始影像;目的为获取原始影像的地理参考。 result_file为要保存的文件的名称,arr为转存的矩阵,proj和transform分别为投影信息和仿射变换矩阵 band=1,表示默认情况生成单波段图像,若要多波段图像,在输入的时候更改band为要创建的波段数 ''' driver = gdal.GetDriverByName("GTiff") etype = gdal.GDT_Float32 proj = gdal.Open(orginal_file).GetProjection() transform = gdal.Open(orginal_file).GetGeoTransform() # no_data_value = '' if band == 1: ds = driver.Create(result_file, arr.shape[1], arr.shape[0], band, etype) # 行,列 # 写单波段图像 ds.GetRasterBand(1).WriteArray(arr) else: ds = driver.Create(result_file, arr.shape[2], arr.shape[1], band, etype) # 写多波段图像 for i in range(band): ds.GetRasterBand(i + 1).WriteArray(arr[i, :, :]) ds.SetGeoTransform(transform) ds.SetProjection(proj) ds.FlushCache() del ds# 案例演示:读取影像# 使用的是landsat5/TM影像,查看演示效果filename=r'C:\Users\lenovo\Desktop\test.tif'datasets = read_tif(filename, b=6)# 案例演示:写入影像# 实际中,会对影像进行操作,将结果再次转为tif。例如:将分类结果转为tif影像# arr为需要转存的矩阵,格式是行*列。此处将原始影像的band1转为tif,行列号721 * 1143arr = datasets[:,0].reshape(721, 1143)result_file = r'C:\Users\lenovo\Desktop\result.tif'arr2raster(filename, result_file, arr, band=1)

本文链接地址:https://www.jiuchutong.com/zhishi/299251.html 转载请保留说明!

上一篇:js二十五道面试题(含答案)(js面试2021)

下一篇:npm : 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。(无法将node项识别为)

  • 怎样确定新媒体内容运营的方向(怎样确定新媒体的内容)

    怎样确定新媒体内容运营的方向(怎样确定新媒体的内容)

  • 苹果原装充电器怎么查真伪(苹果原装充电器和非原装的区别)

    苹果原装充电器怎么查真伪(苹果原装充电器和非原装的区别)

  • 荣耀30pro有没有呼吸灯呢(荣耀30pro有没有红外线遥控功能)

    荣耀30pro有没有呼吸灯呢(荣耀30pro有没有红外线遥控功能)

  • iphone8p64g够用吗

    iphone8p64g够用吗

  • 6s屏幕分辨率怎么设置(iphone6plus屏幕分辨率)

    6s屏幕分辨率怎么设置(iphone6plus屏幕分辨率)

  • 别人登我支付宝有提示吗(别人登我支付宝会变黄码么)

    别人登我支付宝有提示吗(别人登我支付宝会变黄码么)

  • 怎么隐藏快手id号码(怎么隐藏快手ip)

    怎么隐藏快手id号码(怎么隐藏快手ip)

  • 一个手机号可以注册几个闲鱼(一个手机号可以注册两个微信吗)

    一个手机号可以注册几个闲鱼(一个手机号可以注册两个微信吗)

  • 荣耀10x是升降还是挖孔(荣耀10xmax升降摄像头吗)

    荣耀10x是升降还是挖孔(荣耀10xmax升降摄像头吗)

  • 腾讯视频VIP如何取消续费(腾讯视频VIP如何退款)

    腾讯视频VIP如何取消续费(腾讯视频VIP如何退款)

  • qq音乐举报人别人会知道吗(qq音乐举报成功后果)

    qq音乐举报人别人会知道吗(qq音乐举报成功后果)

  • 京东发货店铺售后是什么意思(京东发货店铺售后退货运费)

    京东发货店铺售后是什么意思(京东发货店铺售后退货运费)

  • 华为p40与小米10对比(华为P40与小米10哪个好)

    华为p40与小米10对比(华为P40与小米10哪个好)

  • 爱奇艺能看电视台直播吗(爱奇艺能看电视吗?)

    爱奇艺能看电视台直播吗(爱奇艺能看电视吗?)

  • 小米投影仪青春版不能手动调屏幕大小吗(小米投影仪青春版2怎么用手机遥控)

    小米投影仪青春版不能手动调屏幕大小吗(小米投影仪青春版2怎么用手机遥控)

  • 华为mate20出厂自带膜吗(华为mate20pro出厂设置)

    华为mate20出厂自带膜吗(华为mate20pro出厂设置)

  • 探探每天早上6点刷新吗(探探每天刷新时间)

    探探每天早上6点刷新吗(探探每天刷新时间)

  • 拼多多退货多了有影响吗(拼多多退货多了是不是没有运费险了)

    拼多多退货多了有影响吗(拼多多退货多了是不是没有运费险了)

  • 查找我的iphone在哪里ios13(查找我的iphone在此设备上不可用)

    查找我的iphone在哪里ios13(查找我的iphone在此设备上不可用)

  • x5.tbs.orp是什么

    x5.tbs.orp是什么

  • 智联招聘如何撤销简历(智联招聘如何撤销)

    智联招聘如何撤销简历(智联招聘如何撤销)

  • 微信语音电话对方忙线中是什么意思(微信语音电话对方听不见我说话)

    微信语音电话对方忙线中是什么意思(微信语音电话对方听不见我说话)

  • 同一个苹果id怎么不共享通话记录(同一个苹果id怎么改锁屏密码)

    同一个苹果id怎么不共享通话记录(同一个苹果id怎么改锁屏密码)

  • 巴伐利亚阿尔卑斯山脉中的米滕瓦尔德小屋,德国 (© Sebastian Frölich/Offset by Shutterstock)(巴伐利亚知乎)

    巴伐利亚阿尔卑斯山脉中的米滕瓦尔德小屋,德国 (© Sebastian Frölich/Offset by Shutterstock)(巴伐利亚知乎)

  • HTML零基础入门教程完整版(html零基础入门教程)

    HTML零基础入门教程完整版(html零基础入门教程)

  • 企业所得税广告费30%扣除
  • 产品分成方式取得收入什么意思举例
  • 公司纳税证明怎么开
  • 固定资产中的动态投资包括
  • 培训属于什么服务行业
  • 资产总额和权益总额必然相等吗
  • 社保公司部分交多少比例
  • 空调压缩机属于什么系统
  • 补提上年度所得税影响本年所得税吗
  • 未投入使用的道路
  • 两处以上取得工资如何交社保
  • 增值税的简易计税是什么意思
  • 赠送给客户的产品发货单要填写单价?
  • 电子承兑汇票转让怎么操作
  • 其他应付款能转收入么
  • 出租车公司给车都上什么保险
  • 做天猫合理避税吗
  • 混合销售和兼营的区别
  • 本年累计金额和上年金额
  • 电子发票隔月可以报销吗
  • 企业应交增值税的计算公式
  • 领备用金时会计怎么做账
  • 医疗卫生机构可以向其他单位或者个人分发第一类疫苗
  • 笔记本怎么清理D盘
  • 最新双色球开奖号码
  • 事业单位租赁收入的处理
  • 长期股权投资权益法四个明细科目
  • 房产税有哪些种类
  • 出差的住宿费较高的原因
  • 违约金条款的特点
  • win10更新失败怎么回事
  • 政府专项基金是什么
  • 政府搬迁补偿款不够建房怎么办
  • php缩放图片
  • PHP:imagepolygon()的用法_GD库图像处理函数
  • wordpress优化seo
  • 瑞士·劳特布龙嫩小镇
  • 涉及产权的案例
  • kk协议
  • 专项应付款怎么转固定资产
  • 企业所得税核算分录
  • 营业外支出贷方在利润表怎么体现
  • 员工买材料报销分录
  • js array
  • 增值税申报表第18栏怎么来的
  • 企业管理费会计怎么做账
  • 非定额备用金的使用范围
  • sql2008自动启动服务
  • 小企业长期债券投资交易费用
  • 跨年发生退货税务处理
  • 资金过账属于洗钱吗
  • 小规模纳税人的税率是多少
  • 出售其他债权投资产生的收益为什么计入留存收益
  • 收到采购材料发票款未付会计分录
  • 销售退货和销售换货的区别
  • 土地回收补偿费怎么算
  • 固定资产报废如何记账
  • 什么是委托加工原材料
  • 咨询费的支出范围
  • 购买药材的发票如何抵扣?
  • windows10周年纪念版
  • xp系统如何批量复制文件路径
  • xp windows功能在哪里
  • win8安装出现了一些问题
  • xp系统内存占用多少
  • win10控制面板中的应用显示不可用
  • unity着色器在哪
  • c# opengl绘图
  • 计算机图形学中点画圆法
  • android deam
  • 批处理怎么学
  • jquery实现自动轮播
  • Javascript & DHTML 实例编程(教程)(三)初级实例篇1—上传文件控件实例
  • JavaScript lastIndexOf方法入门实例(计算指定字符在字符串中最后一次出现的位置)
  • javascript面向对象精要pdf
  • 安家费购房补贴区别
  • 电子税务局登录入口
  • 税务局 周六
  • 扬州 税务
  • 转租土地合法吗现在
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设