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系列之浅谈pickle模块封装和拆封数据对象的方法
May 23 Python
简单理解Python中的装饰器
Jul 31 Python
Python简单实现子网掩码转换的方法
Apr 13 Python
Python实现删除文件中含“指定内容”的行示例
Jun 09 Python
用Eclipse写python程序
Feb 10 Python
python爬虫 使用真实浏览器打开网页的两种方法总结
Apr 21 Python
tensorflow 输出权重到csv或txt的实例
Jun 14 Python
Python对列表的操作知识点详解
Aug 20 Python
PyTorch中的padding(边缘填充)操作方式
Jan 03 Python
python pprint模块中print()和pprint()两者的区别
Feb 10 Python
使用python的turtle函数绘制一个滑稽表情
Feb 28 Python
Django高并发负载均衡实现原理详解
Apr 04 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
php Static关键字实用方法
2010/06/04 PHP
ThinkPHP模板判断输出Defined标签用法详解
2014/06/30 PHP
php+xml实现在线英文词典之添加词条的方法
2015/01/23 PHP
为你的 Laravel 验证器加上多验证场景的实现
2020/04/07 PHP
javascript 自动填写表单的实现方法
2010/04/09 Javascript
jQuery学习总结之元素的相对定位和选择器(持续更新)
2011/04/26 Javascript
浅谈checkbox的一些操作(实战经验)
2013/11/20 Javascript
jquery实现两个图片渐变切换效果的方法
2015/06/25 Javascript
asp.net中oracle 存储过程(图文)
2015/08/12 Javascript
jQuery 检查某个元素在页面上是否存在实例代码
2016/10/27 Javascript
AngularJS中directive指令使用之事件绑定与指令交互用法示例
2016/11/22 Javascript
用jQuery旋转插件jqueryrotate制作转盘抽奖
2017/02/10 Javascript
解决vue多个路由共用一个页面的问题
2018/03/12 Javascript
npm 更改默认全局路径以及国内镜像的方法
2018/05/16 Javascript
Vue resource三种请求格式和万能测试地址
2018/09/26 Javascript
js实现删除li标签一行内容
2019/04/16 Javascript
微信小程序实现同一页面取值的方法分析
2019/04/30 Javascript
详解基于原生JS验证表单组件xy-form
2019/08/20 Javascript
Vue.js组件通信之自定义事件详解
2019/10/19 Javascript
vue各种事件监听实例(小结)
2020/06/24 Javascript
Python的Bottle框架中获取制定cookie的教程
2015/04/24 Python
Python实现将xml导入至excel
2015/11/20 Python
python Django模板的使用方法
2016/01/14 Python
django模型层(model)进行建表、查询与删除的基础教程
2017/11/21 Python
python实现Zabbix-API监控
2018/09/17 Python
Python爬虫将爬取的图片写入world文档的方法
2018/11/07 Python
基于wxPython的GUI实现输入对话框(2)
2019/02/27 Python
Python中正则表达式对单个字符,多个字符和匹配边界等使用
2021/01/27 Python
泰国第一的化妆品网站:Konvy
2018/02/25 全球购物
纽约手袋品牌:KARA
2018/03/18 全球购物
英国打印机墨盒销售网站:Ink Factory
2019/10/07 全球购物
团拜会策划方案
2014/06/07 职场文书
火箭队口号
2014/06/18 职场文书
音乐会主持人开场白
2015/05/28 职场文书
Python OpenCV快速入门教程
2021/04/17 Python
CSS3实现的3D隧道效果
2021/04/27 HTML / CSS