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读取sqlite数据库文件的方法分析
Aug 07 Python
python使用jieba实现中文分词去停用词方法示例
Mar 11 Python
对django xadmin自定义菜单的实例详解
Jan 03 Python
Python将string转换到float的实例方法
Jul 29 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
Sep 15 Python
pytorch 实现模型不同层设置不同的学习率方式
Jan 06 Python
详解Python3 中的字符串格式化语法
Jan 15 Python
Python批量启动多线程代码实例
Feb 18 Python
python tkinter的消息框模块(messagebox,simpledialog)
Nov 07 Python
Python 2.6.6升级到Python2.7.15的详细步骤
Dec 14 Python
详解matplotlib中pyplot和面向对象两种绘图模式之间的关系
Jan 22 Python
pandas 操作 Excel操作总结
Mar 31 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下清空字符串中的HTML标签的代码
2010/09/06 PHP
php 数据库字段复用的基本原理与示例
2011/07/22 PHP
浅谈PHP中output_buffering
2015/07/13 PHP
IIS 7.5 asp Session超时时间设置方法
2017/04/17 PHP
Yii 2.0在Grid中格式化时间方法示例
2017/06/06 PHP
Javascript 定时器调用传递参数的方法
2009/11/12 Javascript
ie支持function.bind()方法实现代码
2012/12/27 Javascript
javascript操作table(insertRow,deleteRow,insertCell,deleteCell方法详解)
2013/12/16 Javascript
简单实现jQuery多选框功能
2017/01/09 Javascript
微信小程序 动态绑定数据及动态事件处理
2017/03/14 Javascript
nodejs入门教程一:概念与用法简介
2017/04/24 NodeJs
es6学习之解构时应该注意的点
2017/08/29 Javascript
Node.Js生成比特币地址代码解析
2018/04/21 Javascript
vux uploader 图片上传组件的安装使用方法
2018/05/15 Javascript
vue2.0实现的tab标签切换效果(内容可自定义)示例
2019/02/11 Javascript
微信小程序实现横向滚动导航栏效果
2019/12/12 Javascript
vue实现一个6个输入框的验证码输入组件功能的实例代码
2020/06/29 Javascript
JavaScript实现世界各地时间显示
2020/09/07 Javascript
js 实现碰撞检测的示例
2020/10/28 Javascript
python查看微信好友是否删除自己
2016/12/19 Python
Python装饰器实现几类验证功能做法实例
2017/05/18 Python
关于Python3 lambda函数的深入浅出
2019/11/27 Python
Python爬虫开发与项目实战
2020/12/16 Python
浅析canvas元素的html尺寸和css尺寸对元素视觉的影响
2019/07/22 HTML / CSS
Sephora丝芙兰马来西亚官方网站:国际化妆品购物
2018/03/15 全球购物
印度排名第一的蛋糕、鲜花和礼品送货:Winni
2019/08/02 全球购物
新品发布会策划方案
2014/06/08 职场文书
机电一体化毕业生自荐信
2014/06/19 职场文书
小学生美德少年事迹材料
2014/08/24 职场文书
乡镇党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
优秀党员先进材料
2014/12/18 职场文书
上课说话检讨书
2015/01/27 职场文书
超市主管竞聘书
2015/09/15 职场文书
selenium.webdriver中add_argument方法常用参数表
2021/04/08 Python
如何使用PostgreSQL进行中文全文检索
2021/05/27 PostgreSQL
python套接字socket通信
2022/04/01 Python