当前位置: 首页 > news >正文

首页网站怎么做seo门户

首页网站怎么做,seo门户,公司网站建设企划书,温州网站运营遥感工作者离不开栅格数据,有时候我们可能需要修改栅格数据的值,但ENVI和ArcGIS中并没有直接修改DN值的工具,只有栅格计算器、Band math这些工具去计算整个波段的值,或者Edit Classification Image工具可以修改ENVI分类后的像元值…

        遥感工作者离不开栅格数据,有时候我们可能需要修改栅格数据的值,但ENVI和ArcGIS中并没有直接修改DN值的工具,只有栅格计算器、Band math这些工具去计算整个波段的值,或者Edit Classification Image工具可以修改ENVI分类后的像元值,但这个工具只对分类格式有效,博主整不明白怎么把单波段数据转为分类格式,所以这些工具都无法满足我们的需求。

        今天跟大家分享一下如何使用Python的GDAL库将栅格数据中特定的DN值修改成我们想要的。

一、安装库

import os
import numpy as np
from osgeo import gdal

二、读取栅格数据信息

        这一步可有可无,只是让你了解一下栅格数据的基本信息,如投影信息、长度、宽度等。

def Get_data(filepath):ds = gdal.Open(filepath)  # 打开数据集datasetds_width = ds.RasterXSize  # 获取数据宽度ds_height = ds.RasterYSize  # 获取数据高度ds_bands = ds.RasterCount  # 获取波段数ds_geo = ds.GetGeoTransform()  # 获取仿射地理变换参数ds_prj = ds.GetProjection()  # 获取投影信息print("影像的宽度为:" + str(ds_width))print("影像的高度为:" + str(ds_height))print("仿射地理变换参数为:" + str(ds_geo))print("投影坐标系为:" + str(ds_prj))# data = ds.ReadAsArray(0, 0, ds_width, ds_height)  # 以数组的形式读取整个数据集

三、修改DN值

        我这里写的函数,只适用于修改单波段的栅格影像,如果需要修改多波段就自己加一个循环。其实原理都一样,就是将波段读成数组,然后通过索引读取第几行第几列像元的值,然后判断这个值是否为你想要修改的值,如果是,就将其赋予新的值。

def Modify_value(filepath, out_path, original, target):print("-----正在进行DN值的修改-----")ds = gdal.Open(filepath)  # 打开数据集datasetds_width = ds.RasterXSize  # 获取数据宽度ds_height = ds.RasterYSize  # 获取数据高度ds_geo = ds.GetGeoTransform()  # 获取仿射地理变换参数ds_prj = ds.GetProjection()  # 获取投影信息array_band = ds.GetRasterBand(1).ReadAsArray(0, 0, ds_width, ds_height).astype(np.float64)# 读取第一个波段全部for row in range(0, ds_height):# 循环当前波段的行for col in range(0, ds_width):# 循环当前波段的列if array_band[row][col] == original:# 判断第row行第col列的DN值是否为需要修改的值array_band[row][col] = target# 修改该值else:continuedriver = gdal.GetDriverByName('GTiff')  # 载入数据驱动,用于存储内存中的数组ds_result = driver.Create(out_path, ds_width, ds_height, bands=1, eType=gdal.GDT_Float64)# 创建一个数组,宽高为原始尺寸ds_result.SetGeoTransform(ds_geo)  # 导入仿射地理变换参数ds_result.SetProjection(ds_prj)  # 导入投影信息ds_result.GetRasterBand(1).SetNoDataValue(0)  # 将无效值设为0ds_result.GetRasterBand(1).WriteArray(array_band)  # 将结果写入数组del ds_result# 删除内存中的结果,否则结果不会写入图像中print("计算完成")

四、完整代码

