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结合selenium获取XX省交通违章数据的实现思路及代码
Jun 26 Python
python开发简易版在线音乐播放器
Mar 03 Python
在python中bool函数的取值方法
Nov 01 Python
Python读取stdin方法实例
May 24 Python
十行代码使用Python写一个USB病毒
Jun 21 Python
我们为什么要减少Python中循环的使用
Jul 10 Python
Python拆分大型CSV文件代码实例
Oct 07 Python
Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)
Nov 19 Python
Python 安装 virturalenv 虚拟环境的教程详解
Feb 21 Python
Python实现捕获异常发生的文件和具体行数
Apr 25 Python
python中lower函数实现方法及用法讲解
Dec 23 Python
python 模拟在天空中放风筝的示例代码
Apr 21 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
ThinkPHP中__initialize()和类的构造函数__construct()用法分析
2014/11/29 PHP
Yii框架连表查询操作示例
2019/09/06 PHP
laravel框架的安装与路由实例分析
2019/10/11 PHP
jQuery AnythingSlider滑动效果插件
2010/02/07 Javascript
JavaScript中常见陷阱小结
2010/04/27 Javascript
JSON辅助格式化处理方法
2013/03/26 Javascript
jquery中get和post的简单实例
2014/02/04 Javascript
node.js中的socket.io入门实例
2014/04/26 Javascript
jQuery $命名冲突解决方案汇总
2014/11/13 Javascript
javascript无刷新评论实现方法
2015/05/13 Javascript
JavaScript模拟push
2016/03/06 Javascript
原生js实现可拖拽效果
2017/02/28 Javascript
vue.js删除动态绑定的radio的指定项
2017/06/02 Javascript
vue2 中如何实现动态表单增删改查实例
2017/06/09 Javascript
JS中Safari浏览器中的Date
2017/07/17 Javascript
微信小程序tabBar底部导航中文注解api详解
2017/08/16 Javascript
web前端vue之vuex单独一文件使用方式实例详解
2018/01/11 Javascript
Javascript通过控制类名更改样式
2019/05/24 Javascript
详解微信小程序开发(项目从零开始)
2019/06/06 Javascript
使用 JavaScript 创建并下载文件(模拟点击)
2019/10/25 Javascript
JS数组Reduce方法功能与用法实例详解
2020/04/29 Javascript
JavaScript实现沿五角星形线摆动的小圆实例详解
2020/07/28 Javascript
[00:47]DOTA2荣耀之路6:玩不了啦!
2018/05/30 DOTA
Python XML RPC服务器端和客户端实例
2014/11/22 Python
解决Python下json.loads()中文字符出错的问题
2018/12/19 Python
Python定时任务APScheduler的实例实例详解
2019/07/22 Python
使用Python实现 学生学籍管理系统
2019/11/26 Python
Django框架教程之中间件MiddleWare浅析
2019/12/29 Python
HTML5 history新特性pushState、replaceState及两者的区别
2015/12/26 HTML / CSS
Fabletics官网:美国运动服饰品牌,由好莱坞女演员凯特·哈德森创立
2019/10/19 全球购物
State Cashmere官网:半零售价可持续蒙古羊绒
2020/02/26 全球购物
婚礼答谢宴主持词
2014/03/14 职场文书
股权转让协议书范本
2014/04/12 职场文书
市场营销调查计划书
2014/05/02 职场文书
小马王观后感
2015/06/11 职场文书
详解CSS中postion和opacity及cursor的特性
2022/08/14 HTML / CSS