Python叠加两幅栅格图像的实现方法
作者:hnyzwtf 发布时间:2023-07-25 17:14:06
标签:Python,叠加,栅格,图像
目的
现有两幅栅格图像,一个是某地区道路栅格图,一个是某地区土地利用类型图,需要将道路叠加到土地利用类型图中,即叠加后,重合的像元值以道路图为准,其余的像元值仍是土地利用类型图原有的像元值。
图1 道路信息图
图2 土地利用类型图
图3 结果图
具体实现
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---------'
来源:https://blog.csdn.net/hnyzwtf/article/details/51155090
0
投稿
猜你喜欢
- 动画效果如下:GIF看起来可能会有点卡wxml<view class="confirm bubble">确定
- 目录一.函数定义二.斐波那契数三.阶乘总结一.函数定义1.首先我们要明白一个函数的性质,我们定义一个函数,是为了在后面直接应用它。2.下面这
- 在使用爬虫爬取网络数据时,如果长时间对一个网站进行抓取时可能会遇到IP被封的情况,这种情况可以使用代理更换ip来突破服务器封IP的限制。随手
- 以前写过一个刷校内网的人气的工具,Java的(以后再也不行Java程序了),里面用到了验证码识别,那段代码不是我自己写的:-) 校内的验证是
- Pydub是一个基于ffmpeg的Python音频处理模块,封装了许多ffmpeg底层接口,因此用它来做音乐歌曲文件格式转换会非常方便,如果
- 使用python去除文中的某个字符是非常麻烦的一件事,不同的环境可以用到多种方法,例如正则表达式,del语法,现在发布的是一个比较简单易行的
- (1)、导库import pandas as pdfrom pandas import Series(2)、读取csv文件的两种方式#读取c
- 本文实例讲述了Python中xml和json格式相互转换操作。分享给大家供大家参考,具体如下:Python中xml和json格式是可以互转的
- #!/usr/bin/env python# -*- coding: utf-8 -*-'''''
- 边缘检测Canny边缘检测器是一种被广泛使用的算法,并被认为是边缘检测最优的算法,该方法使用了比高斯差分算法更复杂的技巧,如多向灰度梯度和滞
- 相关代码:JavaScript写的日期时间控件,很好用 13个超酷的js显示时间效果 <html><head><
- 最近一周每天早上起来第一件事,就是打开新闻软件看疫情相关的新闻。了解下自己和亲友所在城市的确诊人数,但纯数字还是缺乏一个直观的概念。那我们来
- 众所周知,Mac自带python2,但无奈我们想使用新版本,因此我们需要安装python3安装python3我使用了homebrew,网上也
- 问题最近在工作中发现了一个问题,Python代码一直用着免费的Google翻译API插件googletrans,这两天突然就报错了:Trac
- 前言在我们抓取网页内容的时候,通常是抓取一整个页面的内容,而我们仅仅只是需要该网页中的部分内容,那该如何去提取呢?本章就带你学习xpath插
- pyqtgraph是Python平台上一种功能强大的2D/3D绘图库,相对于matplotlib库,由于其在内部实现方式上,使用了高速计算的
- 作为一位不懂代码的业余网页制 * 好者,常常羡慕专业程序人员在浏览器中编制出的效果超酷的一些多媒体作品。唉,无奈程序那东东,酶涩南学,非一日之
- 简介Pycharm安装以后必须激活后,才能正常的使用。否则就不能使用。【激活码激活】修改hosts文件添加下面一行到hosts文件,目的是屏
- 本文实例讲述了JS前端加密算法。分享给大家供大家参考,具体如下:解密操作对服务器性能颇有消耗。寻思着能不能在前端完成。于是找到了crypto
- pandas为我们提供了多种切片方法,而要是不太了解这些方法,就会经常容易混淆。下面举例对这些切片方法进行说明。数据介绍先随机生成一组数据: