利用GDAL根据栅格影像DN值实现颜色渲染
利用GDAL根据栅格影像DN值实现颜色渲染
- 项目需求
- 项目构想
- 代码实现
- 效果展示
项目需求
项目中需要使用影像做差值计算后根据其DN值进行密度分割渲染
项目构想
- 1、主要根据CreateColorRamp()添加条带
- 2、根据SetRasterColorTable()渲染
需要注意的是渲染值必须是int型或者byte,所以如果你的DN值是小数等,建议对数据进行拉伸处理,再进行渲染。
代码实现
- ReadTheRaster.py
def writeRasterInformation(self, data, Savepath, nband):# driver = self.dataset.GetDriver()driver = gdal.GetDriverByName('GTiff') # 自己指定生成类型writeable = driver.Create(Savepath, self.cols, self.rows, self.bands, gdal.GDT_Byte) # TODO 新建数据集writeable.SetGeoTransform(self.geotrans) # 写入仿射变换参数writeable.SetProjection(self.proj) # 写入投影for i in range(nband):writeable.GetRasterBand(i + 1).WriteArray(data[i], 0, 0)writeable.GetRasterBand(i + 1).SetNoDataValue(0) # todo 给各波段设置nodata值writeable.GetRasterBand(i + 1).FlushCache() # todo 波段统计量# 获取拉伸后数据最大值最小值 进行等分5分mindata = writeable.GetRasterBand(i + 1).GetStatistics(0, 1)[0]maxdata = writeable.GetRasterBand(i + 1).GetStatistics(0, 1)[1]###渲染部分代码itemdata = int((maxdata - mindata) / 5) # 等分五份取整colortabledata = [(0, 255, 255), (72, 255, 72), (255, 255, 72), (255, 190, 72), (255, 72, 72), (255, 29, 29)]ct = gdal.ColorTable()for j in range(4):ct.CreateColorRamp(int(mindata + j * itemdata), colortabledata[j], int(mindata + (j + 1) * itemdata),colortabledata[j])band = writeable.GetRasterBand(i + 1)band.SetRasterColorTable(ct)ct.CreateColorRamp(int(mindata + 4 * itemdata), colortabledata[4], int(maxdata), colortabledata[5])band = writeable.GetRasterBand(i + 1)band.SetRasterColorTable(ct)###渲染代码returnData=[mindata,maxdata,colortabledata]print(writeable.GetRasterBand(i + 1).GetStatistics(0, 1)) # todo 计算波段统计量 输出为min\max \Mean\stddevreturn returnData
- 调用
#TODO RASTERFUNCTION
def computoffset(ds,db): # TODO 计算偏移量从而得出行列号data1=ds.computedoffset()data2=db.computedoffset()xoffset = int((data1[0] - data2[0]) / data1[1])yoffset = int((data1[3] - data2[3]) / data1[5])data = [xoffset, yoffset]return data
def getcludedata(n,ds,db): # TODO 重新切片切成大小相同的# data = db.getRasterInformation(n)[38:25697, 97:10678] #TODO 调整为多少行多少列 先化为相同行相同列 即二维数组切片data = db.getRasterInformation(n)[computoffset(ds,db)[1]:ds.computeRows()+computoffset(ds,db)[1], computoffset(ds,db)[0]:db.computeCols()] # TODO 调整为多少行多少列 先化为相同行相同列 即二维数组切片return data
def getcludedata2(n,ds,db):data = ds.getRasterInformation(n)[0:ds.computeRows(),0:db.computeCols()-computoffset(ds,db)[0]]return data
def getIntersection(n,ds,db,strainRate):data1=getcludedata2(n,ds,db)data2=getcludedata(n,ds,db)data2[data1==0]=0 # todo 将data1中为0位置的元素对应把data2中的元素也置为0data1[data2==0]=0 # todo 将data2中为0位置的元素对应把data1中的元素也置为0result=abs(data2-data1)return strainRate*result ###线性拉伸ds = ReadTheRaster.ReadRaster(TheFirstfilepath) #TODO 文件路径
db = ReadTheRaster.ReadRaster(TheSecondefilepath)
status = ds.writeRasterInformation([getIntersection(1, ds, db,20)],outputfilepath, 1)
效果展示
利用GDAL根据栅格影像DN值实现颜色渲染相关推荐
- 夜间灯光数据dn值_中国区域DMSP/OLS夜间灯光影像的校正
DMSP/OLS夜间灯光影像由于传感器未经过星上定标,导致长时间序列的各期影像之间缺乏连续性和可比性,且由于光谱分辨率的限制,使得大量的城市中心像元出现DN值为63的集聚饱和现象等问题,因此学者们对以 ...
- gdal获取像元的灰度值java_GDAL利用地理坐标读取图像像元值
最近的一个项目需要在电子海图中下载已知水深点,导出点的地理坐标(经纬度).然后在arcgis中打开这些地理坐标输出为shp,利用GDAL读取不同波段的点对应的像元值,从而构建水深和像元值的对应关系. ...
- python矢量裁剪栅格代码_Python中使用面状矢量裁剪栅格影像,并依据Value值更改矢量属性...
本文整体思路:在Python中使用Geopandas库,依次读取shp文件的每一个面状要素,获取其空间边界信息并裁剪对应的栅格影像,计算所裁剪影像Value值的众数,将其设置为对应面状要素的NewTY ...
- ENVI背景值nodata或NAN解决方法/ArcGIS栅格影像背景颜色去除
可见红十字线指向的背景处值为NAN(nodata同理) 在Arcgis中打开显示为nodata且背景值有颜色不方便设色制图 添加一个shp文件作为裁剪 裁剪功能位置:工具箱\系统工具箱\Data Ma ...
- gdal进行遥感影像读写_如何使用遥感影像进行矿物勘探
gdal进行遥感影像读写 Meet Jose Manuel Lattus, a geologist from Chile. In the latest Soar Cast, he discusses ...
- 将栅格影像转换为CAD/GIS矢量的3种方法
原文发布时间:2017/11/22 12:58:11 从图像中提取矢量要素或"栅格矢量化"涉及将栅格像素组转换为多边形.这是GIS和CAD工作流程的常见场景,也是一个具有挑战性的 ...
- python/gdal处理遥感影像(读取、投影转换、裁剪、建立图像金字塔等)
python/gdal处理遥感影像(读取.投影转换.裁剪.建立图像金字塔等) gdal库简单介绍 python使用gdal 一.安装python环境 二.安装gdal库 三.使用gdal处理遥感影像 ...
- 使用VRT裁剪栅格影像
代码同样来自<Python地理数据处理>,这里做一个学习记录.书籍原外文名"Geoprocessing with Python",在曼宁出版社可以搜索到,可以线上免费预 ...
- 数据空间变换——栅格影像值域映射到0-255范围
前一段时间把多波段影像输入到深度网络进行训练的时候,由于我的多波段影像是用arcgis的[波段合成工具]来合成的,只是把原本的RGB三个波段的影像又加入了近红外.NDVI两个波段.在使用torchvi ...
- Python批量实现栅格影像可视化
任务描述: 对栅格影像进行可视化并保存图片 数据准备: 文件夹(工作空间)内含有需要批量可视化的tif影像 工具准备: Python环境 操作: 替换代码中的路径.根据需要调整可视化图片格式 # -* ...
最新文章
- UNITY3D拓展编辑器 - 目录
- [cocos2d-x]图层的旋转缩放效果
- 妇女在IT安全工作人员当中的比例只有10%
- 【错误记录】Android Studio 向 GitHub 提交代码报错 ( Push failed: Failed with error: Could not read | 使用命令行提交代码 )
- 升级到ubuntu9.10Alpha5的艰苦路程
- 【网络爬虫入门02】HTTP客户端库Requests的基本原理与基础应用
- 命令行开启一个unity实例和执行其中的脚本方法的使用和注意
- 微服务升级_SpringCloud Alibaba工作笔记0017---Nacos之服务消费者注册和负载
- linux内核不发(Router Solicit)RS报文问题
- C/C++集成开发环境搭建
- 数据库sqlite3怎么排顺序_【数据库02】MySQL数据库面试题
- JSP 标准标签库(JSTL)(菜鸟教程)
- Jack的E680刷机过程全记录
- 「上海院子」打造不可复制的国宅风华
- php保存pdf旋转90度,如何将PDF图片旋转90度,盘点这个小方法
- ins图片视频批量下载
- 霜降后,宝宝穿衣要做到三捂两不捂
- 使用BeanUtils.populate遇到的bug
- 如何判断2个线段相交
- 怎样检测计算机硬件是否正常,怎么检查电脑硬件是否有问题
热门文章
- DAO是什么?为什么我们需要DAO?
- golang dep安装
- Windows(10) Python polyglot安装和运行失败的问题
- 又见猛犸象:基因剪刀重新定制生命
- Splines(样条曲线)
- opencart插件之 Also Bought Products(购买该产品的用户也购买了)
- 计算机断网后怎么连接网络连接,电脑突然断网, 连接不上网络怎么办? 三种方法轻松找回...
- 如何让计算机断开网络连接网络设置,电脑怎样设置定时断网,教您怎么设置
- 《HarmonyOS开发 – 小凌派-RK2206开发笔记》第4章 串口应用开发
- js 判断2月份多少天