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 相关文章推荐
pymssql ntext字段调用问题解决方法
Dec 17 Python
在Django的URLconf中使用命名组的方法
Jul 18 Python
Python使用Mechanize模块编写爬虫的要点解析
Mar 31 Python
python实现微信跳一跳辅助工具步骤详解
Jan 04 Python
Python callable()函数用法实例分析
Mar 17 Python
Python模拟自动存取款机的查询、存取款、修改密码等操作
Sep 02 Python
python3.4爬虫demo
Jan 22 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
Apr 03 Python
python3实现从kafka获取数据,并解析为json格式,写入到mysql中
Dec 23 Python
Python字符串及文本模式方法详解
Sep 10 Python
Python中Qslider控件实操详解
Feb 20 Python
AI:如何训练机器学习的模型
Apr 16 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无刷新提交表单
2016/04/05 PHP
php实现常见图片格式的水印和缩略图制作(面向对象)
2016/06/15 PHP
PHP策略模式定义与用法示例
2017/07/27 PHP
PHP递归实现快速排序的方法示例
2017/12/18 PHP
php取出数组单个值的方法
2018/03/12 PHP
PHP实现打包zip并下载功能
2018/06/12 PHP
laravel 修改.htaccess文件 重定向public的解决方法
2019/10/12 PHP
javaScript checkbox 全选/反选及批量删除
2010/04/28 Javascript
js判断数据类型如判断是否为数组是否为字符串等等
2014/01/15 Javascript
jQuery中:hidden选择器用法实例
2014/12/30 Javascript
JavaScript 链式结构序列化详解
2016/09/30 Javascript
简易Vue评论框架的实现(父组件的实现)
2018/01/08 Javascript
vue做移动端适配最佳解决方案(亲测有效)
2018/09/04 Javascript
在小程序开发中使用npm的方法
2018/10/17 Javascript
JS/HTML5游戏常用算法之路径搜索算法 随机迷宫算法详解【普里姆算法】
2018/12/13 Javascript
小程序页面动态配置实现方法
2019/02/05 Javascript
微信小程序实现搜索指定景点周边美食、酒店
2019/05/18 Javascript
layui问题之模拟table表格中的选中按钮选中事件的方法
2019/09/20 Javascript
解决vue中的无限循环问题
2020/07/27 Javascript
python实现简单爬虫功能的示例
2016/10/24 Python
Python实现抢购IPhone手机
2018/02/07 Python
命令行运行Python脚本时传入参数的三种方式详解
2019/10/11 Python
Python的scikit-image模块实例讲解
2020/12/30 Python
CSS3实现复选框动画特效示例代码
2016/09/27 HTML / CSS
国培远程培训感言
2014/03/08 职场文书
艺术节主持词
2014/04/02 职场文书
优秀的导游求职信范文
2014/04/06 职场文书
啦啦队口号大全
2014/06/16 职场文书
护理实习生带教计划
2015/01/16 职场文书
建党伟业电影观后感
2015/06/01 职场文书
毕业感言怎么写
2015/07/31 职场文书
2015年美容师个人工作总结
2015/10/14 职场文书
我的中国梦心得体会范文
2016/01/05 职场文书
python numpy中setdiff1d的用法说明
2021/04/22 Python
python引入其他文件夹下的py文件具体方法
2021/05/23 Python
Window server中安装Redis的超详细教程
2021/11/17 Redis