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网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
Apr 25 Python
Python自动生产表情包
Mar 17 Python
python实现Floyd算法
Jan 03 Python
浅谈Python Opencv中gamma变换的使用详解
Apr 02 Python
python处理两种分隔符的数据集方法
Dec 12 Python
Python os.access()用法实例
Feb 18 Python
python爬虫模拟浏览器的两种方法实例分析
Dec 09 Python
Python多线程Threading、子线程与守护线程实例详解
Mar 24 Python
Python文件读写w+和r+区别解析
Mar 26 Python
python操作yaml说明
Apr 08 Python
linux mint中搜狗输入法导致pycharm卡死的问题
Oct 28 Python
详解使用scrapy进行模拟登陆三种方式
Feb 21 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
生成sessionid和随机密码的例子
2006/10/09 PHP
生成静态页面的php函数,php爱好者站推荐
2007/03/19 PHP
discuz论坛 用户登录 后台程序代码
2008/11/27 PHP
php之Memcache学习笔记
2013/06/17 PHP
ThinkPHP中create()方法自动验证表单信息
2017/04/28 PHP
jQuery 数据缓存模块进化史详细介绍
2012/11/19 Javascript
assert()函数用法总结(推荐)
2017/01/25 Javascript
JavaScript实现兼容IE6的收起折叠与展开效果实例
2017/09/20 Javascript
JS实现table表格固定表头且表头随横向滚动而滚动
2017/10/26 Javascript
vue.js语法及常用指令
2017/10/29 Javascript
react redux入门示例
2018/04/19 Javascript
vue组件表单数据回显验证及提交的实例代码
2018/08/30 Javascript
小程序hover-class点击态效果实现
2019/02/26 Javascript
记录一次完整的react hooks实践
2019/03/11 Javascript
JS中的算法与数据结构之链表(Linked-list)实例详解
2019/08/20 Javascript
vue.config.js中配置Vue的路径别名的方法
2020/02/11 Javascript
jQuery使用jsonp实现百度搜索的示例代码
2020/07/08 jQuery
javascript全局自定义鼠标右键菜单
2020/12/08 Javascript
JavaScript实现通讯录功能
2020/12/27 Javascript
vue 实现图片懒加载功能
2020/12/31 Vue.js
Django的ListView超详细用法(含分页paginate)
2020/05/21 Python
keras处理欠拟合和过拟合的实例讲解
2020/05/25 Python
Keras设置以及获取权重的实现
2020/06/19 Python
Python sklearn中的.fit与.predict的用法说明
2020/06/28 Python
python中strip(),lstrip(),rstrip()函数的使用讲解
2020/11/17 Python
使用phonegap播放音频的实现方法
2017/03/31 HTML / CSS
Interflora澳大利亚:同日鲜花速递
2019/06/25 全球购物
英国电信商店:BT Shop
2019/12/17 全球购物
下述程序的作用是计算机数组中的最大元素值及其下标
2012/11/26 面试题
应届生个人求职信模板
2013/11/26 职场文书
一年级班主任寄语
2014/01/19 职场文书
给领导的检讨书
2014/02/16 职场文书
党课心得体会范文
2014/09/09 职场文书
2015年科普工作总结
2015/07/23 职场文书
初中生活随笔
2015/08/15 职场文书
nginx前后端同域名配置的方法实现
2021/03/31 Servers