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操作摄像头截图实现远程监控的例子
Mar 25 Python
利用Python的Twisted框架实现webshell密码扫描器的教程
Apr 16 Python
详谈Python基础之内置函数和递归
Jun 21 Python
关于Python正则表达式 findall函数问题详解
Mar 22 Python
django 使用 PIL 压缩图片的例子
Aug 16 Python
实现Python与STM32通信方式
Dec 18 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
Jun 08 Python
pycharm导入源码的具体步骤
Aug 04 Python
如何创建一个Flask项目并进行简单配置
Nov 18 Python
python爬虫scrapy基于CrawlSpider类的全站数据爬取示例解析
Feb 20 Python
Python如何识别银行卡卡号?
Jun 10 Python
关于python中模块和重载的问题
Nov 02 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的autoload机制的实现解析
2012/09/15 PHP
给ECShop添加最新评论
2015/01/07 PHP
PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例
2020/08/17 PHP
jQuery jcrop插件截图使用方法
2013/11/20 Javascript
Egret引擎开发指南之视觉编程
2014/09/03 Javascript
jQuery 复合选择器应用的几个例子
2014/09/11 Javascript
js简单实现标签云效果实例
2015/08/06 Javascript
超漂亮的jQuery图片轮播特效
2015/11/24 Javascript
全面理解JavaScript中的继承(必看)
2016/06/16 Javascript
JS验证不重复验证码
2017/02/10 Javascript
jQuery Chosen通用初始化
2017/03/07 Javascript
详解Vue中状态管理Vuex
2017/05/11 Javascript
Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题
2017/11/22 Javascript
基于Vue框架vux组件库实现上拉刷新功能
2017/11/28 Javascript
Vue按需加载的具体实现
2017/12/02 Javascript
使用layer弹窗,制作编辑User信息页面的方法
2019/09/27 Javascript
vue+animation实现翻页动画
2020/06/29 Javascript
[05:31]DOTA2英雄梦之声_第08期_莉娜
2014/06/23 DOTA
实例讲解python函数式编程
2014/06/09 Python
深入讲解Python中的迭代器和生成器
2015/10/26 Python
Python简单连接MongoDB数据库的方法
2016/03/15 Python
Python 判断是否为质数或素数的实例
2017/10/30 Python
django启动uwsgi报错的解决方法
2018/04/08 Python
Django中的静态文件管理过程解析
2019/08/01 Python
Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法
2019/09/24 Python
Anaconda 查看、创建、管理和使用python环境的方法
2019/12/03 Python
Python使用jpype模块调用jar包过程解析
2020/07/29 Python
Python如何获取文件路径/目录
2020/09/22 Python
详解使用scrapy进行模拟登陆三种方式
2021/02/21 Python
Jacques Lemans德国:奥地利钟表品牌
2019/12/26 全球购物
Yankee Candle官网:美国最畅销蜡烛品牌之一
2020/01/05 全球购物
少先队活动总结
2014/08/29 职场文书
小学生五年级大队长竞选发言稿
2014/09/12 职场文书
2015年政风行风工作总结
2015/04/21 职场文书
朋友离别感言
2015/08/04 职场文书
Pandas实现DataFrame的简单运算、统计与排序
2022/03/31 Python