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 字典dict使用介绍
Nov 30 Python
python面向对象法实现图书管理系统
Apr 19 Python
Python实现打砖块小游戏代码实例
May 18 Python
python 寻找离散序列极值点的方法
Jul 10 Python
python读取大文件越来越慢的原因与解决
Aug 08 Python
Python 字符串类型列表转换成真正列表类型过程解析
Aug 26 Python
python Popen 获取输出,等待运行完成示例
Dec 30 Python
python 给图像添加透明度(alpha通道)
Apr 09 Python
python对一个数向上取整的实例方法
Jun 18 Python
Pandas DataFrame求差集的示例代码
Dec 13 Python
python使用XPath解析数据爬取起点小说网数据
Apr 22 Python
Django基础CBV装饰器和中间件
Mar 22 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 Streams(流)详细介绍及使用
2015/05/12 PHP
Symfony2框架学习笔记之HTTP Cache用法详解
2016/03/18 PHP
对比PHP对MySQL的缓冲查询和无缓冲查询
2016/07/01 PHP
利用Laravel生成Gravatar头像地址的优雅方法
2017/12/30 PHP
javascript Firefox与IE 替换节点的方法
2010/02/24 Javascript
javascript匿名函数应用示例介绍
2014/03/07 Javascript
JavaScript中的prototype.bind()方法介绍
2014/04/04 Javascript
jQuery ajax调用WCF服务实例
2014/07/16 Javascript
JavaScript实现向OL列表内动态添加LI元素的方法
2015/03/21 Javascript
简述JavaScript对传统文档对象模型的支持
2015/06/16 Javascript
javascript执行环境及作用域详解
2016/05/05 Javascript
bootstrap modal弹出框的垂直居中
2016/12/14 Javascript
微信小程序 slider的简单实例
2017/04/19 Javascript
基于滚动条位置判断的简单实例
2017/12/14 Javascript
vue项目中跳转到外部链接的实例讲解
2018/09/20 Javascript
用jQuery将JavaScript对象转换为querystring查询字符串的方法
2018/11/12 jQuery
vue中实现高德定位功能
2019/12/03 Javascript
用vue写一个日历
2020/11/02 Javascript
[56:20]LGD vs VP Supermajor 败者组决赛 BO3 第三场 6.10
2018/07/04 DOTA
python中cPickle用法例子分享
2014/01/03 Python
使用Python神器对付12306变态验证码
2016/01/05 Python
Python2.7基于淘宝接口获取IP地址所在地理位置的方法【测试可用】
2017/06/07 Python
Django 实现下载文件功能的示例
2018/03/06 Python
Python button选取本地图片并显示的实例
2019/06/13 Python
Flask框架模板继承实现方法分析
2019/07/31 Python
深入了解python中元类的相关知识
2019/08/29 Python
详解numpy矩阵的创建与数据类型
2019/10/18 Python
django中嵌套的try-except实例
2020/05/21 Python
CSS3媒体查询(Media Queries)介绍
2013/09/12 HTML / CSS
html5 Canvas画图教程(3)—canvas出现1像素线条模糊不清的原因
2013/01/09 HTML / CSS
罗技美国官网:Logitech美国
2020/01/22 全球购物
Linux如何为某个操作添加别名
2013/03/01 面试题
党员群众路线对照检查材料
2014/08/31 职场文书
公司市场部岗位职责
2015/04/15 职场文书
2015社区健康教育工作总结
2015/05/20 职场文书
三严三实学习心得体会(精选N篇)
2016/01/05 职场文书