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中实现三目运算的方法
Jun 21 Python
python去除文件中空格、Tab及回车的方法
Apr 12 Python
Python常用知识点汇总
May 08 Python
python 数据的清理行为实例详解
Jul 12 Python
解决pip install的时候报错timed out的问题
Jun 12 Python
python 地图经纬度转换、纠偏的实例代码
Aug 06 Python
python 顺时针打印矩阵的超简洁代码
Nov 14 Python
python抓取需要扫微信登陆页面
Apr 29 Python
Python实现制度转换(货币,温度,长度)
Jul 14 Python
Python下利用BeautifulSoup解析HTML的实现
Jan 17 Python
python通过对字典的排序,对json字段进行排序的实例
Feb 27 Python
Python编程编写完善的命令行工具
Sep 15 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本地服务器分享
2013/02/19 PHP
php 地区分类排序算法
2013/07/01 PHP
php上传文件问题汇总
2015/01/30 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
PHP使用ajax的post方式下载excel文件简单示例
2019/08/06 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
2020/02/18 PHP
浅谈php常用的7大框架的优缺点
2020/07/20 PHP
js使用数组判断提交数据是否存在相同数据
2013/11/27 Javascript
比例尺、缩略图、平移缩放之百度地图添加控件方法
2015/08/03 Javascript
详解JavaScript正则表达式之分组匹配及反向引用
2016/03/09 Javascript
jQuery点击其他地方时菜单消失的实现方法
2016/04/22 Javascript
webpack入门必知必会
2017/01/16 Javascript
微信小程序 WebSocket详解及应用
2017/01/21 Javascript
JS简单获取日期相差天数的方法
2017/04/24 Javascript
详解Vue 方法与事件处理器
2017/06/20 Javascript
浅谈函数调用的不同方式,以及this的指向
2017/09/17 Javascript
详解webpack之scss和postcss-loader的配置
2018/01/09 Javascript
Vue自定义弹窗指令的实现代码
2018/08/13 Javascript
vuex actions传递多参数的处理方法
2018/09/18 Javascript
微信小程序之高德地图多点路线规划过程示例详解
2021/01/18 Javascript
web.py中调用文件夹内模板的方法
2014/08/26 Python
在SAE上部署Python的Django框架的一些问题汇总
2015/05/30 Python
Python简单实现子网掩码转换的方法
2016/04/13 Python
Python3爬虫学习之MySQL数据库存储爬取的信息详解
2018/12/12 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
2019/10/17 Python
numpy.linalg.eig() 计算矩阵特征向量方式
2019/11/29 Python
解决Tensorflow 使用时cpu编译不支持警告的问题
2020/02/03 Python
Python如何安装第三方模块
2020/05/28 Python
世嘉游戏英国官方商店:SEGA Shop UK
2019/09/20 全球购物
毕业生自我鉴定
2013/12/04 职场文书
祖国在我心中演讲稿300字
2014/05/04 职场文书
运动会400米加油稿(8篇)
2014/09/22 职场文书
个人年终总结范文
2015/03/09 职场文书
给男朋友的道歉短信
2015/05/12 职场文书
导游词之太湖
2019/10/08 职场文书
python实现图片九宫格分割的示例
2021/04/25 Python