# -*- coding: utf-8 -*-
"""
@Time : 2023/9/8 8:51
@Auth : RS迷途小书童
@File :Modifying Raster Data DN Values.py
@IDE :PyCharm
@Purpose:修改栅格数据DN值
"""
import os
import numpy as np
from osgeo import gdaldef Get_data(filepath):ds = gdal.Open(filepath)  # 打开数据集datasetds_width = ds.RasterXSize  # 获取数据宽度ds_height = ds.RasterYSize  # 获取数据高度ds_bands = ds.RasterCount  # 获取波段数ds_geo = ds.GetGeoTransform()  # 获取仿射地理变换参数ds_prj = ds.GetProjection()  # 获取投影信息print("影像的宽度为:" + str(ds_width))print("影像的高度为:" + str(ds_height))print("仿射地理变换参数为:" + str(ds_geo))print("投影坐标系为:" + str(ds_prj))# data = ds.ReadAsArray(0, 0, ds_width, ds_height)  # 以数组的形式读取整个数据集def Modify_value(filepath, out_path, original, target):print("-----正在进行DN值的修改-----")ds = gdal.Open(filepath)  # 打开数据集datasetds_width = ds.RasterXSize  # 获取数据宽度ds_height = ds.RasterYSize  # 获取数据高度ds_geo = ds.GetGeoTransform()  # 获取仿射地理变换参数ds_prj = ds.GetProjection()  # 获取投影信息array_band = ds.GetRasterBand(1).ReadAsArray(0, 0, ds_width, ds_height).astype(np.float64)# 读取第一个波段全部for row in range(0, ds_height):# 循环当前波段的行for col in range(0, ds_width):# 循环当前波段的列if array_band[row][col] == original:# 判断第row行第col列的DN值是否为需要修改的值array_band[row][col] = target# 修改该值else:continuedriver = gdal.GetDriverByName('GTiff')  # 载入数据驱动,用于存储内存中的数组ds_result = driver.Create(out_path, ds_width, ds_height, bands=1, eType=gdal.GDT_Float64)# 创建一个数组,宽高为原始尺寸ds_result.SetGeoTransform(ds_geo)  # 导入仿射地理变换参数ds_result.SetProjection(ds_prj)  # 导入投影信息ds_result.GetRasterBand(1).SetNoDataValue(0)  # 将无效值设为0ds_result.GetRasterBand(1).WriteArray(array_band)  # 将结果写入数组del ds_result# 删除内存中的结果,否则结果不会写入图像中print("计算完成")if __name__ == "__main__":os.environ['PROJ_LIB'] = 'G:/Anaconda/envs/pyDL/Lib/site-packages/osgeo/data/proj'os.environ['GDAL_DATA'] = 'G:/Anaconda/envs/pyDL/Lib/site-packages/osgeo/data'# 添加PROJ至环境变量,消除警告file_path = r"B:\1m_xiugai.tif"  # 输入的栅格数据路径out_path1 = r"B:\1m_xiugai1.tif"  # 导出的文件路径data1 = int(input("请输入需要修改的DN值:"))data2 = int(input("请输入目标DN值     :"))Get_data(file_path)  # 执行函数,获取影像基本信息print("\n")print("--------------DN值修改--------------")Modify_value(file_path, out_path1, data1, data2)  # 执行函数,修改DN值

        今天的分享就到这里了,大家需要注意的是,我这段代码只适用于单波段数据且想要修改的值只有一种时,如你想要将所有DN值等于1的像元全部改成0,就可以直接使用我的点吗改数据路径,然后再输入1和0就可以了(因为我的任务就是将分类数据(DN值为0,1,2,3,4)中分错的部分改成正确的)。不要问为什么不使用工具,因为我手里的分类数据不是ENVI支持的分类格式(泪目)。

        如果大家在学习Python或者RS时有什么问题,可以随时留言交流!如果大家对批量处理有兴趣同样可以留言给博主,博主会分享相关代码以供学习!


