Python叠加两幅栅格图像的实现方法


Posted in Python onJuly 05, 2019

目的

现有两幅栅格图像,一个是某地区道路栅格图,一个是某地区土地利用类型图,需要将道路叠加到土地利用类型图中,即叠加后,重合的像元值以道路图为准,其余的像元值仍是土地利用类型图原有的像元值。

图1 道路信息图

Python叠加两幅栅格图像的实现方法

图2 土地利用类型图

Python叠加两幅栅格图像的实现方法

图3 结果图

Python叠加两幅栅格图像的实现方法

具体实现

from gdalconst import *
from osgeo import gdal
import osr
import sys
import copy

#叠加两个栅格图像(一个道路栅格图,一个土地利用类型图),两幅图像重叠的像元值都是第一个图像的值,
#未重叠的像元值还是土地利用类型图上的值,最终结果便是土地利用类型图上面多了道路信息。

roadFile = 'E:\\Exercise\\test\\grasstest\\road_rastercalc.tif'
landuseFile = 'E:\\Exercise\\test\\grasstest\\landuse.tif'
roadDs = gdal.Open(roadFile, GA_ReadOnly)
landuseDs = gdal.Open(landuseFile, GA_ReadOnly)
if roadDs is None:
  print 'Can not open ', roadFile
  sys.exit(1)

geotransform = roadDs.GetGeoTransform()
projection=roadDs.GetProjection()
cols = roadDs.RasterXSize
rows = roadDs.RasterYSize
roadBand = roadDs.GetRasterBand(1)
roadData = roadBand.ReadAsArray(0,0,cols,rows)
roadNoData = roadBand.GetNoDataValue()

landuseBand = landuseDs.GetRasterBand(1)
landuseData = landuseBand.ReadAsArray(0,0,cols,rows)
landuseNoData = landuseBand.GetNoDataValue()


result = landuseData

for i in range(0,rows):
  for j in range(0,cols):
    if(abs(roadData[i,j] - 20) < 0.0001):
      result[i,j] = 20
    if((abs(landuseData[i,j] - landuseNoData)>0.0001) and (abs(roadData[i,j] - roadNoData) < 0.0001)):
      result[i,j] = landuseData[i,j]
    if((abs(landuseData[i,j] - landuseNoData)<0.0001) and (abs(roadData[i,j] - roadNoData) < 0.0001)):
      result[i,j] = landuseNoData
#write result to disk
resultPath = 'E:\\Exercise\\test\\grasstest\\result_landuse.tif'

format = "GTiff"  
driver = gdal.GetDriverByName(format)
ds = driver.Create(resultPath, cols, rows, 1, GDT_Float32)
ds.SetGeoTransform(geotransform)
ds.SetProjection(projection)
ds.GetRasterBand(1).SetNoDataValue(landuseNoData)
ds.GetRasterBand(1).WriteArray(result)  
ds = None

print 'ok---------'

以上这篇Python叠加两幅栅格图像的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现简单温度转换的方法
Mar 13 Python
使用Python编写一个模仿CPU工作的程序
Apr 16 Python
Python时间获取及转换知识汇总
Jan 11 Python
Python实现脚本锁功能(同时只能执行一个脚本)
May 10 Python
Python文本处理之按行处理大文件的方法
Apr 09 Python
Python3中的列表生成式、生成器与迭代器实例详解
Jun 11 Python
python+splinter自动刷新抢票功能
Sep 25 Python
对python3标准库httpclient的使用详解
Dec 18 Python
如何用Python制作微信好友个性签名词云图
Jun 28 Python
django项目中使用手机号登录的实例代码
Aug 15 Python
python sorted函数的小练习及解答
Sep 18 Python
开启Django博客的RSS功能的实现方法
Feb 17 Python
用vue.js组件模拟v-model指令实例方法
Jul 05 #Python
python买卖股票的最佳时机(基于贪心/蛮力算法)
Jul 05 #Python
Python 计算任意两向量之间的夹角方法
Jul 05 #Python
python实现两个经纬度点之间的距离和方位角的方法
Jul 05 #Python
Python3+Appium实现多台移动设备操作的方法
Jul 05 #Python
Python PIL读取的图像发生自动旋转的实现方法
Jul 05 #Python
python读出当前时间精度到秒的代码
Jul 05 #Python
You might like
使用PHPMailer实现邮件发送代码分享
2014/10/23 PHP
解读PHP中的垃圾回收机制
2015/08/10 PHP
php mongodb操作类 带几个简单的例子
2016/08/25 PHP
PHP模拟http请求的方法详解
2016/11/09 PHP
PHP实现阿里大鱼短信验证的实例代码
2017/07/10 PHP
PHP Laravel 上传图片、文件等类封装
2017/08/16 PHP
django中的ajax组件教程详解
2018/10/18 PHP
JS调用CS里的带参方法实例
2013/08/01 Javascript
Jquery显示、隐藏元素以及添加删除样式
2013/08/09 Javascript
Javascript与jQuery方法的隐藏与显示
2015/01/19 Javascript
js实现点击获取验证码倒计时效果
2021/01/28 Javascript
详解使用grunt完成requirejs的合并压缩和js文件的版本控制
2017/03/02 Javascript
vue2.0多条件搜索组件使用详解
2020/03/26 Javascript
简单谈谈React中的路由系统
2017/07/25 Javascript
Javascript中toFixed计算错误(依赖银行家舍入法的缺陷)解决方法
2017/08/22 Javascript
JavaScrip关于创建常量的知识点
2017/12/07 Javascript
微信小程序实现导航栏选项卡效果
2020/06/19 Javascript
简单了解JavaScript异步
2019/05/23 Javascript
基于vue和websocket的多人在线聊天室
2020/02/01 Javascript
在vue中封装的弹窗组件使用队列模式实现方法
2020/07/23 Javascript
[00:14]PWL:老朋友Mushi拍VLOG与中国玩家问好
2020/11/04 DOTA
深入理解Python装饰器
2016/07/27 Python
Python实现翻转数组功能示例
2018/01/12 Python
python中的变量如何开辟内存
2018/06/26 Python
Python正则匹配判断手机号是否合法的方法
2020/12/09 Python
Python 实现自动获取种子磁力链接方式
2020/01/16 Python
基于python 等频分箱qcut问题的解决
2020/03/03 Python
Python类绑定方法及非绑定方法实例解析
2020/10/09 Python
python 通过exifread读取照片信息
2020/12/24 Python
法国和欧洲海边和滑雪度假:Pierre & Vacances
2017/01/04 全球购物
奥地利时尚、美容、玩具和家居之家:Kastner & Öhler
2020/04/26 全球购物
高三学生评语大全
2014/04/25 职场文书
班子个人四风问题整改措施
2014/10/04 职场文书
小学班主任自我评价
2015/03/11 职场文书
2015年大学生入党自荐书
2015/03/24 职场文书
《没有任何借口》读后感:完美的执行能力
2020/01/07 职场文书