所以本次的代码任然有优化和改进的空间,但是感觉在hdf转tif这部中rasterio的效率比gdal高多了 import gdal, osr import numpy as np import os import...a0.shape a4=np.zeros((col,row))#建立一个空的数组,到时候放新的数据 for i in range(len(a0)):###只能用range和长度来循环...i和j,本来想说通过索引。。。...a0.shape a4=np.zeros((col,row))#建立一个空的数组,到时候放新的数据 for i in range(len(a0)):###只能用range和长度来循环...i和j,本来想说通过索引。。。
(1).SetNoDataValue(noDataValue) ds.GetRasterBand(1).WriteArray(data) ds = None def File()...投影等信息,所有的源文件这些信息都是一致的 print ('rows and cols is '),rows,cols filesum = [[0.0]*cols]*rows #栅格值和,...13幅图像数据存入filedata中 count+=1 np.add(filesum,filedata,filesum) #求13幅图像相应栅格值的和...获取源文件的行,列,投影等信息,所有的源文件这些信息都是一致的 print ('rows and cols is '),rows,cols filesum = [[0.0]*cols]*rows #栅格值和,...filepath) #将2010年的13幅图像数据存入filedata中 count+=1 np.add(filesum,filedata,filesum) #求13幅图像相应栅格值的和
首先利用arcgis对landsat影像打点云样本和非云样本点图层,转为csv,用作机器学习检测样本 import numpy as np import pandas as pd from osgeo...import gdal, gdal_array # Tell GDAL to throw Python exceptions, and register all drivers gdal.UseExceptions...(img_ds.GetRasterBand(1).DataType)) for b in range(img.shape[2]): img[:, :, b] = img_ds.GetRasterBand....reshape(-1,1).astype('int') xtest=cloudtest[:,1:] cloudy_train = ytest[:int(len(ytest)*0.9)]#设置训练样本和测试样本...input outDataRaster.SetProjection(ds.GetProjection())##sets same projection as input outDataRaster.GetRasterBand
MOD043km的hdf数据转为tifc尝试了两种办法,1是靠 gdal.open(r'D:/Thesis/ML/modis3km/MOD04_3K.A2018001.0320.061.2018003202214....hdf') 代码如下: import gdal, osr import numpy as np import os import rasterio from rasterio.warp import....hdf') sub=ds.GetSubDatasets() aod=gdal.Open(sub[10][0]).ReadAsArray()##这步有个问题aod=gdal.Open(sub[10])....ReadAsArray()的时候立刻报错,还是要[10][0]才可以,后续的问题不知道是不是这步有毛病 band = ds.GetRasterBand(1)#2 #arr = band.ReadAsArray...input8 outDataRaster.SetProjection(ds.GetProjection())##sets same projection as input9 outDataRaster.GetRasterBand
from band 3 into the output image. # 读取波段3,更简洁的写法 out_ds.GetRasterBand(1).WriteArray( gdal.Open(...print(value) 62 # 坐标变换案例:从整幅的landsat影像中截取华盛顿州Vashon岛(给定Vashon岛图幅左上角和右下角的坐标) import os from osgeo import...gdal # Vashon岛图幅左上角和右下角的坐标 # Coordinates for the bounding box to extract. vashon_ulx, vashon_uly =...off_ulx, off_uly = map(int, offsets_ul) off_lrx, off_lry = map(int, offsets_lr) # 从偏移量计算出Vashon岛图幅的行数和列数...的大小来实现 如果它们比win_xsize和win_ysize大,那么会重采样为更高的分辨率,更小的像素 如果它们比win_xsize和win_ysize小,那么会重采样为更低的分辨率,更大的像素,使用最邻近插值来实现
在这里,包括标准输入输出、字符串流、向量、文件系统等功能,以及hdf5库与gdal库。...同时,定义了两个常量字符串h5_path与tif_path,分别指向转换前的HDF5图像和转换后的TIFF图像的目录。...同时,用size表示图像的宽度和高度,因为我这里HDF5图像是正方形,所以只需指定1个值。此外,band_num表示待转换遥感影像的波段数。...status = H5Fclose(file_id); 接下来,就该gdal库登场了。使用gdal库创建一个新的TIFF文件,并使用RasterIO方法将每个波段的数据写入到TIFF文件中。...同时,设置每个波段的NoData值为0,同时按照前述从HDF5图像中读取到的信息,设置TIFF图像的地理变换参数和投影信息。
所谓的无法正常运行是指运行的时间长度和单进程是一致的。另外,进程数设为2所用的时间最短,不知道为什么。。。...(r'D:/Thesis/ML/himawari/china/yw5kmraster.tif') bandg = ds.GetRasterBand(1) elevationg = bandg.ReadAsArray...(path+'/'+i) gt=src_ds.GetGeoTransform() rb=src_ds.GetRasterBand(1) shp_filename = r'D:/Thesis...(path+'/'+i) gt=src_ds.GetGeoTransform() rb=src_ds.GetRasterBand(1) shp_filename...(r'D:/Thesis/ML/himawari/china/yw5kmraster.tif') #bandg = ds.GetRasterBand(1) #elevationg = bandg.ReadAsArray
参考资料: GDAL: gdalwarp GDAL: gdal_translate GDAL/OGR Python API 使用GDAL命令 GDAL提供了两个命令可以用于影像的裁剪:gdalwarp和...第二就是首先自己选择出需要裁剪的区域,然后计算裁剪区域的GeoTransform的系数,最后将投影和GeoTransform系数赋值给裁剪子区域,写入输出文件。...我们知道GDAL中使用了六参数模型存储GeoTransform参数,如果进行矩形裁剪的话,只有GT(0)和GT(3)参数会有变化,即需要重新计算裁剪以后的左上角坐标即可。...= gdal.Open(image_name) band: gdal.Band = src.GetRasterBand(1) subset: np.ndarray = band.ReadAsArray...= dst.GetRasterBand(1) band.WriteArray(subset) band.FlushCache() del src del dst
""" Created on Sun Apr 14 14:25:16 2019 @author: Administrator """ import os import os.path import gdal...import sys from gdalconst import * from osgeo import gdal import osr import numpy as np #coding=utf-...(1).SetNoDataValue(noDataValue) ds.GetRasterBand(1).WriteArray(data) ds = None def File()...投影等信息,所有的源文件这些信息都是一致的 print ('rows and cols is '),rows,cols filesum = [[0.0]*cols]*rows #栅格值和,...13幅图像数据存入filedata中 count+=1 np.add(filesum,filedata,filesum) #求13幅图像相应栅格值的和
本文介绍基于Python语言gdal等模块对遥感影像加以处理的详细代码与操作。 ...=os.path.join(tim_out_file_path,rt_hv+".tif") 这一部分代码分为了四个部分,是因为自有产品的LAI是分别依据四种算法得到的,在做差时需要每一种算法分别和GLASS...(projection) out_DRT_lai.GetRasterBand(1).WriteArray(DRT_lai_dif_array) out_DRT_lai...(projection) out_eco_lai.GetRasterBand(1).WriteArray(eco_lai_dif_array) out_eco_lai...(projection) out_wat_lai.GetRasterBand(1).WriteArray(wat_lai_dif_array) out_wat_lai
band_red = dataset.GetRasterBand(3) data_red = band_red.ReadAsArray() data_red...随后,对于每个以.tif结尾的文件,首先使用gdal.Open()打开文件——其中的os.path.join()用于构建完整的文件路径;接下来获取影像数据集的宽度和高度,并使用gdal.GetDriverByName...output_dataset.GetRasterBand()获取输出影像文件的波段,band.WriteArray()将数据写入波段,band.FlushCache()刷新波段缓存。 ...此外,记得通过output_dataset.SetGeoTransform()和output_dataset.SetProjection()设置输出影像文件的地理变换和投影信息。 ...同时,需要清理和关闭数据集,将数据集和输出数据集设置为None以释放资源。还可以打印文件名和finished!,表示当前文件处理完成。
首先安装GDAL,具体教程可以百度,但是有个注意的是安装时请使用typical模式,不要complete,否则会出错。...接着使用GDAL的translate函数转换出一张影像图: import subprocess subprocess.call('gdal_translate'+' -sds'+' -b'+' 2'+'...import gdal, osr import numpy as np ds = gdal.Open('D:/Thesis/ML/aod/MCD19A2.A2018001.h28v06.006.2018121012322...("D:\Thesis\ML\maiac_02.tif") band = ds2.GetRasterBand(1) arr = band.ReadAsArray() [cols, rows] = arr.shape...input outDataRaster.SetProjection(ds2.GetProjection())##sets same projection as input outDataRaster.GetRasterBand
以一个简单例子说明如何打开栅格影像 下面的例子打开一副GeoTIFF影像,输出了影像的一些信息,然后遍历了所有波段,输出波段的一些信息 import gdal # 打开栅格数据集 ds = gdal.Open...中的band计数是从1开始的 band = ds.GetRasterBand(b + 1) # 波段数据的一些信息 print(f'数据类型:{gdal.GetDataTypeName...中的band计数是从1开始的 band = ds.GetRasterBand(b + 1) band = band.ReadAsArray() print(f'波段大小:{band.shape...模块 from osgeo import gdal_array # gdal_array模块 image = gdal_array.LoadFile('example.tif') print(f'数据的尺寸...:{image.shape}') 在GDAL中使用Python的异常对象 import gdal import sys # 允许GDAL跑出Python异常 gdal.UseExceptions()
这部强调:投影坐标一定要一致(shp和栅格)!!!投影坐标一定要一致(shp和栅格)!!!投影坐标一定要一致(shp和栅格)!!!CRS.from_epsg('32650')!...EPSG:32650: WGS 84 / UTM zone 50N 好了继续,有几个办法,一个是用gdal readRaster,或者把栅格转数组。。。...(src_filename) gt=src_ds.GetGeoTransform() rb=src_ds.GetRasterBand(1) ds=ogr.Open(shp_filename) lyr=...gt[1]) #x pixel py = int((my - gt[3]) / gt[5]) #y pixel----- ##实在不行就用数组提取吧 # band = src_ds.GetRasterBand...) #Assumes 64 bit int aka 'double'px和py是从左到右,从下到上逐个计算位置的个数,其源码是int,表示个数 intval = struct.unpack('h
()函数打开原始影像数据集,并指定只读模式;接下来,使用dataset.RasterXSize和dataset.RasterYSize获取影像数据集的宽度和高度。 ...首先,使用dataset.GetRasterBand()方法获取当前波段对象,然后使用band.ReadAsArray()将波段数据读取为数组;根据波段索引的不同,对波段数据进行处理。...其次,使用output_dataset.GetRasterBand()方法获取输出数据集中的当前波段对象,并使用output_band.WriteArray()方法将处理后的数据写入输出数据集。 ...再次,使用dataset.GetGeoTransform()和dataset.GetProjection()分别获取原始数据集的地理转换和投影信息,并使用output_dataset.SetGeoTransform...()和output_dataset.SetProjection()设置输出数据集的地理转换和投影信息。
ds = gdal.Open("...../sample_files/wrf.tiff") lons = ds.GetRasterBand(4).ReadAsArray() lats = ds.GetRasterBand(5).ReadAsArray...() u10 = ds.GetRasterBand(1).ReadAsArray() v10 = ds.GetRasterBand(2).ReadAsArray() x, y = map(lons,...ds = gdal.Open(".....ds = gdal.Open("..
(开发环境的搭建参考我的博文:GDAL开发环境搭建(VS2010 C++版)) #include #include #include "gdal_priv.h" #...beief 计算NDVI NDVI=(Red-NIR)/(Red+NIR)=(Band3-Band4)/(Band3+Band4) @param inputFileNames 输入参数,红波段和红外波段的两幅遥感影像的全路径...; outputDataset->SetProjection(gdalProjection); cout << "正在进行数据处理..." << '\n'; // 取得红波段和近红外波段...GDALRasterBand* raseterBandRed = inputDatasets[0]->GetRasterBand(1); GDALRasterBand* raseterBandNIR...= inputDatasets[1]->GetRasterBand(1); GDALRasterBand* outputRasterBand = outputDataset->GetRasterBand
本文介绍基于C++语言GDAL库,为CreateCopy()函数创建的栅格图像添加更多波段的方法。 ...在C++语言的GDAL库中,我们可以基于CreateCopy()函数与Create()函数创建新的栅格图像文件。...vrt格式文件是GDAL库中提供的一种虚拟数据格式,这一数据格式的详细介绍大家可以参考GDAL库的帮助文档,这里我们就不再详细说明了;目前只需要知道,.vrt格式文件是支持利用AddBand()函数增添自身的波段数量的...1], nXSize, nYSize, GDT_Float64, 0, 0); GDALRasterBand* poOutBand_2; poOutBand_2 = poDstDS->GetRasterBand...1], nXSize, nYSize, GDT_Float64, 0, 0); GDALRasterBand* poOutBand_3; poOutBand_3 = poDstDS->GetRasterBand
懵的不懂逻辑了,好吧废话不多说,这次解决的问题其实也比较基础,但却是非常常用和实用,对于入门简直神器。。。通常我们遇到的数据,不会整理的十分友好,需要我们对数据进行进一步处理,才能应用,特别是。。。...skip_header=True) testpoint = np.genfromtxt(r'D:\Thesis\point\1.csv',delimiter=',',skip_header=True) ds = gdal.Open...('D:\Thesis\samrast1.tif') bandg = ds.GetRasterBand(1) elevationg = bandg.ReadAsArray() [cols, rows]...= elevationg.shape format = "GTiff"#5 driver = gdal.GetDriverByName(format)#6 time=train[:,13] timeuni...outDataRaster.SetGeoTransform(ds.GetGeoTransform()) outDataRaster.SetProjection(ds.GetProjection()) outDataRaster.GetRasterBand