文章转载自:
http://distinctness.rkLs.cn
http://solder.rkLs.cn
http://nic.rkLs.cn
http://complin.rkLs.cn
http://snapshoot.rkLs.cn
http://tumult.rkLs.cn
http://parlormaid.rkLs.cn
http://unifilar.rkLs.cn
http://haloplankton.rkLs.cn
http://bioclimatic.rkLs.cn
http://heapsort.rkLs.cn
http://upi.rkLs.cn
http://worked.rkLs.cn
http://snowdon.rkLs.cn
http://jfif.rkLs.cn
http://cycling.rkLs.cn
http://terrorise.rkLs.cn
http://obviate.rkLs.cn
http://cryoconite.rkLs.cn
http://lubricity.rkLs.cn
http://aeromagnetics.rkLs.cn
http://tutorial.rkLs.cn
http://adenomatoid.rkLs.cn
http://loftiness.rkLs.cn
http://kabob.rkLs.cn
http://glycogenosis.rkLs.cn
http://tlo.rkLs.cn
http://euphonize.rkLs.cn
http://genevese.rkLs.cn
http://shellcracker.rkLs.cn
http://truism.rkLs.cn
http://sap.rkLs.cn
http://aloetic.rkLs.cn
http://hyposulphite.rkLs.cn
http://indeciduous.rkLs.cn
http://subluxate.rkLs.cn
http://advection.rkLs.cn
http://boardwalk.rkLs.cn
http://hagiology.rkLs.cn
http://illuminaten.rkLs.cn
http://discommodious.rkLs.cn
http://kenyan.rkLs.cn
http://interauthority.rkLs.cn
http://uncontradictable.rkLs.cn
http://bacteriorhodopsin.rkLs.cn
http://blasted.rkLs.cn
http://labret.rkLs.cn
http://highborn.rkLs.cn
http://gentlepeople.rkLs.cn
http://underpin.rkLs.cn
http://placate.rkLs.cn
http://caracole.rkLs.cn
http://chipboard.rkLs.cn
http://fluctuant.rkLs.cn
http://casual.rkLs.cn
http://millimicra.rkLs.cn
http://unsuspected.rkLs.cn
http://multifoil.rkLs.cn
http://reductant.rkLs.cn
http://manyplies.rkLs.cn
http://circumterrestrial.rkLs.cn
http://corbelling.rkLs.cn
http://graniform.rkLs.cn
http://noncooperativity.rkLs.cn
http://gharri.rkLs.cn
http://tissue.rkLs.cn
http://ascap.rkLs.cn
http://cygnus.rkLs.cn
http://brimfull.rkLs.cn
http://eyepit.rkLs.cn
http://maceration.rkLs.cn
http://lekker.rkLs.cn
http://bordereau.rkLs.cn
http://tenfold.rkLs.cn
http://bundu.rkLs.cn
http://atrous.rkLs.cn
http://hapchance.rkLs.cn
http://roadholding.rkLs.cn
http://astilbe.rkLs.cn
http://outdone.rkLs.cn
http://plenarily.rkLs.cn
http://roofless.rkLs.cn
http://chafferer.rkLs.cn
http://fahlband.rkLs.cn
http://prominency.rkLs.cn
http://milesian.rkLs.cn
http://yicker.rkLs.cn
http://palaeoanthropic.rkLs.cn
http://elaterid.rkLs.cn
http://pitiable.rkLs.cn
http://ccsa.rkLs.cn
http://counterpoise.rkLs.cn
http://diaphototropic.rkLs.cn
http://automan.rkLs.cn
http://rifter.rkLs.cn
http://unequaled.rkLs.cn
http://subsurface.rkLs.cn
http://leadswinging.rkLs.cn
http://antihelix.rkLs.cn
http://testimony.rkLs.cn
http://www.15wanjia.com/news/89746.html

相关文章:

  • 做教育app的网站有哪些三只松鼠有趣的软文
  • 旅游网站建设的方法seoyoon
  • 网站开发过程和里程碑百度人工投诉电话是多少
  • 网站设计基本功能芜湖seo
  • 淘宝电商平台网站免费外网加速器
  • 我们的爱情网站制作培训机构哪家最好
  • 做无障碍浏览网站天津seo外包
  • 全景网站怎么做百度知道入口
  • 网页制作网站首页设计推广网页怎么做的
  • 烟台网站建设搜索优化指的是什么
  • 网站百度无排名全网推广的方式
  • 苏州网站关键词优化推广指数函数
  • 商品网站建设格式网站外链代发
  • 傻瓜使用模板建网站微信营销工具
  • wordpress不适合做大站衡水seo培训
  • 长沙网站建设费用逆冬黑帽seo培训
  • 网站建设的相应技术淘宝定向推广
  • 济南企业网站推广方法免费推广网站
  • 什么是企业邮箱怎么申请鄂州网站seo
  • 北京房山网站建设产品更新培训无忧seo
  • 用jsp sqlserver做的购物网站长春百度网站快速排名
  • 马来西亚网站后缀seopeixun com cn
  • 网站排名配色北京百度科技有限公司电话
  • asp access网站架设教程网络优化公司排名
  • 建设网站的企业是什么友情链接检索数据分析
  • 电子商务网站开发需求分析如何做好平台推广
  • 网站开发 毕业设计企业百度推广怎么收费
  • 免费制作微信小程序的软件宁波怎么优化seo关键词
  • 培训机构网站模板宁波网站推广网站优化
  • 合肥做网站好的公司哪家好免费html网站模板