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程序中操作文件之isatty()方法的使用教程
May 24 Python
python批量提取word内信息
Aug 09 Python
tensorflow训练中出现nan问题的解决
Feb 10 Python
python3+mysql查询数据并通过邮件群发excel附件
Feb 24 Python
python2.7+selenium2实现淘宝滑块自动认证功能
Feb 24 Python
Python列表解析配合if else的方法
Jun 23 Python
Python读取excel中的图片完美解决方法
Jul 27 Python
python文件拆分与重组实例
Dec 10 Python
Python matplotlib的使用并自定义colormap的方法
Dec 13 Python
解决pycharm 远程调试 上传 helpers 卡住的问题
Jun 27 Python
tensorflow之变量初始化(tf.Variable)使用详解
Feb 06 Python
pycharm 对代码做静态检查操作
Jun 09 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基础知识:类与对象(3) 构造函数和析构函数
2006/12/13 PHP
PHP SPL标准库之SplFixedArray使用实例
2015/05/12 PHP
浅谈php+phpStorm+xdebug配置方法
2015/09/17 PHP
PHP实现抽奖功能实例代码
2020/06/30 PHP
node.js中的fs.link方法使用说明
2014/12/15 Javascript
jQuery回调函数的定义及用法实例
2014/12/23 Javascript
JavaScript使用function定义对象并调用的方法
2015/03/23 Javascript
JavaScript合并两个数组并去除重复项的方法
2015/06/13 Javascript
基于jquery实现的树形菜单效果代码
2015/09/06 Javascript
JavaScript 对象深入学习总结(经典)
2015/09/29 Javascript
详解javascript函数的参数
2015/11/10 Javascript
详解JSON1:使用TSQL查询数据和更新JSON数据
2016/11/21 Javascript
JS Testing Properties 判断属性是否在对象里的方法
2017/10/01 Javascript
浅谈ES6 模板字符串的具体使用方法
2017/11/07 Javascript
vue弹窗组件使用方法
2018/04/28 Javascript
使用vue-cli(vue脚手架)快速搭建项目的方法
2018/05/21 Javascript
微信小程序开发之改变data中数组或对象的某一属性值
2018/07/05 Javascript
javascript闭包的使用之按钮切换功能
2018/08/30 Javascript
微信小程序签到功能
2018/10/31 Javascript
nodejs中实现修改用户路由功能
2019/05/24 NodeJs
vue实现抖音时间转盘
2019/09/08 Javascript
python实现远程通过网络邮件控制计算机重启或关机
2018/02/22 Python
Window环境下Scrapy开发环境搭建
2018/11/18 Python
Python中的 enum 模块源码详析
2019/01/09 Python
python中append实例用法总结
2019/07/30 Python
基于html和CSS3制作酷炫的导航栏
2015/09/23 HTML / CSS
HTML5 贪吃蛇游戏实现思路及源代码
2013/09/03 HTML / CSS
全球领先的鞋类零售商:The Walking Company
2016/07/21 全球购物
印尼最大的网上书店:Gramedia.com
2018/09/13 全球购物
日本化妆品植村秀俄罗斯官方网站:Shu Uemura俄罗斯
2020/02/01 全球购物
MIRTA官网:手工包,100%意大利制造
2020/02/11 全球购物
导师评语大全
2014/04/26 职场文书
企业宣传口号
2014/06/12 职场文书
家长会欢迎标语
2014/06/24 职场文书
团委工作总结2015
2015/04/02 职场文书
Python数据可视化之用Matplotlib绘制常用图形
2021/06/03 Python